From 3a0d7703da32e9a5ddf08a334f18588a78038d88 Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Mon, 15 Jul 2013 13:39:22 +0200
Subject: Add Support for GL 4.3 (Bug 716) and ES 3.0 (Bug 717)

ES3 / GL4.3:

- Update all EGL, GLX, WGL and GL (desktop and mobile) khronos headers to latest version.
  - GL3/gl3* -> GL/glcorearb*

  - Explicitly preserve ES2_compatibility and ES3_compatibility in header,
    most extension grouping was removed in new headers.

  - Always load all GLHeader to ensure proper extension association across all profiles.

  - Unified method signatures

  - Added GL_EXT_map_buffer_range to core

  - Using common 'glMapBufferImpl(..)' for all glMapBuffer(..) and glMapBufferRange(..) impl.

  - Init necessary fields of GL instances via 'finalizeInit()' called by reflection, if exist.
    This allows removing initialization checks, i.e. for all buffer validations.

- BuildStaticGLInfo: Can handle new GL header structure, i.e. one CPP extenstion block incl. define + funcs.

- GLJavaMethodBindingEmitter: Simply print the

- No GL duplication due to new intermediate interfaces, see below

- OO lineare inheritance (Added GL2ES3, GL3ES3 and GL4ES3 intemediates):
  GLBase - GL - GL2ES2 - GLES2
  GLBase - GL - GL2ES2 - GL2GL3 - [ GL2, GL3 ]
  GLBase - GL - GL2ES2 - GL2ES3 - GL3ES3 - [ GL3 ]
  GLBase - GL - GL2ES2 - GL2ES3 - GL3ES3 - GL4ES3 - [ GLES3, GL4, .. ]

- Expose 'usable' intermediate interfaces GL3ES3 and GL4ES3 in GLBase/GLProfile/GLContext
  via is*() and get*().

- GLContext*:
  - isGL3core() is true if [ GL4, GL3, GLES3 ] (added GLES3)

  - Added ctxProfile argument to allow handling ES versions:
    - getMaxMajor(..), getMaxMinor(..), isValidGLVersion(..) and decrementGLVersion(..)
    - mapGLVersions(..) prepared for ES ARB/KHR validation

  - EGLContext checks ES3 (via old ctx's GL_VERSION)

- ExtensionAvailabilityCache adds GL_ES_Version_X_Y for ES.

- Prelim tests w/ Mesa 9.1.3
  GL Version     3.0 (ES profile, ES2 compat, ES3 compat, FBO, hardware) - OpenGL ES 3.0 Mesa 9.1.3 [GL 3.0.0, vendor 9.1.3 (Mesa 9.1.3)]

- TODO:
  - Use KHR_create_context in EGLContext.createContextARBImpl(..)
  - More tests (Mobile, ..)

+++

Misc:

- GLContext*:
  - Complete glAllocateMemoryNV w/ glFreeMemoryNV.
---
 make/config/jogl/gl-impl-CustomCCode-gles1.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

(limited to 'make/config/jogl/gl-impl-CustomCCode-gles1.c')

diff --git a/make/config/jogl/gl-impl-CustomCCode-gles1.c b/make/config/jogl/gl-impl-CustomCCode-gles1.c
index 0155c13f8..88cfe4418 100644
--- a/make/config/jogl/gl-impl-CustomCCode-gles1.c
+++ b/make/config/jogl/gl-impl-CustomCCode-gles1.c
@@ -14,6 +14,22 @@ Java_jogamp_opengl_es1_GLES1Impl_dispatch_1glMapBuffer(JNIEnv *env, jobject _unu
   return (jlong) (intptr_t) _res;
 }
 
+/*   Java->C glue code:
+ *   Java package: jogamp.opengl.es1.GLES1Impl
+ *    Java method: java.nio.ByteBuffer dispatch_glMapBufferRange(int target, long offset, long length, int access)
+ *     C function: void *  glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+ */
+JNIEXPORT jlong JNICALL
+Java_jogamp_opengl_es1_GLES1Impl_dispatch_1glMapBufferRange(JNIEnv *env, jobject _unused, jint target, jlong offset, jlong length, jint access, jlong procAddress) {
+  typedef void *  (GL_APIENTRY*_local_PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+  _local_PFNGLMAPBUFFERRANGEPROC ptr_glMapBufferRange;
+  void *  _res;
+  ptr_glMapBufferRange = (_local_PFNGLMAPBUFFERRANGEPROC) (intptr_t) procAddress;
+  assert(ptr_glMapBufferRange != NULL);
+  _res = (* ptr_glMapBufferRange) ((GLenum) target, (GLintptr) offset, (GLsizeiptr) length, (GLbitfield) access);
+  return (jlong) (intptr_t) _res;
+}
+
 /*   Java->C glue code:
  *   Java package: jogamp.opengl.es1.GLES1Impl
  *    Java method: ByteBuffer newDirectByteBuffer(long addr, long capacity);
-- 
cgit v1.2.3