diff options
Diffstat (limited to 'src/jogl')
-rw-r--r-- | src/jogl/classes/com/jogamp/opengl/GLProfile.java | 2 | ||||
-rw-r--r-- | src/jogl/classes/jogamp/opengl/GLContextImpl.java | 18 |
2 files changed, 18 insertions, 2 deletions
diff --git a/src/jogl/classes/com/jogamp/opengl/GLProfile.java b/src/jogl/classes/com/jogamp/opengl/GLProfile.java index 9b96adf71..c52e3136e 100644 --- a/src/jogl/classes/com/jogamp/opengl/GLProfile.java +++ b/src/jogl/classes/com/jogamp/opengl/GLProfile.java @@ -2093,6 +2093,8 @@ public class GLProfile { } else { final GLProfile _mglp = _mappedProfiles.get( profileImpl ); if( null == _mglp ) { + // Bug 1383: We may consider allowing cross mapping here, + // i.e. mapping on actually non-supported (implementation) profiles throw new InternalError("XXX0 profile["+i+"]: "+profile+" -> profileImpl "+profileImpl+" !!! not mapped "); } glProfile = new GLProfile(profile, _mglp, isHardwareRasterizer[0], false /* custom */); diff --git a/src/jogl/classes/jogamp/opengl/GLContextImpl.java b/src/jogl/classes/jogamp/opengl/GLContextImpl.java index 54051e572..5f5823801 100644 --- a/src/jogl/classes/jogamp/opengl/GLContextImpl.java +++ b/src/jogl/classes/jogamp/opengl/GLContextImpl.java @@ -1977,8 +1977,8 @@ public abstract class GLContextImpl extends GLContext { reqMajor, reqMinor, reqCtxProfileBits, hasMajor, hasMinor, hasCtxProfileBits, vendorVersion, withinGLVersionsMapping); - if( strictMatch && glRendererQuirks.exist(GLRendererQuirks.GL3CompatNonCompliant) && - 0 != ( hasCtxProfileBits & GLContext.CTX_PROFILE_COMPAT) && (hasMajor > 3 || (hasMajor == 3 && hasMinor >= 1)) + if( glRendererQuirks.exist(GLRendererQuirks.GL3CompatNonCompliant) && + 0 != ( reqCtxProfileBits & GLContext.CTX_PROFILE_COMPAT) && (reqMajor > 3 || (reqMajor == 3 && reqMinor >= 1)) ) { if(DEBUG) { @@ -1988,6 +1988,20 @@ public abstract class GLContextImpl extends GLContext { return false; } + if( glRendererQuirks.exist(GLRendererQuirks.GL3CompatNonCompliant) && + reqMajor > 0 && + 0 != ( hasCtxProfileBits & GLContext.CTX_PROFILE_COMPAT) && (hasMajor > 3 || (hasMajor == 3 && hasMinor >= 1)) + ) + { + // Clip actual OpenGL version to be mapped for requested profile/version mapping + hasMajor = reqMajor; + hasMinor = reqMinor; + if(DEBUG) { + System.err.println(getThreadName() + ": GLContext.setGLFuncAvail: GL3CompatNonCompliant: "+ + GLContext.getGLVersion(hasMajor, hasMinor, hasCtxProfileBits, glVersion)+", "+glRenderer); + } + } + contextFQN = getContextFQN(adevice, hasMajor, hasMinor, hasCtxProfileBits); if (DEBUG) { System.err.println(getThreadName() + ": GLContext.setGLFuncAvail.0 validated FQN: "+contextFQN+" - "+ |