From 47714e4beacd0383cc39aa735aa7bbab2acb7f8a Mon Sep 17 00:00:00 2001 From: Ioannis Tsakpinis Date: Tue, 9 Feb 2010 15:22:58 +0000 Subject: [PATCH] Catch and ignore INVALID_OPERATION error when retrieving CONTEXT_PROFILE_MASK (workaround for ATI 9.12). --- src/java/org/lwjgl/opengl/GLContext.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/java/org/lwjgl/opengl/GLContext.java b/src/java/org/lwjgl/opengl/GLContext.java index d1b572c7..ff984b1c 100644 --- a/src/java/org/lwjgl/opengl/GLContext.java +++ b/src/java/org/lwjgl/opengl/GLContext.java @@ -247,8 +247,18 @@ public final class GLContext { // Get the context profile mask for versions >= 3.2 if ( 3 < majorVersion || 2 <= minorVersion ) { + Util.checkGLError(); // Make sure we have no errors up to this point + GL11.glGetInteger(GL32.GL_CONTEXT_PROFILE_MASK, buffer); - profileMask = buffer.get(0); + + try { + // Retrieving GL_CONTEXT_PROFILE_MASK may generate an INVALID_OPERATION error on certain implementations, ignore. + // Happens on pre10.1 ATI drivers, when ContextAttribs.withProfileCompatibility is not used + Util.checkGLError(); + profileMask = buffer.get(0); + } catch (OpenGLException e) { + LWJGLUtil.log("Failed to retrieve CONTEXT_PROFILE_MASK"); + } } }