diff options
| author | Lars Knoll <[email protected]> | 2016-02-03 12:42:52 +0100 | 
|---|---|---|
| committer | Laszlo Agocs <[email protected]> | 2016-03-02 12:16:05 +0000 | 
| commit | 6b0a577bf85845780e9a7b101260cdf72fa1d33c (patch) | |
| tree | 2ce5d8b2166c50024e648c3ef61ebcee7674bfa7 /src/gui/opengl/qopenglversionfunctions.h | |
| parent | 8f1fcb0142b26f8e12c51b6c646eca1242b35102 (diff) | |
Refactor initialization/caching code for versioned opengl functions
Saves around 80k in Qt Gui.
Change-Id: I3f7068ae699136d0edf46a49694ade7e1df3c91d
Reviewed-by: Laszlo Agocs <[email protected]>
Diffstat (limited to 'src/gui/opengl/qopenglversionfunctions.h')
| -rw-r--r-- | src/gui/opengl/qopenglversionfunctions.h | 93 | 
1 files changed, 53 insertions, 40 deletions
diff --git a/src/gui/opengl/qopenglversionfunctions.h b/src/gui/opengl/qopenglversionfunctions.h index 7d2616a5d91..7f991b19553 100644 --- a/src/gui/opengl/qopenglversionfunctions.h +++ b/src/gui/opengl/qopenglversionfunctions.h @@ -132,36 +132,41 @@ private: \  class QOpenGLVersionFunctionsBackend  {  public: +#define QT_OPENGL_VERSIONS(F) \ +        F(1_0_Core) \ +        F(1_1_Core) \ +        F(1_2_Core) \ +        F(1_3_Core) \ +        F(1_4_Core) \ +        F(1_5_Core) \ +        F(2_0_Core) \ +        F(2_1_Core) \ +        F(3_0_Core) \ +        F(3_1_Core) \ +        F(3_2_Core) \ +        F(3_3_Core) \ +        F(4_0_Core) \ +        F(4_1_Core) \ +        F(4_2_Core) \ +        F(4_3_Core) \ +        F(4_4_Core) \ +        F(4_5_Core) \ +        F(1_0_Deprecated) \ +        F(1_1_Deprecated) \ +        F(1_2_Deprecated) \ +        F(1_3_Deprecated) \ +        F(1_4_Deprecated) \ +        F(2_0_Deprecated) \ +        F(3_0_Deprecated) \ +        F(3_3_Deprecated) \ +        F(4_5_Deprecated) \ + +#define VERSION_ENUM(X) OpenGL_##X,      enum Version { -        OpenGL_1_0, -        OpenGL_1_1, -        OpenGL_1_2, -        OpenGL_1_3, -        OpenGL_1_4, -        OpenGL_1_5, -        OpenGL_2_0, -        OpenGL_2_1, -        OpenGL_3_0, -        OpenGL_3_1, -        OpenGL_3_2_Core, -        OpenGL_3_3_Core, -        OpenGL_4_0_Core, -        OpenGL_4_1_Core, -        OpenGL_4_2_Core, -        OpenGL_4_3_Core, -        OpenGL_4_4_Core, -        OpenGL_4_5_Core, -        OpenGL_1_0_Deprecated, -        OpenGL_1_1_Deprecated, -        OpenGL_1_2_Deprecated, -        OpenGL_1_3_Deprecated, -        OpenGL_1_4_Deprecated, -        OpenGL_2_0_Deprecated, -        OpenGL_3_0_Deprecated, -        OpenGL_3_3_Deprecated, -        OpenGL_4_5_Deprecated, +        QT_OPENGL_VERSIONS(VERSION_ENUM)          OpenGLVersionBackendCount      }; +#undef VERSION_ENUM      QOpenGLVersionFunctionsBackend(QOpenGLContext *ctx)          : context(ctx) @@ -171,6 +176,17 @@ public:      QAtomicInt refs;  }; +class QOpenGLVersionFunctionsStorage +{ +public: +    QOpenGLVersionFunctionsStorage(); +    ~QOpenGLVersionFunctionsStorage(); + +    QOpenGLVersionFunctionsBackend *backend(QOpenGLContext *context, QOpenGLVersionFunctionsBackend::Version v); + +    QOpenGLVersionFunctionsBackend **backends; +}; +  class QAbstractOpenGLFunctions;  class QAbstractOpenGLFunctionsPrivate @@ -182,9 +198,6 @@ public:      {}      static QOpenGLVersionFunctionsBackend *functionsBackend(QOpenGLContext *context, QOpenGLVersionFunctionsBackend::Version v); -    static void insertFunctionsBackend(QOpenGLContext *context, QOpenGLVersionFunctionsBackend::Version v, -                                       QOpenGLVersionFunctionsBackend *backend); -    static void removeFunctionsBackend(QOpenGLContext *context, QOpenGLVersionFunctionsBackend::Version v);      static void insertExternalFunctions(QOpenGLContext *context, QAbstractOpenGLFunctions *f);      static void removeExternalFunctions(QOpenGLContext *context, QAbstractOpenGLFunctions *f); @@ -232,7 +245,7 @@ public:      }      Q_DECL_CONSTEXPR static Version versionStatus() -    { return OpenGL_1_0; } +    { return OpenGL_1_0_Core; }      // OpenGL 1.0 core functions  #define QT_OPENGL_1_0_FUNCTIONS(F) \ @@ -298,7 +311,7 @@ public:      }      Q_DECL_CONSTEXPR static Version versionStatus() -    { return OpenGL_1_1; } +    { return OpenGL_1_1_Core; }      // OpenGL 1.1 core functions  #define QT_OPENGL_1_1_FUNCTIONS(F) \ @@ -332,7 +345,7 @@ public:      }      Q_DECL_CONSTEXPR static Version versionStatus() -    { return OpenGL_1_2; } +    { return OpenGL_1_2_Core; }      // OpenGL 1.2 core functions  #define QT_OPENGL_1_2_FUNCTIONS(F) \ @@ -356,7 +369,7 @@ public:      }      Q_DECL_CONSTEXPR static Version versionStatus() -    { return OpenGL_1_3; } +    { return OpenGL_1_3_Core; }      // OpenGL 1.3 core functions  #define QT_OPENGL_1_3_FUNCTIONS(F) \ @@ -383,7 +396,7 @@ public:      }      Q_DECL_CONSTEXPR static Version versionStatus() -    { return OpenGL_1_4; } +    { return OpenGL_1_4_Core; }      // OpenGL 1.4 core functions  #define QT_OPENGL_1_4_FUNCTIONS(F) \ @@ -408,7 +421,7 @@ public:      }      Q_DECL_CONSTEXPR static Version versionStatus() -    { return OpenGL_1_5; } +    { return OpenGL_1_5_Core; }      // OpenGL 1.5 core functions  #define QT_OPENGL_1_5_FUNCTIONS(F) \ @@ -445,7 +458,7 @@ public:      }      Q_DECL_CONSTEXPR static Version versionStatus() -    { return OpenGL_2_0; } +    { return OpenGL_2_0_Core; }      // OpenGL 2.0 core functions  #define QT_OPENGL_2_0_FUNCTIONS(F) \ @@ -556,7 +569,7 @@ public:      }      Q_DECL_CONSTEXPR static Version versionStatus() -    { return OpenGL_2_1; } +    { return OpenGL_2_1_Core; }      // OpenGL 2.1 core functions  #define QT_OPENGL_2_1_FUNCTIONS(F) \ @@ -580,7 +593,7 @@ public:      }      Q_DECL_CONSTEXPR static Version versionStatus() -    { return OpenGL_3_0; } +    { return OpenGL_3_0_Core; }      // OpenGL 3.0 core functions  #define QT_OPENGL_3_0_FUNCTIONS(F) \ @@ -682,7 +695,7 @@ public:      }      Q_DECL_CONSTEXPR static Version versionStatus() -    { return OpenGL_3_1; } +    { return OpenGL_3_1_Core; }      // OpenGL 3.1 core functions  #define QT_OPENGL_3_1_FUNCTIONS(F) \  | 
