From 2dce639c479f820d1a1e701f5eddffc4b02f5e0f Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Thu, 7 Nov 2013 08:36:46 +0100
Subject: Bug 890 - Fix GLES3 Profile Mapping, i.e. GL2ES2 queries and
 mappings; Validate isGLES*() usage and definition ; Add and use
 ShaderCode.createExtensionDirective(..)

- Fix GLES3 Profile Mapping, i.e. GL2ES2 queries and mappings
  - GLProfile: Add GL2ES2 -> ES3 mapping
  - EGLContext: Reuqest major '3' for ES3
  - EGLGLCapabilities/EGLGraphicsConfiguration: Consider EGLExt.EGL_OPENGL_ES3_BIT_KHR

- Validate isGLES*() usage and definition
  - Fix BuildComposablePipeline's isGLES() code

  - For GLSL related queries use isGLES() instead of isGLES2(),
    which would exclude ES3

- Add and use ShaderCode.createExtensionDirective(..)
  - Supporting creating GLSL extension directives while reusing strings from GLExtensions

- Minor cleanup of GLContextImpl.setGLFuncAvail(..)
---
 src/jogl/classes/jogamp/opengl/egl/EGLContext.java | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

(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 903a4c461..b2f06dce6 100644
--- a/src/jogl/classes/jogamp/opengl/egl/EGLContext.java
+++ b/src/jogl/classes/jogamp/opengl/egl/EGLContext.java
@@ -135,13 +135,7 @@ public class EGLContext extends GLContextImpl {
 
     @Override
     protected void destroyImpl() throws GLException {
-      if (!EGL.eglDestroyContext(drawable.getNativeSurface().getDisplayHandle(), contextHandle)) {
-          final int eglError = EGL.eglGetError();
-          if(EGL.EGL_SUCCESS != eglError) { /* oops, Mesa EGL impl. may return false, but has no EGL error */
-              throw new GLException("Error destroying OpenGL context " + toHexString(contextHandle) +
-                                    ": error code " + toHexString(eglError));
-          }
-      }
+        destroyContextARBImpl(contextHandle);
     }
 
     @Override
@@ -151,7 +145,13 @@ public class EGLContext extends GLContextImpl {
 
     @Override
     protected void destroyContextARBImpl(long _context) {
-        // FIXME
+        if (!EGL.eglDestroyContext(drawable.getNativeSurface().getDisplayHandle(), _context)) {
+            final int eglError = EGL.eglGetError();
+            if(EGL.EGL_SUCCESS != eglError) { /* oops, Mesa EGL impl. may return false, but has no EGL error */
+                throw new GLException("Error destroying OpenGL context " + toHexString(_context) +
+                        ": error code " + toHexString(eglError));
+            }
+        }
     }
 
     @Override
@@ -180,12 +180,14 @@ public class EGLContext extends GLContextImpl {
             }
         }
 
+        // Cannot check extension 'EGL_KHR_create_context' before having one current!
+
         final IntBuffer contextAttrsNIO;
         final int contextVersionReq, contextVersionAttr;
         {
             if ( glProfile.usesNativeGLES3() ) {
                 contextVersionReq = 3;
-                contextVersionAttr = 2;
+                contextVersionAttr = 3;
             } else if ( glProfile.usesNativeGLES2() ) {
                 contextVersionReq = 2;
                 contextVersionAttr = 2;
@@ -195,6 +197,7 @@ public class EGLContext extends GLContextImpl {
             } else {
                 throw new GLException("Error creating OpenGL context - invalid GLProfile: "+glProfile);
             }
+            // EGLExt.EGL_CONTEXT_MAJOR_VERSION_KHR == EGL.EGL_CONTEXT_CLIENT_VERSION
             final int[] contextAttrs = new int[] { EGL.EGL_CONTEXT_CLIENT_VERSION, contextVersionAttr, EGL.EGL_NONE };
             contextAttrsNIO = Buffers.newDirectIntBuffer(contextAttrs);
         }
-- 
cgit v1.2.3