Avoid querying unknown RESET_NOTIFICATION_STRATEGY value on GL < 4.0
Fixes: QTBUG-55759 Change-Id: Ie2758859a6862a214691a5011761bf549a31a93e Reviewed-by: Christian Strømme <christian.stromme@qt.io>
This commit is contained in:
parent
3d56572fe7
commit
1be4f6c32c
@ -876,10 +876,6 @@ QWindowsOpenGLContextFormat QWindowsOpenGLContextFormat::current()
|
||||
result.options |= QSurfaceFormat::DeprecatedFunctions;
|
||||
if (value & GL_CONTEXT_FLAG_DEBUG_BIT)
|
||||
result.options |= QSurfaceFormat::DebugContext;
|
||||
value = 0;
|
||||
QOpenGLStaticContext::opengl32.glGetIntegerv(RESET_NOTIFICATION_STRATEGY_ARB, &value);
|
||||
if (value == LOSE_CONTEXT_ON_RESET_ARB)
|
||||
result.options |= QSurfaceFormat::ResetNotification;
|
||||
if (result.version < 0x0302)
|
||||
return result;
|
||||
// v3.2 onwards: Profiles
|
||||
@ -889,6 +885,13 @@ QWindowsOpenGLContextFormat QWindowsOpenGLContextFormat::current()
|
||||
result.profile = QSurfaceFormat::CoreProfile;
|
||||
else if (value & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT)
|
||||
result.profile = QSurfaceFormat::CompatibilityProfile;
|
||||
if (result.version < 0x0400)
|
||||
return result;
|
||||
// v4.0 onwards
|
||||
value = 0;
|
||||
QOpenGLStaticContext::opengl32.glGetIntegerv(RESET_NOTIFICATION_STRATEGY_ARB, &value);
|
||||
if (value == LOSE_CONTEXT_ON_RESET_ARB)
|
||||
result.options |= QSurfaceFormat::ResetNotification;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -163,10 +163,12 @@ static void updateFormatFromContext(QSurfaceFormat &format)
|
||||
format.setOption(QSurfaceFormat::StereoBuffers);
|
||||
|
||||
if (format.renderableType() == QSurfaceFormat::OpenGL) {
|
||||
GLint value = 0;
|
||||
glGetIntegerv(GL_RESET_NOTIFICATION_STRATEGY_ARB, &value);
|
||||
if (value == GL_LOSE_CONTEXT_ON_RESET_ARB)
|
||||
format.setOption(QSurfaceFormat::ResetNotification);
|
||||
if (format.version() >= qMakePair(4, 0)) {
|
||||
GLint value = 0;
|
||||
glGetIntegerv(GL_RESET_NOTIFICATION_STRATEGY_ARB, &value);
|
||||
if (value == GL_LOSE_CONTEXT_ON_RESET_ARB)
|
||||
format.setOption(QSurfaceFormat::ResetNotification);
|
||||
}
|
||||
|
||||
if (format.version() < qMakePair(3, 0)) {
|
||||
format.setOption(QSurfaceFormat::DeprecatedFunctions);
|
||||
@ -175,7 +177,7 @@ static void updateFormatFromContext(QSurfaceFormat &format)
|
||||
|
||||
// Version 3.0 onwards - check if it includes deprecated functionality or is
|
||||
// a debug context
|
||||
value = 0;
|
||||
GLint value = 0;
|
||||
glGetIntegerv(GL_CONTEXT_FLAGS, &value);
|
||||
if (!(value & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT))
|
||||
format.setOption(QSurfaceFormat::DeprecatedFunctions);
|
||||
|
Loading…
Reference in New Issue
Block a user