summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/jogl/classes/com/jogamp/opengl/GLContext.java15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/jogl/classes/com/jogamp/opengl/GLContext.java b/src/jogl/classes/com/jogamp/opengl/GLContext.java
index 606e4b4ed..8f030ade4 100644
--- a/src/jogl/classes/com/jogamp/opengl/GLContext.java
+++ b/src/jogl/classes/com/jogamp/opengl/GLContext.java
@@ -55,6 +55,7 @@ import jogamp.opengl.GLContextImpl;
import jogamp.opengl.GLContextShareSet;
import com.jogamp.common.os.Platform;
+import com.jogamp.common.util.Bitfield;
import com.jogamp.common.util.VersionNumber;
import com.jogamp.common.util.VersionNumberString;
import com.jogamp.common.util.locks.LockFactory;
@@ -1505,7 +1506,7 @@ public abstract class GLContext {
/* 1.*/ { 0, 1, 2, 3, 4, 5 },
/* 2.*/ { 0, 1 },
/* 3.*/ { 0, 1, 2, 3 },
- /* 4.*/ { 0, 1, 2, 3, 4, 5 } };
+ /* 4.*/ { 0, 1, 2, 3, 4, 5, 6 } };
public static final int ES_VERSIONS[][] = {
/* 0.*/ { -1 },
@@ -1533,6 +1534,15 @@ public abstract class GLContext {
/**
* Returns true, if the major.minor is not inferior to the lowest
* valid version and does not exceed the highest known major number by more than one.
+ * Otherwise returns false.
+ * <p>
+ * Returns false if more than one bit of the following list in {@code ctxProfile} is set
+ * <ul>
+ * <li>{@link GLContext#CTX_PROFILE_ES}</li>
+ * <li>{@link GLContext#CTX_PROFILE_CORE}</li>
+ * <li>{@link GLContext#CTX_PROFILE_COMPAT}</li>
+ * </ul>
+ * </p>
* <p>
* The minor version number is ignored by the upper limit validation
* and the major version number may exceed by one.
@@ -1550,6 +1560,9 @@ public abstract class GLContext {
if( 1>major || 0>minor ) {
return false;
}
+ if ( 1 < Bitfield.Util.bitCount( ctxProfile & ( CTX_PROFILE_ES | CTX_PROFILE_CORE | CTX_PROFILE_COMPAT ) ) ) {
+ return false;
+ }
if( 0 != ( CTX_PROFILE_ES & ctxProfile ) ) {
if( major >= ES_VERSIONS.length + 1 ) return false;
} else {