summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2010-10-29 06:30:45 +0200
committerSven Gothel <[email protected]>2010-10-29 06:30:45 +0200
commita0c7b5ca791f659d9c98654b47246092aad42665 (patch)
tree7dbc6d920657558143008a888854e70f14bec8fb /src
parentce24d32178106baa16e84f016192441ce45845a7 (diff)
JOGL: HashMap ProcAddressTable for all GL profiles incl GLX/WGL/CGL/EGL
Reduce (performance/footprint) overhead of ProcAddressTable recreation, instead use a hashmap (major, minor, profile) -> ProcAddressTable. Remove GL2ES12 implementation profile, redundant.
Diffstat (limited to 'src')
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLibraryBundleInfo.java9
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLookupHelper.java4
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/GLContextImpl.java75
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/egl/EGLContext.java31
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/macosx/cgl/MacOSXCGLContext.java30
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLContext.java30
-rw-r--r--src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11GLXContext.java28
-rw-r--r--src/jogl/classes/javax/media/opengl/GLContext.java21
-rw-r--r--src/jogl/classes/javax/media/opengl/GLProfile.java22
-rw-r--r--src/junit/com/jogamp/test/junit/jogl/acore/TestGLProfile01NEWT.java12
10 files changed, 166 insertions, 96 deletions
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLibraryBundleInfo.java b/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLibraryBundleInfo.java
index a33f395a5..5cacf5087 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLibraryBundleInfo.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLibraryBundleInfo.java
@@ -28,12 +28,10 @@
package com.jogamp.opengl.impl;
-import com.jogamp.common.os.DynamicLibraryBundleInfo;
import java.util.List;
import java.util.ArrayList;
public abstract class DesktopGLDynamicLibraryBundleInfo extends GLDynamicLibraryBundleInfo {
- private static int posGlueLibGL2ES12;
private static int posGlueLibGLDESKTOP;
private static List/*<String>*/ glueLibNames;
static {
@@ -41,17 +39,10 @@ public abstract class DesktopGLDynamicLibraryBundleInfo extends GLDynamicLibrary
glueLibNames.addAll(getGlueLibNamesPreload());
- posGlueLibGL2ES12 = glueLibNames.size();
- glueLibNames.add("jogl_gl2es12");
-
posGlueLibGLDESKTOP = glueLibNames.size();
glueLibNames.add("jogl_desktop");
}
- public static final int getGlueLibPosGL2ES12() {
- return posGlueLibGL2ES12;
- }
-
public static final int getGlueLibPosGLDESKTOP() {
return posGlueLibGLDESKTOP;
}
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLookupHelper.java b/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLookupHelper.java
index 511e0518d..08821910f 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLookupHelper.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/DesktopGLDynamicLookupHelper.java
@@ -48,10 +48,6 @@ public class DesktopGLDynamicLookupHelper extends GLDynamicLookupHelper {
return isToolLibLoaded() && isGlueLibLoaded(DesktopGLDynamicLibraryBundleInfo.getGlueLibPosGLDESKTOP());
}
- public boolean hasGLES12Binding() {
- return isToolLibLoaded() && isGlueLibLoaded(DesktopGLDynamicLibraryBundleInfo.getGlueLibPosGL2ES12());
- }
-
public synchronized boolean loadGLULibrary() {
/** hacky code .. where all platform GLU libs are tried ..*/
if(null==gluLib) {
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/GLContextImpl.java b/src/jogl/classes/com/jogamp/opengl/impl/GLContextImpl.java
index 3d4c601fe..5f4a9879b 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/GLContextImpl.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/GLContextImpl.java
@@ -474,7 +474,10 @@ public abstract class GLContextImpl extends GLContext {
boolean compat = glp.isGL2(); // incl GL3bc and GL4bc
int key = compose8bit(reqMajor, compat?CTX_PROFILE_COMPAT:CTX_PROFILE_CORE, 0, 0);
- int val = mappedVersionsAvailable.get( key );
+ int val;
+ synchronized(mappedVersionsAvailableLock) {
+ val = mappedVersionsAvailable.get( key );
+ }
long _ctx = 0;
if(val>0) {
int _major = getComposed8bit(val, 1);
@@ -489,23 +492,23 @@ public abstract class GLContextImpl extends GLContext {
return _ctx;
}
- private void mapGLVersions() {
- if (!mappedVersionsAvailableSet) {
- synchronized (mappedVersionsAvailableLock) {
- if (!mappedVersionsAvailableSet) {
- createContextARBMapVersionsAvailable(4, false /* core */); // GL4
- createContextARBMapVersionsAvailable(4, true /* compat */); // GL4bc
- createContextARBMapVersionsAvailable(3, false /* core */); // GL3
- createContextARBMapVersionsAvailable(3, true /* compat */); // GL3bc
- createContextARBMapVersionsAvailable(2, true /* compat */); // GL2
- mappedVersionsAvailableSet = true;
- if (DEBUG) {
- System.err.println(getThreadName() + ": !!! createContextARB: SET mappedVersionsAvailableSet " + mappedVersionsAvailableSet);
- }
+ private void mapGLVersions() {
+ if (!mappedVersionsAvailableSet) {
+ synchronized (mappedVersionsAvailableLock) {
+ if (!mappedVersionsAvailableSet) {
+ createContextARBMapVersionsAvailable(4, false /* core */); // GL4
+ createContextARBMapVersionsAvailable(4, true /* compat */); // GL4bc
+ createContextARBMapVersionsAvailable(3, false /* core */); // GL3
+ createContextARBMapVersionsAvailable(3, true /* compat */); // GL3bc
+ createContextARBMapVersionsAvailable(2, true /* compat */); // GL2
+ mappedVersionsAvailableSet = true;
+ if (DEBUG) {
+ System.err.println(getThreadName() + ": !!! createContextARB: SET mappedVersionsAvailableSet " + mappedVersionsAvailableSet);
}
}
}
}
+ }
private final void createContextARBMapVersionsAvailable(int reqMajor, boolean compat)
{
@@ -649,6 +652,10 @@ public abstract class GLContextImpl extends GLContext {
return ReflectionUtil.createInstance(glp.getGLImplBaseClassName()+suffix, cstrArgTypes, cstrArgs, getClass().getClassLoader());
}
+ private boolean verifyInstance(GLProfile glp, String suffix, Object instance) {
+ return ReflectionUtil.instanceOf(instance, glp.getGLImplBaseClassName()+suffix);
+ }
+
/** Create the GL for this context. */
protected GL createGL(GLProfile glp) {
GL gl = (GL) createInstance(glp, "Impl", new Class[] { GLProfile.class, GLContextImpl.class }, new Object[] { glp, this } );
@@ -729,8 +736,8 @@ public abstract class GLContextImpl extends GLContext {
/** Helper routine which resets a ProcAddressTable generated by the
GLEmitter by looking up anew all of its function pointers. */
- protected void resetProcAddressTable(Object table) {
- ((ProcAddressTable)table).reset(getDrawableImpl().getGLDynamicLookupHelper() );
+ protected void resetProcAddressTable(ProcAddressTable table) {
+ table.reset(getDrawableImpl().getGLDynamicLookupHelper() );
}
/**
@@ -769,15 +776,35 @@ public abstract class GLContextImpl extends GLContext {
if (DEBUG) {
System.err.println(getThreadName() + ": !!! Initializing OpenGL extension address table for " + this);
}
- if (glProcAddressTable == null) {
- glProcAddressTable = (ProcAddressTable) createInstance(gl.getGLProfile(), "ProcAddressTable",
- new Class[] { FunctionAddressResolver.class } ,
- new Object[] { new GLProcAddressResolver() } );
- // FIXME: cache ProcAddressTables by capability bits so we can
- // share them among contexts with the same capabilities
- }
- resetProcAddressTable(getGLProcAddressTable());
+ int key = compose8bit(major, minor, ctp, 0);
+ ProcAddressTable table = null;
+ synchronized(mappedProcAddressLock) {
+ table = (ProcAddressTable) mappedGLProcAddress.get( key );
+ if(null != table && !verifyInstance(gl.getGLProfile(), "ProcAddressTable", table)) {
+ throw new InternalError("GLContext GL ProcAddressTable mapped key("+major+","+minor+","+ctp+") -> "+
+ table.getClass().getName()+" not matching "+gl.getGLProfile().getGLImplBaseClassName());
+ }
+ }
+ if(null != table) {
+ glProcAddressTable = table;
+ if(DEBUG) {
+ System.err.println("GLContext GL ProcAddressTable reusing key("+major+","+minor+","+ctp+") -> "+table.hashCode());
+ }
+ } else {
+ if (glProcAddressTable == null) {
+ glProcAddressTable = (ProcAddressTable) createInstance(gl.getGLProfile(), "ProcAddressTable",
+ new Class[] { FunctionAddressResolver.class } ,
+ new Object[] { new GLProcAddressResolver() } );
+ }
+ resetProcAddressTable(getGLProcAddressTable());
+ synchronized(mappedProcAddressLock) {
+ mappedGLProcAddress.put(key, getGLProcAddressTable());
+ if(DEBUG) {
+ System.err.println("GLContext GL ProcAddressTable mapping key("+major+","+minor+","+ctp+") -> "+getGLProcAddressTable().hashCode());
+ }
+ }
+ }
setContextVersion(major, minor, ctp);
extensionAvailability.reset();
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLContext.java b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLContext.java
index 5671b033d..65f16089b 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLContext.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/egl/EGLContext.java
@@ -35,7 +35,6 @@
package com.jogamp.opengl.impl.egl;
-import javax.media.nativewindow.*;
import javax.media.opengl.*;
import com.jogamp.opengl.impl.*;
import com.jogamp.gluegen.runtime.ProcAddressTable;
@@ -200,12 +199,30 @@ public abstract class EGLContext extends GLContextImpl {
eglQueryStringInitialized = false;
eglQueryStringAvailable = false;
- if (eglExtProcAddressTable == null) {
- // FIXME: cache ProcAddressTables by capability bits so we can
- // share them among contexts with the same capabilities
- eglExtProcAddressTable = new EGLExtProcAddressTable(new GLProcAddressResolver());
- }
- resetProcAddressTable(getEGLExtProcAddressTable());
+ int key = compose8bit(major, minor, ctp, 0);
+ EGLExtProcAddressTable table = null;
+ synchronized(mappedProcAddressLock) {
+ table = (EGLExtProcAddressTable) mappedGLXProcAddress.get( key );
+ }
+ if(null != table) {
+ eglExtProcAddressTable = table;
+ if(DEBUG) {
+ System.err.println("GLContext EGL ProcAddressTable reusing key("+major+","+minor+","+ctp+") -> "+table.hashCode());
+ }
+ } else {
+ if (eglExtProcAddressTable == null) {
+ // FIXME: cache ProcAddressTables by capability bits so we can
+ // share them among contexts with the same capabilities
+ eglExtProcAddressTable = new EGLExtProcAddressTable(new GLProcAddressResolver());
+ }
+ resetProcAddressTable(getEGLExtProcAddressTable());
+ synchronized(mappedProcAddressLock) {
+ mappedGLXProcAddress.put(key, getEGLExtProcAddressTable());
+ if(DEBUG) {
+ System.err.println("GLContext EGL ProcAddressTable mapping key("+major+","+minor+","+ctp+") -> "+getEGLExtProcAddressTable().hashCode());
+ }
+ }
+ }
super.updateGLProcAddressTable(major, minor, ctp);
}
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/macosx/cgl/MacOSXCGLContext.java b/src/jogl/classes/com/jogamp/opengl/impl/macosx/cgl/MacOSXCGLContext.java
index 1bb07cf9c..ad7dac85f 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/macosx/cgl/MacOSXCGLContext.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/macosx/cgl/MacOSXCGLContext.java
@@ -228,12 +228,30 @@ public abstract class MacOSXCGLContext extends GLContextImpl
if (DEBUG) {
System.err.println("!!! Initializing CGL extension address table");
}
- if (cglExtProcAddressTable == null) {
- // FIXME: cache ProcAddressTables by capability bits so we can
- // share them among contexts with the same capabilities
- cglExtProcAddressTable = new CGLExtProcAddressTable(new GLProcAddressResolver());
- }
- resetProcAddressTable(getCGLExtProcAddressTable());
+ int key = compose8bit(major, minor, ctp, 0);
+ CGLExtProcAddressTable table = null;
+ synchronized(mappedProcAddressLock) {
+ table = (CGLExtProcAddressTable) mappedGLXProcAddress.get( key );
+ }
+ if(null != table) {
+ cglExtProcAddressTable = table;
+ if(DEBUG) {
+ System.err.println("GLContext CGL ProcAddressTable reusing key("+major+","+minor+","+ctp+") -> "+table.hashCode());
+ }
+ } else {
+ if (cglExtProcAddressTable == null) {
+ // FIXME: cache ProcAddressTables by capability bits so we can
+ // share them among contexts with the same capabilities
+ cglExtProcAddressTable = new CGLExtProcAddressTable(new GLProcAddressResolver());
+ }
+ resetProcAddressTable(getCGLExtProcAddressTable());
+ synchronized(mappedProcAddressLock) {
+ mappedGLXProcAddress.put(key, getCGLExtProcAddressTable());
+ if(DEBUG) {
+ System.err.println("GLContext CGL ProcAddressTable mapping key("+major+","+minor+","+ctp+") -> "+getCGLExtProcAddressTable().hashCode());
+ }
+ }
+ }
super.updateGLProcAddressTable(major, minor, ctp);
}
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLContext.java b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLContext.java
index 65a8e8ac3..027fb0065 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLContext.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/windows/wgl/WindowsWGLContext.java
@@ -340,12 +340,30 @@ public class WindowsWGLContext extends GLContextImpl {
wglMakeContextCurrentInitialized=false;
wglMakeContextCurrentAvailable=false;
- if (wglExtProcAddressTable == null) {
- // FIXME: cache ProcAddressTables by OpenGL context type bits so we can
- // share them among contexts classes (GL4, GL4bc, GL3, GL3bc, ..)
- wglExtProcAddressTable = new WGLExtProcAddressTable(new GLProcAddressResolver());
- }
- resetProcAddressTable(getWGLExtProcAddressTable());
+ int key = compose8bit(major, minor, ctp, 0);
+ WGLExtProcAddressTable table = null;
+ synchronized(mappedProcAddressLock) {
+ table = (WGLExtProcAddressTable) mappedGLXProcAddress.get( key );
+ }
+ if(null != table) {
+ wglExtProcAddressTable = table;
+ if(DEBUG) {
+ System.err.println("GLContext WGL ProcAddressTable reusing key("+major+","+minor+","+ctp+") -> "+table.hashCode());
+ }
+ } else {
+ if (wglExtProcAddressTable == null) {
+ // FIXME: cache ProcAddressTables by OpenGL context type bits so we can
+ // share them among contexts classes (GL4, GL4bc, GL3, GL3bc, ..)
+ wglExtProcAddressTable = new WGLExtProcAddressTable(new GLProcAddressResolver());
+ }
+ resetProcAddressTable(getWGLExtProcAddressTable());
+ synchronized(mappedProcAddressLock) {
+ mappedGLXProcAddress.put(key, getWGLExtProcAddressTable());
+ if(DEBUG) {
+ System.err.println("GLContext WGL ProcAddressTable mapping key("+major+","+minor+","+ctp+") -> "+getWGLExtProcAddressTable().hashCode());
+ }
+ }
+ }
super.updateGLProcAddressTable(major, minor, ctp);
}
diff --git a/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11GLXContext.java b/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11GLXContext.java
index 3cf691493..697ee6353 100644
--- a/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11GLXContext.java
+++ b/src/jogl/classes/com/jogamp/opengl/impl/x11/glx/X11GLXContext.java
@@ -392,12 +392,28 @@ public abstract class X11GLXContext extends GLContextImpl {
glXQueryExtensionsStringInitialized = false;
glXQueryExtensionsStringAvailable = false;
- if (glXExtProcAddressTable == null) {
- // FIXME: cache ProcAddressTables by OpenGL context type bits so we can
- // share them among contexts classes (GL4, GL4bc, GL3, GL3bc, ..)
- glXExtProcAddressTable = new GLXExtProcAddressTable(new GLProcAddressResolver());
- }
- resetProcAddressTable(getGLXExtProcAddressTable());
+ int key = compose8bit(major, minor, ctp, 0);
+ GLXExtProcAddressTable table = null;
+ synchronized(mappedProcAddressLock) {
+ table = (GLXExtProcAddressTable) mappedGLXProcAddress.get( key );
+ }
+ if(null != table) {
+ glXExtProcAddressTable = table;
+ if(DEBUG) {
+ System.err.println("GLContext GLX ProcAddressTable reusing key("+major+","+minor+","+ctp+") -> "+table.hashCode());
+ }
+ } else {
+ if (glXExtProcAddressTable == null) {
+ glXExtProcAddressTable = new GLXExtProcAddressTable(new GLProcAddressResolver());
+ }
+ resetProcAddressTable(getGLXExtProcAddressTable());
+ synchronized(mappedProcAddressLock) {
+ mappedGLXProcAddress.put(key, getGLXExtProcAddressTable());
+ if(DEBUG) {
+ System.err.println("GLContext GLX ProcAddressTable mapping key("+major+","+minor+","+ctp+") -> "+getGLXExtProcAddressTable().hashCode());
+ }
+ }
+ }
super.updateGLProcAddressTable(major, minor, ctp);
}
diff --git a/src/jogl/classes/javax/media/opengl/GLContext.java b/src/jogl/classes/javax/media/opengl/GLContext.java
index 0cc63fb1a..2f63d5c8e 100644
--- a/src/jogl/classes/javax/media/opengl/GLContext.java
+++ b/src/jogl/classes/javax/media/opengl/GLContext.java
@@ -42,6 +42,7 @@ package javax.media.opengl;
import java.util.HashMap;
import com.jogamp.common.util.IntIntHashMap;
+import com.jogamp.common.util.IntObjectHashMap;
/** Abstraction for an OpenGL rendering context. In order to perform
OpenGL rendering, a context must be "made current" on the current
@@ -505,7 +506,10 @@ public abstract class GLContext {
*/
public static final boolean getGLVersionAvailable(int reqMajor, int reqProfile, int[] major, int minor[], int ctp[]) {
int key = compose8bit(reqMajor, reqProfile, 0, 0);
- int val = mappedVersionsAvailable.get( key );
+ int val;
+ synchronized(mappedVersionsAvailableLock) {
+ val = mappedVersionsAvailable.get( key );
+ }
if(val<=0) {
return false;
}
@@ -556,15 +560,24 @@ public abstract class GLContext {
return sb.toString();
}
+ protected static final Object mappedVersionsAvailableLock;
protected static final IntIntHashMap mappedVersionsAvailable;
protected static volatile boolean mappedVersionsAvailableSet;
- protected static final Object mappedVersionsAvailableLock;
+
+ protected static final Object mappedProcAddressLock;
+ protected static final IntObjectHashMap mappedGLProcAddress;
+ protected static final IntObjectHashMap mappedGLXProcAddress;
static {
mappedVersionsAvailableLock = new Object();
mappedVersionsAvailableSet = false;
mappedVersionsAvailable = new IntIntHashMap();
mappedVersionsAvailable.setKeyNotFoundValue(-1);
+ mappedProcAddressLock = new Object();
+ mappedGLProcAddress = new IntObjectHashMap();
+ mappedGLProcAddress.setKeyNotFoundValue(null);
+ mappedGLXProcAddress = new IntObjectHashMap();
+ mappedGLXProcAddress.setKeyNotFoundValue(null);
}
private static void validateProfileBits(int bits, String argName) {
@@ -594,7 +607,9 @@ public abstract class GLContext {
int key = compose8bit(reqMajor, profile, 0, 0);
int val = compose8bit(resMajor, resMinor, resCtp, 0);
- mappedVersionsAvailable.put( key, val );
+ synchronized(mappedVersionsAvailableLock) {
+ mappedVersionsAvailable.put( key, val );
+ }
}
protected static int compose8bit(int one, int two, int three, int four) {
diff --git a/src/jogl/classes/javax/media/opengl/GLProfile.java b/src/jogl/classes/javax/media/opengl/GLProfile.java
index 233bebcb4..102a97a33 100644
--- a/src/jogl/classes/javax/media/opengl/GLProfile.java
+++ b/src/jogl/classes/javax/media/opengl/GLProfile.java
@@ -47,7 +47,6 @@ import com.jogamp.opengl.impl.DesktopGLDynamicLookupHelper;
import java.util.HashMap;
import java.util.Iterator;
import java.security.*;
-import java.util.ArrayList;
import javax.media.opengl.fixedfunc.GLPointerFunc;
import javax.media.nativewindow.NativeWindowFactory;
@@ -917,10 +916,6 @@ public class GLProfile {
JVMUtil.initSingleton();
}
- // The intersection between desktop OpenGL and the union of the OpenGL ES profiles
- // This is here only to avoid having separate GL2ES1Impl and GL2ES2Impl classes
- private static final String GL2ES12 = "GL2ES12";
-
private static /*final*/ boolean isAWTAvailable;
private static /*final*/ boolean hasGL234Impl;
@@ -929,7 +924,6 @@ public class GLProfile {
private static /*final*/ boolean hasGL3bcImpl;
private static /*final*/ boolean hasGL3Impl;
private static /*final*/ boolean hasGL2Impl;
- private static /*final*/ boolean hasGL2ES12Impl;
private static /*final*/ boolean hasGLES2Impl;
private static /*final*/ boolean hasGLES1Impl;
@@ -964,11 +958,9 @@ public class GLProfile {
hasGL3bcImpl = hasGL234Impl;
hasGL3Impl = hasGL234Impl;
hasGL2Impl = hasGL234Impl;
- hasGL2ES12Impl = ReflectionUtil.isClassAvailable("com.jogamp.opengl.impl.gl2es12.GL2ES12Impl", classloader);
mappedProfiles = computeProfileMap();
boolean hasDesktopGL = false;
- boolean hasDesktopGLES12 = false;
boolean hasNativeOSFactory = false;
Throwable t;
@@ -989,7 +981,6 @@ public class GLProfile {
DesktopGLDynamicLookupHelper glLookupHelper = (DesktopGLDynamicLookupHelper) factory.getGLDynamicLookupHelper(0);
if(null!=glLookupHelper) {
hasDesktopGL = glLookupHelper.hasGLBinding();
- hasDesktopGLES12 = glLookupHelper.hasGLES12Binding();
}
}
} catch (LinkageError le) {
@@ -1021,7 +1012,6 @@ public class GLProfile {
hasGL4Impl = false;
hasGL3bcImpl = false;
hasGL3Impl = false;
- hasGL2ES12Impl = false;
hasGL2Impl = false;
} else {
hasGL4bcImpl = hasGL4bcImpl && GLContext.isGL4bcAvailable();
@@ -1029,7 +1019,6 @@ public class GLProfile {
hasGL3bcImpl = hasGL3bcImpl && GLContext.isGL3bcAvailable();
hasGL3Impl = hasGL3Impl && GLContext.isGL3Available();
hasGL2Impl = hasGL2Impl && GLContext.isGL2Available();
- hasGL2ES12Impl = hasGL2ES12Impl && GLContext.isGL2Available();
}
if ( ReflectionUtil.isClassAvailable("com.jogamp.opengl.impl.egl.EGLDrawableFactory", classloader) ) {
@@ -1075,7 +1064,6 @@ public class GLProfile {
System.err.println("GLProfile.init isAWTAvailable "+isAWTAvailable);
System.err.println("GLProfile.init hasNativeOSFactory "+hasNativeOSFactory);
System.err.println("GLProfile.init hasDesktopGL "+hasDesktopGL);
- System.err.println("GLProfile.init hasDesktopGLES12 "+hasDesktopGLES12);
System.err.println("GLProfile.init hasGL234Impl "+hasGL234Impl);
System.err.println("GLProfile.init "+glAvailabilityToString());
}
@@ -1165,8 +1153,6 @@ public class GLProfile {
GL3.equals(profileImpl) ||
GL2.equals(profileImpl) ) {
return "com.jogamp.opengl.impl.gl4.GL4bc";
- } else if(GL2ES12.equals(profileImpl)) {
- return "com.jogamp.opengl.impl.gl2es12.GL2ES12";
} else if(GLES1.equals(profileImpl) || GL2ES1.equals(profileImpl)) {
return "com.jogamp.opengl.impl.es1.GLES1";
} else if(GLES2.equals(profileImpl) || GL2ES2.equals(profileImpl)) {
@@ -1181,9 +1167,7 @@ public class GLProfile {
*/
private static String computeProfileImpl(String profile) {
if (GL2ES1.equals(profile)) {
- if(hasGL2ES12Impl) {
- return GL2ES12;
- } else if(hasGL2Impl) {
+ if(hasGL2Impl) {
return GL2;
} else if(hasGL3bcImpl) {
return GL3bc;
@@ -1193,9 +1177,7 @@ public class GLProfile {
return GLES1;
}
} else if (GL2ES2.equals(profile)) {
- if(hasGL2ES12Impl) {
- return GL2ES12;
- } else if(hasGL2Impl) {
+ if(hasGL2Impl) {
return GL2;
} else if(hasGL3Impl) {
return GL3;
diff --git a/src/junit/com/jogamp/test/junit/jogl/acore/TestGLProfile01NEWT.java b/src/junit/com/jogamp/test/junit/jogl/acore/TestGLProfile01NEWT.java
index b42fce9bf..e6988582c 100644
--- a/src/junit/com/jogamp/test/junit/jogl/acore/TestGLProfile01NEWT.java
+++ b/src/junit/com/jogamp/test/junit/jogl/acore/TestGLProfile01NEWT.java
@@ -154,17 +154,7 @@ public class TestGLProfile01NEWT extends UITestCase {
public static void main(String args[]) throws IOException {
String tstname = TestGLProfile01NEWT.class.getName();
- org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(new String[] {
- tstname,
- "filtertrace=true",
- "haltOnError=false",
- "haltOnFailure=false",
- "showoutput=true",
- "outputtoformatters=true",
- "logfailedtests=true",
- "logtestlistenerevents=true",
- "formatter=org.apache.tools.ant.taskdefs.optional.junit.PlainJUnitResultFormatter",
- "formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,TEST-"+tstname+".xml" } );
+ org.junit.runner.JUnitCore.main(tstname);
}
}