From ea80316f4ad5401a90cb74c54fc25ba5ff29ed48 Mon Sep 17 00:00:00 2001 From: David Morgan Date: Thu, 19 Feb 2015 16:55:24 +0000 Subject: Restore binary compatibility in versioned OpenGL function classes This is a partial revert of commit 18aae36a90c0753f1b1e615ba8437d8ebd1bd2fb that restores the removed *Backend classes and restores the ordering of members in other *Backend classes. This restores binary compatibility for QtGui. tst_bic now reports only that some of the *Backend classes have changed size. This is a false positive as all such cases have added new members at the end of the respective classes. Offsets to pre-existing members are still consistent with earlier versions. Change-Id: Ia7f651870c2dea7f1a8d3611e667151387506dc8 Reviewed-by: Sean Harmer --- src/gui/opengl/qopenglversionfunctions.cpp | 116 +++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) (limited to 'src/gui/opengl/qopenglversionfunctions.cpp') diff --git a/src/gui/opengl/qopenglversionfunctions.cpp b/src/gui/opengl/qopenglversionfunctions.cpp index 6f86375838f..f3f709c3f03 100644 --- a/src/gui/opengl/qopenglversionfunctions.cpp +++ b/src/gui/opengl/qopenglversionfunctions.cpp @@ -338,6 +338,8 @@ QOpenGLFunctions_1_1_CoreBackend::QOpenGLFunctions_1_1_CoreBackend(QOpenGLContex HMODULE handle = static_cast(QOpenGLContext::openGLModuleHandle()); if (!handle) handle = GetModuleHandleA("opengl32.dll"); + Indexubv = reinterpret_cast(GetProcAddress(handle, "glIndexubv")); + Indexub = reinterpret_cast(GetProcAddress(handle, "glIndexub")); IsTexture = reinterpret_cast(GetProcAddress(handle, "glIsTexture")); GenTextures = reinterpret_cast(GetProcAddress(handle, "glGenTextures")); DeleteTextures = reinterpret_cast(GetProcAddress(handle, "glDeleteTextures")); @@ -349,9 +351,12 @@ QOpenGLFunctions_1_1_CoreBackend::QOpenGLFunctions_1_1_CoreBackend(QOpenGLContex CopyTexImage2D = reinterpret_cast(GetProcAddress(handle, "glCopyTexImage2D")); CopyTexImage1D = reinterpret_cast(GetProcAddress(handle, "glCopyTexImage1D")); PolygonOffset = reinterpret_cast(GetProcAddress(handle, "glPolygonOffset")); + GetPointerv = reinterpret_cast(GetProcAddress(handle, "glGetPointerv")); DrawElements = reinterpret_cast(GetProcAddress(handle, "glDrawElements")); DrawArrays = reinterpret_cast(GetProcAddress(handle, "glDrawArrays")); #else + Indexubv = reinterpret_cast(context->getProcAddress("glIndexubv")); + Indexub = reinterpret_cast(context->getProcAddress("glIndexub")); IsTexture = reinterpret_cast(context->getProcAddress("glIsTexture")); GenTextures = reinterpret_cast(context->getProcAddress("glGenTextures")); DeleteTextures = reinterpret_cast(context->getProcAddress("glDeleteTextures")); @@ -363,6 +368,7 @@ QOpenGLFunctions_1_1_CoreBackend::QOpenGLFunctions_1_1_CoreBackend(QOpenGLContex CopyTexImage2D = reinterpret_cast(context->getProcAddress("glCopyTexImage2D")); CopyTexImage1D = reinterpret_cast(context->getProcAddress("glCopyTexImage1D")); PolygonOffset = reinterpret_cast(context->getProcAddress("glPolygonOffset")); + GetPointerv = reinterpret_cast(context->getProcAddress("glGetPointerv")); DrawElements = reinterpret_cast(context->getProcAddress("glDrawElements")); DrawArrays = reinterpret_cast(context->getProcAddress("glDrawArrays")); #endif @@ -749,6 +755,36 @@ QOpenGLFunctions_3_3_CoreBackend::QOpenGLFunctions_3_3_CoreBackend(QOpenGLContex VertexAttribP2ui = reinterpret_cast(context->getProcAddress("glVertexAttribP2ui")); VertexAttribP1uiv = reinterpret_cast(context->getProcAddress("glVertexAttribP1uiv")); VertexAttribP1ui = reinterpret_cast(context->getProcAddress("glVertexAttribP1ui")); + SecondaryColorP3uiv = reinterpret_cast(context->getProcAddress("glSecondaryColorP3uiv")); + SecondaryColorP3ui = reinterpret_cast(context->getProcAddress("glSecondaryColorP3ui")); + ColorP4uiv = reinterpret_cast(context->getProcAddress("glColorP4uiv")); + ColorP4ui = reinterpret_cast(context->getProcAddress("glColorP4ui")); + ColorP3uiv = reinterpret_cast(context->getProcAddress("glColorP3uiv")); + ColorP3ui = reinterpret_cast(context->getProcAddress("glColorP3ui")); + NormalP3uiv = reinterpret_cast(context->getProcAddress("glNormalP3uiv")); + NormalP3ui = reinterpret_cast(context->getProcAddress("glNormalP3ui")); + MultiTexCoordP4uiv = reinterpret_cast(context->getProcAddress("glMultiTexCoordP4uiv")); + MultiTexCoordP4ui = reinterpret_cast(context->getProcAddress("glMultiTexCoordP4ui")); + MultiTexCoordP3uiv = reinterpret_cast(context->getProcAddress("glMultiTexCoordP3uiv")); + MultiTexCoordP3ui = reinterpret_cast(context->getProcAddress("glMultiTexCoordP3ui")); + MultiTexCoordP2uiv = reinterpret_cast(context->getProcAddress("glMultiTexCoordP2uiv")); + MultiTexCoordP2ui = reinterpret_cast(context->getProcAddress("glMultiTexCoordP2ui")); + MultiTexCoordP1uiv = reinterpret_cast(context->getProcAddress("glMultiTexCoordP1uiv")); + MultiTexCoordP1ui = reinterpret_cast(context->getProcAddress("glMultiTexCoordP1ui")); + TexCoordP4uiv = reinterpret_cast(context->getProcAddress("glTexCoordP4uiv")); + TexCoordP4ui = reinterpret_cast(context->getProcAddress("glTexCoordP4ui")); + TexCoordP3uiv = reinterpret_cast(context->getProcAddress("glTexCoordP3uiv")); + TexCoordP3ui = reinterpret_cast(context->getProcAddress("glTexCoordP3ui")); + TexCoordP2uiv = reinterpret_cast(context->getProcAddress("glTexCoordP2uiv")); + TexCoordP2ui = reinterpret_cast(context->getProcAddress("glTexCoordP2ui")); + TexCoordP1uiv = reinterpret_cast(context->getProcAddress("glTexCoordP1uiv")); + TexCoordP1ui = reinterpret_cast(context->getProcAddress("glTexCoordP1ui")); + VertexP4uiv = reinterpret_cast(context->getProcAddress("glVertexP4uiv")); + VertexP4ui = reinterpret_cast(context->getProcAddress("glVertexP4ui")); + VertexP3uiv = reinterpret_cast(context->getProcAddress("glVertexP3uiv")); + VertexP3ui = reinterpret_cast(context->getProcAddress("glVertexP3ui")); + VertexP2uiv = reinterpret_cast(context->getProcAddress("glVertexP2uiv")); + VertexP2ui = reinterpret_cast(context->getProcAddress("glVertexP2ui")); GetQueryObjectui64v = reinterpret_cast(context->getProcAddress("glGetQueryObjectui64v")); GetQueryObjecti64v = reinterpret_cast(context->getProcAddress("glGetQueryObjecti64v")); QueryCounter = reinterpret_cast(context->getProcAddress("glQueryCounter")); @@ -1882,6 +1918,86 @@ QOpenGLVersionStatus QOpenGLFunctions_1_4_DeprecatedBackend::versionStatus() return QOpenGLVersionStatus(1, 4, QOpenGLVersionStatus::DeprecatedStatus); } +QOpenGLFunctions_2_0_DeprecatedBackend::QOpenGLFunctions_2_0_DeprecatedBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 2.0 deprecated functions + VertexAttrib4usv = reinterpret_cast(context->getProcAddress("glVertexAttrib4usv")); + VertexAttrib4uiv = reinterpret_cast(context->getProcAddress("glVertexAttrib4uiv")); + VertexAttrib4ubv = reinterpret_cast(context->getProcAddress("glVertexAttrib4ubv")); + VertexAttrib4sv = reinterpret_cast(context->getProcAddress("glVertexAttrib4sv")); + VertexAttrib4s = reinterpret_cast(context->getProcAddress("glVertexAttrib4s")); + VertexAttrib4iv = reinterpret_cast(context->getProcAddress("glVertexAttrib4iv")); + VertexAttrib4fv = reinterpret_cast(context->getProcAddress("glVertexAttrib4fv")); + VertexAttrib4f = reinterpret_cast(context->getProcAddress("glVertexAttrib4f")); + VertexAttrib4dv = reinterpret_cast(context->getProcAddress("glVertexAttrib4dv")); + VertexAttrib4d = reinterpret_cast(context->getProcAddress("glVertexAttrib4d")); + VertexAttrib4bv = reinterpret_cast(context->getProcAddress("glVertexAttrib4bv")); + VertexAttrib4Nusv = reinterpret_cast(context->getProcAddress("glVertexAttrib4Nusv")); + VertexAttrib4Nuiv = reinterpret_cast(context->getProcAddress("glVertexAttrib4Nuiv")); + VertexAttrib4Nubv = reinterpret_cast(context->getProcAddress("glVertexAttrib4Nubv")); + VertexAttrib4Nub = reinterpret_cast(context->getProcAddress("glVertexAttrib4Nub")); + VertexAttrib4Nsv = reinterpret_cast(context->getProcAddress("glVertexAttrib4Nsv")); + VertexAttrib4Niv = reinterpret_cast(context->getProcAddress("glVertexAttrib4Niv")); + VertexAttrib4Nbv = reinterpret_cast(context->getProcAddress("glVertexAttrib4Nbv")); + VertexAttrib3sv = reinterpret_cast(context->getProcAddress("glVertexAttrib3sv")); + VertexAttrib3s = reinterpret_cast(context->getProcAddress("glVertexAttrib3s")); + VertexAttrib3fv = reinterpret_cast(context->getProcAddress("glVertexAttrib3fv")); + VertexAttrib3f = reinterpret_cast(context->getProcAddress("glVertexAttrib3f")); + VertexAttrib3dv = reinterpret_cast(context->getProcAddress("glVertexAttrib3dv")); + VertexAttrib3d = reinterpret_cast(context->getProcAddress("glVertexAttrib3d")); + VertexAttrib2sv = reinterpret_cast(context->getProcAddress("glVertexAttrib2sv")); + VertexAttrib2s = reinterpret_cast(context->getProcAddress("glVertexAttrib2s")); + VertexAttrib2fv = reinterpret_cast(context->getProcAddress("glVertexAttrib2fv")); + VertexAttrib2f = reinterpret_cast(context->getProcAddress("glVertexAttrib2f")); + VertexAttrib2dv = reinterpret_cast(context->getProcAddress("glVertexAttrib2dv")); + VertexAttrib2d = reinterpret_cast(context->getProcAddress("glVertexAttrib2d")); + VertexAttrib1sv = reinterpret_cast(context->getProcAddress("glVertexAttrib1sv")); + VertexAttrib1s = reinterpret_cast(context->getProcAddress("glVertexAttrib1s")); + VertexAttrib1fv = reinterpret_cast(context->getProcAddress("glVertexAttrib1fv")); + VertexAttrib1f = reinterpret_cast(context->getProcAddress("glVertexAttrib1f")); + VertexAttrib1dv = reinterpret_cast(context->getProcAddress("glVertexAttrib1dv")); + VertexAttrib1d = reinterpret_cast(context->getProcAddress("glVertexAttrib1d")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_2_0_DeprecatedBackend::versionStatus() +{ + return QOpenGLVersionStatus(2, 0, QOpenGLVersionStatus::DeprecatedStatus); +} + +QOpenGLFunctions_3_0_DeprecatedBackend::QOpenGLFunctions_3_0_DeprecatedBackend(QOpenGLContext *context) + : QOpenGLVersionFunctionsBackend(context) +{ + // OpenGL 3.0 deprecated functions + VertexAttribI4usv = reinterpret_cast(context->getProcAddress("glVertexAttribI4usv")); + VertexAttribI4ubv = reinterpret_cast(context->getProcAddress("glVertexAttribI4ubv")); + VertexAttribI4sv = reinterpret_cast(context->getProcAddress("glVertexAttribI4sv")); + VertexAttribI4bv = reinterpret_cast(context->getProcAddress("glVertexAttribI4bv")); + VertexAttribI4uiv = reinterpret_cast(context->getProcAddress("glVertexAttribI4uiv")); + VertexAttribI3uiv = reinterpret_cast(context->getProcAddress("glVertexAttribI3uiv")); + VertexAttribI2uiv = reinterpret_cast(context->getProcAddress("glVertexAttribI2uiv")); + VertexAttribI1uiv = reinterpret_cast(context->getProcAddress("glVertexAttribI1uiv")); + VertexAttribI4iv = reinterpret_cast(context->getProcAddress("glVertexAttribI4iv")); + VertexAttribI3iv = reinterpret_cast(context->getProcAddress("glVertexAttribI3iv")); + VertexAttribI2iv = reinterpret_cast(context->getProcAddress("glVertexAttribI2iv")); + VertexAttribI1iv = reinterpret_cast(context->getProcAddress("glVertexAttribI1iv")); + VertexAttribI4ui = reinterpret_cast(context->getProcAddress("glVertexAttribI4ui")); + VertexAttribI3ui = reinterpret_cast(context->getProcAddress("glVertexAttribI3ui")); + VertexAttribI2ui = reinterpret_cast(context->getProcAddress("glVertexAttribI2ui")); + VertexAttribI1ui = reinterpret_cast(context->getProcAddress("glVertexAttribI1ui")); + VertexAttribI4i = reinterpret_cast(context->getProcAddress("glVertexAttribI4i")); + VertexAttribI3i = reinterpret_cast(context->getProcAddress("glVertexAttribI3i")); + VertexAttribI2i = reinterpret_cast(context->getProcAddress("glVertexAttribI2i")); + VertexAttribI1i = reinterpret_cast(context->getProcAddress("glVertexAttribI1i")); + +} + +QOpenGLVersionStatus QOpenGLFunctions_3_0_DeprecatedBackend::versionStatus() +{ + return QOpenGLVersionStatus(3, 0, QOpenGLVersionStatus::DeprecatedStatus); +} + QOpenGLFunctions_3_3_DeprecatedBackend::QOpenGLFunctions_3_3_DeprecatedBackend(QOpenGLContext *context) : QOpenGLVersionFunctionsBackend(context) { -- cgit v1.2.3