Fix the GL_CONTEXT_PROFILE_MASK check
A bit mask can have more than one bit set, so we can't use a switch statement here. Also use the correct enums, and make sure that the profile is set to QSurfaceFormat::NoProfile when the OpenGL version is less than 3.2. Change-Id: I6d2c4e35d4fb3d87fd47c9724cb415f8619a7b95 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
This commit is contained in:
parent
2ed081a88b
commit
69701cb8c4
@ -696,8 +696,8 @@ QWindowsOpenGLContextFormat QWindowsOpenGLContextFormat::current()
|
||||
result.version = (version.mid(0, majorDot).toInt() << 8)
|
||||
+ version.mid(majorDot + 1, minorDot - majorDot - 1).toInt();
|
||||
}
|
||||
result.profile = QSurfaceFormat::NoProfile;
|
||||
if (result.version < 0x0300) {
|
||||
result.profile = QSurfaceFormat::NoProfile;
|
||||
result.options |= QSurfaceFormat::DeprecatedFunctions;
|
||||
return result;
|
||||
}
|
||||
@ -713,17 +713,10 @@ QWindowsOpenGLContextFormat QWindowsOpenGLContextFormat::current()
|
||||
// v3.2 onwards: Profiles
|
||||
value = 0;
|
||||
glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &value);
|
||||
switch (value) {
|
||||
case WGL_CONTEXT_CORE_PROFILE_BIT_ARB:
|
||||
if (value & GL_CONTEXT_CORE_PROFILE_BIT)
|
||||
result.profile = QSurfaceFormat::CoreProfile;
|
||||
break;
|
||||
case WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB:
|
||||
else if (value & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT)
|
||||
result.profile = QSurfaceFormat::CompatibilityProfile;
|
||||
break;
|
||||
default:
|
||||
result.profile = QSurfaceFormat::NoProfile;
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -168,6 +168,8 @@ static void updateFormatFromContext(QSurfaceFormat &format)
|
||||
format.setMinorVersion(minor);
|
||||
}
|
||||
|
||||
format.setProfile(QSurfaceFormat::NoProfile);
|
||||
|
||||
const int version = (major << 8) + minor;
|
||||
if (version < 0x0300) {
|
||||
format.setProfile(QSurfaceFormat::NoProfile);
|
||||
@ -189,17 +191,11 @@ static void updateFormatFromContext(QSurfaceFormat &format)
|
||||
// Version 3.2 and newer have a profile
|
||||
value = 0;
|
||||
glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &value);
|
||||
switch (value) {
|
||||
case GLX_CONTEXT_CORE_PROFILE_BIT_ARB:
|
||||
|
||||
if (value & GL_CONTEXT_CORE_PROFILE_BIT)
|
||||
format.setProfile(QSurfaceFormat::CoreProfile);
|
||||
break;
|
||||
case GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB:
|
||||
else if (value & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT)
|
||||
format.setProfile(QSurfaceFormat::CompatibilityProfile);
|
||||
break;
|
||||
default:
|
||||
format.setProfile(QSurfaceFormat::NoProfile);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
|
Loading…
Reference in New Issue
Block a user