aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/jogl/classes/javax/media/opengl/GLContext.java6
-rw-r--r--src/jogl/classes/javax/media/opengl/GLProfile.java60
2 files changed, 48 insertions, 18 deletions
diff --git a/src/jogl/classes/javax/media/opengl/GLContext.java b/src/jogl/classes/javax/media/opengl/GLContext.java
index f76f2b664..72073deef 100644
--- a/src/jogl/classes/javax/media/opengl/GLContext.java
+++ b/src/jogl/classes/javax/media/opengl/GLContext.java
@@ -602,9 +602,9 @@ public abstract class GLContext {
deviceVersionsAvailableSet.add(devKey);
if (DEBUG0) {
String msg = getThreadName() + ": !!! createContextARB: SET mappedVersionsAvailableSet "+devKey;
- Throwable t = new Throwable(msg);
- t.printStackTrace();
- // System.err.println(msg);
+ // Throwable t = new Throwable(msg);
+ // t.printStackTrace();
+ System.err.println(msg);
}
}
}
diff --git a/src/jogl/classes/javax/media/opengl/GLProfile.java b/src/jogl/classes/javax/media/opengl/GLProfile.java
index 3bccc3b85..9c8d44af8 100644
--- a/src/jogl/classes/javax/media/opengl/GLProfile.java
+++ b/src/jogl/classes/javax/media/opengl/GLProfile.java
@@ -423,6 +423,17 @@ public class GLProfile {
*/
public static final String[] GL_PROFILE_LIST_GL2ES1 = new String[] { GL2ES1, GL2, GL3bc, GL4bc, GLES1 };
+ /**
+ * All GLES Profiles in the order of default detection.
+ *
+ * <ul>
+ * <li> GLES2
+ * <li> GLES1
+ * </ul>
+ *
+ */
+ public static final String[] GL_PROFILE_LIST_GLES = new String[] { GLES2, GLES1 };
+
/** Returns a default GLProfile object, reflecting the best for the running platform.
* It selects the first of the set {@link GLProfile#GL_PROFILE_LIST_ALL}
* @see #GL_PROFILE_LIST_ALL
@@ -1174,8 +1185,8 @@ public class GLProfile {
}
}
- boolean addedAnyProfile = initProfilesForDevice(defaultDesktopDevice);
- addedAnyProfile = addedAnyProfile || initProfilesForDevice(defaultEGLDevice);
+ boolean addedAnyProfile = initProfilesForDevice(defaultDesktopDevice) ||
+ initProfilesForDevice(defaultEGLDevice);
if(DEBUG) {
System.err.println("GLProfile.init isAWTAvailable "+isAWTAvailable);
@@ -1212,7 +1223,8 @@ public class GLProfile {
return null != GLProfile.getDefault(device);
}
- boolean addedAnyProfile = false;
+ boolean addedDesktopProfile = false;
+ boolean addedEGLProfile = false;
if( hasDesktopGL && desktopFactory.getIsDeviceCompatible(device)) {
// 1st pretend we have all Desktop and EGL profiles ..
@@ -1232,11 +1244,9 @@ public class GLProfile {
1, 5, GLContext.CTX_PROFILE_COMPAT|GLContext.CTX_OPTION_ANY);
}
computeProfileMap(device, false /* desktopCtxUndef*/, false /* eglCtxUndef */);
- addedAnyProfile = null != GLProfile.getDefault(device);
- } else {
- if(DEBUG) {
- System.err.println("GLProfile: DesktopFactory - Device is not available: "+device.getConnection());
- }
+ addedDesktopProfile = null != GLProfile.getDefault(device);
+ } else if(DEBUG) {
+ System.err.println("GLProfile: DesktopFactory - Device is not available: "+device.getConnection());
}
if( null!=eglFactory && ( hasGLES2Impl || hasGLES1Impl ) && eglFactory.getIsDeviceCompatible(device)) {
@@ -1264,22 +1274,42 @@ public class GLProfile {
1, 0, GLContext.CTX_PROFILE_ES|GLContext.CTX_OPTION_ANY);
}
computeProfileMap(device, false /* desktopCtxUndef*/, false /* eglCtxUndef */);
- addedAnyProfile = addedAnyProfile || null != GLProfile.getDefault(device);
- } else {
- if(DEBUG) {
- System.err.println("GLProfile: EGLFactory - Device is not available: "+device.getConnection());
- }
+ addedEGLProfile = null != GLProfile.get(device, GL_PROFILE_LIST_GLES);
+ } else if(DEBUG) {
+ System.err.println("GLProfile: EGLFactory - Device is not available: "+device.getConnection());
}
+
if(!GLContext.getAvailableGLVersionsSet(device)) {
GLContext.setAvailableGLVersionsSet(device);
}
if (DEBUG) {
- System.err.println("GLProfile.initProfilesForDevice: "+device.getConnection()+": added profile(s): "+addedAnyProfile);
+ System.err.println("GLProfile.initProfilesForDevice: "+device.getConnection()+": added profile(s): desktop "+addedDesktopProfile+", egl "+addedEGLProfile);
System.err.println("GLProfile.initProfilesForDevice: "+device.getConnection()+": "+glAvailabilityToString(device));
+ if(addedDesktopProfile) {
+ dumpGLInfo(desktopFactory, device);
+ }
+ if(addedEGLProfile) {
+ dumpGLInfo(eglFactory, device);
+ }
}
- return addedAnyProfile;
+ return addedDesktopProfile || addedEGLProfile;
+ }
+
+ private static void dumpGLInfo(GLDrawableFactoryImpl factory, AbstractGraphicsDevice device) {
+ GLContext ctx = factory.getOrCreateSharedContext(device);
+ AbstractGraphicsDevice nativeDevice = ctx.getGLDrawable().getNativeSurface()
+ .getGraphicsConfiguration().getNativeGraphicsConfiguration()
+ .getScreen().getDevice();
+ nativeDevice.unlock();
+ try {
+ ctx.makeCurrent();
+ System.err.println(JoglVersion.getGLInfo(ctx.getGL(), null));
+ ctx.release();
+ } finally {
+ nativeDevice.unlock();
+ }
}
public static AbstractGraphicsDevice getDefaultDevice() {