From 03ca640b6842c6070bcc3fb76e1c3464ea5c44a1 Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Sun, 31 Jul 2011 20:10:16 +0200
Subject: EGL: Query EGL_RENDERABLE_TYPE, store it in EGLGLCapabilities and
 test w/ GLProfile compatibility

EGLConfig's EGL_RENDERABLE_TYPE determines ES1, ES2 or VG usage (bitfield).
We have to store and compare it's value w/ the desired GLProfile to choose a valid one,
or just store it.
---
 .../opengl/egl/EGLGraphicsConfiguration.java       | 23 ++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

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

diff --git a/src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfiguration.java b/src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfiguration.java
index 4d8f2ac3e..2fad75b74 100644
--- a/src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfiguration.java
+++ b/src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfiguration.java
@@ -134,7 +134,7 @@ public class EGLGraphicsConfiguration extends DefaultGraphicsConfiguration imple
     }
 
     public static EGLGLCapabilities EGLConfig2Capabilities(GLProfile glp, long display, long config,
-                                                                 boolean relaxed, boolean onscreen, boolean usePBuffer) {
+                                                           boolean relaxed, boolean onscreen, boolean usePBuffer) {
         ArrayList bucket = new ArrayList();
         final int winattrmask = GLGraphicsConfigurationUtil.getWinAttributeBits(onscreen, usePBuffer);
         if( EGLConfig2Capabilities(bucket, glp, display, config, winattrmask) ) {
@@ -165,9 +165,24 @@ public class EGLGraphicsConfiguration extends DefaultGraphicsConfiguration imple
             }
             return false;
         }
-        GLCapabilities caps = new EGLGLCapabilities(config, val[0], glp);
-
-        // Read the actual configuration into the choosen caps
+        
+        if(!EGL.eglGetConfigAttrib(display, config, EGL.EGL_RENDERABLE_TYPE, val, 0)) {
+            if(DEBUG) {
+                System.err.println("EGL couldn't retrieve EGL_RENDERABLE_TYPE for config "+toHexString(config)+", error "+toHexString(EGL.eglGetError()));
+            }
+            return false;
+        }
+        EGLGLCapabilities caps = null;        
+        try {
+            caps = new EGLGLCapabilities(config, val[0], glp, val[0]);
+        } catch (GLException gle) {
+            if(DEBUG) {
+                System.err.println("config "+toHexString(config)+": "+gle);
+            }
+            return false;
+        }
+        
+        // Read the actual configuration into the chosen caps
         if(EGL.eglGetConfigAttrib(display, config, EGL.EGL_RED_SIZE, val, 0)) {
             caps.setRedBits(val[0]);
         }
-- 
cgit v1.2.3