From 27e81bf4d851ce2b81763920b4d1981c6a44b42a Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Tue, 21 Aug 2012 15:51:55 +0200
Subject: Fix EGLDrawableFactory ES1/ES2 detection for !pbuffer ; Misc
 robustness changes for GLDrawableFactory ..

- EGLDrawableFactory ES1/ES2 detection for !pbuffer
   - isEGLContextAvailable(..) -> mapAvailableEGLESConfig(..)
   - handle case where no pbuffer configuration is available (nokia n9 meego ..).
     in such case, assume availability if onscreen profile is avail.

- EGLDrawableFactory.getOrCreateEGLSharedResource(..)
   - avoid double creation attempt (similar to SharedResourceRunner)

- EGLGraphicsConfiguration.EGLConfig2Capabilities(..) respect EGL.EGL_CONFIG_CAVEAT's EGL.EGL_SLOW_CONFIG
   - if EGL.EGL_SLOW_CONFIG -> no hw accel.

- Fix GLContext.getRequestMajorAndCompat(..): Proper handling of ES1 and ES2

- Add abstract GLDrawableFactory.isComplete(): Only if true use the factory for 'getFactory(..)' avoid using incomplete ones.
---
 src/jogl/classes/jogamp/opengl/egl/EGLContext.java | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

(limited to 'src/jogl/classes/jogamp/opengl/egl/EGLContext.java')

diff --git a/src/jogl/classes/jogamp/opengl/egl/EGLContext.java b/src/jogl/classes/jogamp/opengl/egl/EGLContext.java
index 919f92c02..03d0d650f 100644
--- a/src/jogl/classes/jogamp/opengl/egl/EGLContext.java
+++ b/src/jogl/classes/jogamp/opengl/egl/EGLContext.java
@@ -42,6 +42,7 @@ import java.util.Map;
 
 import javax.media.nativewindow.AbstractGraphicsConfiguration;
 import javax.media.nativewindow.AbstractGraphicsDevice;
+import javax.media.opengl.GLCapabilitiesImmutable;
 import javax.media.opengl.GLContext;
 import javax.media.opengl.GLException;
 import javax.media.opengl.GLProfile;
@@ -303,8 +304,19 @@ public abstract class EGLContext extends GLContextImpl {
      */
     protected void mapCurrentAvailableGLVersion(AbstractGraphicsDevice device) {
         mapCurrentAvailableGLVersionImpl(device, ctxMajorVersion, ctxMinorVersion, ctxOptions);
+    }        
+    protected static void mapStaticGLESVersion(AbstractGraphicsDevice device, GLCapabilitiesImmutable caps) {
+        final GLProfile glp = caps.getGLProfile();
+        final int[] reqMajorCTP = new int[2];
+        GLContext.getRequestMajorAndCompat(glp, reqMajorCTP);
+        if(glp.isGLES() && reqMajorCTP[0] >= 2) {
+            reqMajorCTP[1] |= GLContext.CTX_IMPL_ES2_COMPAT | GLContext.CTX_IMPL_FBO ;
+        }
+        if(!caps.getHardwareAccelerated()) {
+            reqMajorCTP[1] |= GLContext.CTX_IMPL_ACCEL_SOFT;
+        }
+        mapCurrentAvailableGLVersionImpl(device, reqMajorCTP[0], 0, reqMajorCTP[1]);
     }
-        
     protected static void mapStaticGLESVersion(AbstractGraphicsDevice device, int major) {
         int ctp = ( 2 == major ) ? ( GLContext.CTX_PROFILE_ES | GLContext.CTX_IMPL_ES2_COMPAT | GLContext.CTX_IMPL_FBO ) : ( GLContext.CTX_PROFILE_ES );  
         mapCurrentAvailableGLVersionImpl(device, major, 0, ctp);
-- 
cgit v1.2.3