aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl
diff options
context:
space:
mode:
Diffstat (limited to 'src/jogl')
-rw-r--r--src/jogl/classes/com/jogamp/opengl/GLProfile.java2
-rw-r--r--src/jogl/classes/jogamp/opengl/GLContextImpl.java18
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+" - "+