From 848df0f3b4d2cd27e03fc25c424759b870c6514b Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Thu, 22 Apr 2010 20:39:36 +0200
Subject: Bring back GL2ES12 impl. for GL2ES1 and GL2ES2 desktop j2se and cdc.
 Fixing profiles accordingly.

---
 make/build-jogl.xml                                |  80 +++-
 make/config/jogl/gl-gl2es12.cfg                    |  90 +++++
 make/config/jogl/gl-impl-CustomCCode-gl2es12.c     |  24 ++
 .../jogl/gl-impl-CustomJavaCode-gl2es12.java       | 414 +++++++++++++++++++++
 make/config/jogl/obsolete/gl-gl2es12.cfg           |  90 -----
 .../config/jogl/obsolete/gl-impl-CustomCCode-gl2.c |  24 --
 .../jogl/obsolete/gl-impl-CustomCCode-gl2es12.c    |  24 --
 .../config/jogl/obsolete/gl-impl-CustomCCode-gl3.c |  24 --
 .../jogl/obsolete/gl-impl-CustomJavaCode-gl2.java  | 385 -------------------
 .../obsolete/gl-impl-CustomJavaCode-gl2es12.java   | 353 ------------------
 make/lstjars.sh                                    |   6 +-
 make/make.jogl.all.linux-x86_64.sh                 |   1 +
 make/make.jogl.all.win64.bat                       |  17 +
 13 files changed, 623 insertions(+), 909 deletions(-)
 create mode 100644 make/config/jogl/gl-gl2es12.cfg
 create mode 100644 make/config/jogl/gl-impl-CustomCCode-gl2es12.c
 create mode 100644 make/config/jogl/gl-impl-CustomJavaCode-gl2es12.java
 delete mode 100644 make/config/jogl/obsolete/gl-gl2es12.cfg
 delete mode 100644 make/config/jogl/obsolete/gl-impl-CustomCCode-gl2.c
 delete mode 100644 make/config/jogl/obsolete/gl-impl-CustomCCode-gl2es12.c
 delete mode 100644 make/config/jogl/obsolete/gl-impl-CustomCCode-gl3.c
 delete mode 100644 make/config/jogl/obsolete/gl-impl-CustomJavaCode-gl2.java
 delete mode 100644 make/config/jogl/obsolete/gl-impl-CustomJavaCode-gl2es12.java
 create mode 100644 make/make.jogl.all.win64.bat

(limited to 'make')

diff --git a/make/build-jogl.xml b/make/build-jogl.xml
index 1db63812e..760200398 100644
--- a/make/build-jogl.xml
+++ b/make/build-jogl.xml
@@ -104,6 +104,9 @@
         <property name="java.part.cgl"
                   value="com/jogamp/opengl/impl/macosx/cgl/*"/>
 
+        <property name="java.part.gl2es12"
+                  value="com/jogamp/opengl/impl/gl2es12/**"/>
+
         <property name="java.part.gldesktop"
                   value="com/jogamp/opengl/impl/**/gl2/** com/jogamp/opengl/impl/**/gl3/** com/jogamp/opengl/impl/**/gl4/**"/>
 
@@ -517,6 +520,18 @@
         </gluegen>
     </target>
 
+    <target name="java.generate.gl2es12">
+        <echo message="Generating GL2ES12 implementation" />
+        <antcall target="java.generate.copy2temp" inheritRefs="true" />
+        <gluegen src="${stub.includes.opengl}/gl2es12.c" 
+                 outputRootDir="${build.jogl}"
+                 config="${config.jogl}/gl-gl2es12.cfg"
+                 includeRefid="stub.includes.fileset.all.gldesktop"
+                 emitter="com.sun.gluegen.opengl.GLEmitter">
+            <classpath refid="gluegen.classpath" />
+        </gluegen>
+    </target>  
+
     <target name="java.generate.gles1">
         <echo message="Generating GLES1 interface and implementation" />
         <antcall target="java.generate.copy2temp" inheritRefs="true" />
@@ -541,7 +556,7 @@
         </gluegen>
     </target>
 
-    <target name="java.generate.gl.all" depends="java.generate.gl_if, java.generate.gl2_es1_if, java.generate.gl2_es2_if, java.generate.gl2_gl3_if, java.generate.gl2, java.generate.gl3, java.generate.gl3bc, java.generate.gl4, java.generate.gl4bc, java.generate.gles1, java.generate.gles2"/>
+    <target name="java.generate.gl.all" depends="java.generate.gl_if, java.generate.gl2_es1_if, java.generate.gl2_es2_if, java.generate.gl2_gl3_if, java.generate.gl2, java.generate.gl3, java.generate.gl3bc, java.generate.gl4, java.generate.gl4bc, java.generate.gl2es12, java.generate.gles1, java.generate.gles2"/>
 
     <!-- target name="java.generate.gl.nsig" if="gluegen.nsig">
         <echo message="Generating GL interface and implementation" />
@@ -778,6 +793,21 @@
 
     </target>        
 
+    <target name="java.generate.composable.pipeline.check.gl2es12">
+        <!-- Blow away the DebugGL*.java and TraceGL*.java sources if GL*.class has changed
+             (the uptodate element doesn't support arbitrary source and destination files) -->
+        <dependset>
+            <srcfilelist dir="${classes}/javax/media/opengl" files="GL2ES12.class" />
+            <targetfileset dir="${src.generated.java}/javax/media/opengl"
+                           includes="DebugGL2ES12.java,TraceGL2ES12.java" />
+        </dependset>
+                           
+        <!-- Now choose one of the two to test to see if we have to regenerate -->
+        <uptodate property="java.generate.composable.pipeline.skip.gl2es12"
+                  srcfile="${classes}/javax/media/opengl/GL2ES12.class"
+                  targetfile="${src.generated.java}/javax/media/opengl/DebugGL2ES12.java" />
+    </target>   
+
     <target name="java.generate.composable.pipeline.check.gl2">
         <!-- Blow away the DebugGL*.java and TraceGL*.java sources if GL*.class has changed
              (the uptodate element doesn't support arbitrary source and destination files) -->
@@ -1286,6 +1316,22 @@
           <include name="${rootrel.generated.c.jogl}/Windows/WGL*.c" if="isWindows"/>
         </patternset>
 
+        <patternset id="c.src.files.jogl.gl2es12">
+          <include name="${rootrel.src.c}/macosx/MacOSXCustomCGLCode.c" if="isOSX"/>
+          <include name="${rootrel.src.c}/macosx/MacOSXWindowSystemInterface.m" if="isOSX"/>
+          <include name="${rootrel.src.c}/macosx/ContextUpdater.m" if="isOSX"/>
+          <include name="${rootrel.src.c}/GLXGetProcAddressARB.c" if="isX11"/>
+          <include name="${rootrel.src.c.openmax}/omx_tool.c"  if="useOpenMAX"/>
+          <include name="${rootrel.src.c.openmax}/com_jogamp_openmax_OMXInstance.c"  if="useOpenMAX"/>
+
+          <include name="${rootrel.generated.c.jogl}/gl2es12/GL2ES12Impl_JNI.c"/>
+          <!--include name="${rootrel.generated.c.jogl}/GLU_JNI.c"/ EMPTY -->
+          <!--include name="${rootrel.generated.c.jogl}/gl2es12/GLUgl2es12_JNI.c"/ SKIPPED -->
+          <include name="${rootrel.generated.c.jogl}/X11/GLX*.c" if="isX11"/>
+          <include name="${rootrel.generated.c.jogl}/MacOSX/CGL*.c" if="isOSX"/>
+          <include name="${rootrel.generated.c.jogl}/Windows/WGL*.c" if="isWindows"/>
+        </patternset>
+
         <patternset id="c.src.files.jogl.es2">
           <include name="${rootrel.src.c}/GLXGetProcAddressARB.c" if="isX11"/>
           <include name="${rootrel.src.c.openmax}/omx_tool.c"  if="useOpenMAX"/>
@@ -1392,6 +1438,13 @@
                linker.cfg.id="${linker.cfg.id.gl2}"/>
     </target>
 
+    <target name="c.build.jogl.gl2es12" unless="setup.nodesktop">
+      <c.build c.compiler.src.files="c.src.files.jogl.gl2es12"
+               output.lib.name="jogl_gl2es12"
+               compiler.cfg.id="${compiler.cfg.id}"
+               linker.cfg.id="${linker.cfg.id.gl2}"/>
+    </target>
+
     <target name="c.build.jogl.es2">
       <c.build c.compiler.src.files="c.src.files.jogl.es2"
                output.lib.name="jogl_es2"
@@ -1421,11 +1474,12 @@
       <!-- exec mt, the Microsoft Manifest Tool, to include DLL manifests in order to resolve the location of msvcr80.dll -->
       <msvc.manifest objdir="${obj.jogl}" dllname="jogl_es1" />
       <msvc.manifest objdir="${obj.jogl}" dllname="jogl_es2" />
+      <msvc.manifest objdir="${obj.jogl}" dllname="jogl_gl2es12" />
       <msvc.manifest objdir="${obj.jogl}" dllname="jogl_desktop" />
       <antcall target="c.manifest.cg" inheritRefs="true" />
     </target>
 
-    <target name="c.build.jogl" depends="c.configure,c.build.jogl.prepare,c.build.jogl.desktop,c.build.jogl.es2,c.build.jogl.es1,c.build.jogl.cg">
+    <target name="c.build.jogl" depends="c.configure,c.build.jogl.prepare,c.build.jogl.gl2es12,c.build.jogl.desktop,c.build.jogl.es2,c.build.jogl.es1,c.build.jogl.cg">
       <antcall target="gluegen.cpptasks.striplibs" inheritRefs="true">
           <param name="libdir" value="${obj.jogl}"/>
       </antcall>
@@ -1441,6 +1495,7 @@
         <fileset dir="${obj.jogl}">
           <include name="*_es1.${native.library.suffix-cdc}" />
           <include name="*_es2.${native.library.suffix-cdc}" />
+          <include name="*_gl2es12.${native.library.suffix-cdc}" />
         </fileset>
       </jar>
     </target>
@@ -1556,7 +1611,15 @@
         </jar>
     </target>
 
-    <target name="build-jars-es-cdc" depends="setup-manifestfile-cdc" unless="setup.noCDC">
+    <target name="build-jars-es-desktop-cdc" depends="setup-manifestfile-cdc,build-jars-os-desktop-cdc" unless="setup.nodesktop">
+        <jar manifest="${build.jogl}/tempversion-cdc" destfile="${jogl.gl2es12.cdc.jar}" filesonly="true">
+            <fileset dir="${classes-cdc}"
+                     includes="${java.part.gl2es12}, ${java.part.openmax}"
+                     excludes="${java.part.glugldesktop}"/>
+        </jar>
+    </target>
+
+    <target name="build-jars-es-cdc" depends="setup-manifestfile-cdc, build-jars-es-desktop-cdc" unless="setup.noCDC">
         <jar manifest="${build.jogl}/tempversion-cdc" destfile="${jogl.egl.cdc.jar}" filesonly="true">
             <fileset dir="${classes-cdc}"
                      includes="${java.part.egl}"
@@ -1602,6 +1665,7 @@
                 <include name="${java.part.openmax}" />
                 <!-- FIXME: this is temporary until we move these classes to another workspace -->
                 <include name="com/jogamp/**" />
+                <exclude name="${java.part.gl2es12}"/>
             </fileset>
             <fileset dir="${src.java}"
                      includes="${java.part.util.fixedfuncemu.shadercode}"/>
@@ -1611,7 +1675,7 @@
         <jar manifest="${build.jogl}/tempversion" destfile="${jogl.all-noawt.jar}" filesonly="true">
             <fileset dir="${classes}"
                 includes="javax/media/opengl/** com/jogamp/gluegen/runtime/** com/jogamp/opengl/** ${java.part.openmax} com/jogamp/**"
-                excludes="${java.part.awt} ${java.part.util.awt}">
+                excludes="${java.part.awt} ${java.part.util.awt} ${java.part.gl2es12}">
             </fileset>
             <fileset dir="${src.java}"
                      includes="${java.part.util.fixedfuncemu.shadercode}"/>
@@ -1620,7 +1684,7 @@
     <target name="build-jars-all-cdc" depends="setup-manifestfile">
         <jar manifest="${build.jogl}/tempversion-cdc" destfile="${jogl.all.cdc.jar}" filesonly="true">
             <fileset dir="${classes-cdc}"
-                     includes="${java.part.core} ${java.part.egl} ${java.part.glutess} ${java.part.glumipmap} ${java.part.openmax} ${java.part.sdk} ${java.part.glx} ${java.part.cgl} ${java.part.wgl} ${java.part.es1} ${java.part.es1.dbg} ${java.part.es2} ${java.part.es2.dbg} ${java.part.util} ${java.part.util.glsl} ${java.part.util.fixedfuncemu}"
+                     includes="${java.part.core} ${java.part.egl} ${java.part.glutess} ${java.part.glumipmap} ${java.part.openmax} ${java.part.sdk} ${java.part.glx} ${java.part.cgl} ${java.part.wgl} ${java.part.es1} ${java.part.es1.dbg} ${java.part.es2} ${java.part.es2.dbg} ${java.part.gl2es12} ${java.part.util} ${java.part.util.glsl} ${java.part.util.fixedfuncemu}"
                      excludes="${java.excludes.cdcfp}"/>
             <fileset dir="${src.java}"
                      includes="${java.part.util.fixedfuncemu.shadercode}"/>
@@ -1660,7 +1724,11 @@
         <jar manifest="${build.jogl}/tempversion" destfile="${jogl.gldesktop.jar}" filesonly="true">
             <fileset dir="${classes}"
                      includes="${java.part.gldesktop}, ${java.part.openmax}"
-                     excludes="${java.part.gldesktop.dbg}, ${java.part.glugldesktop}"/>
+                     excludes="${java.part.gldesktop.dbg}, ${java.part.glugldesktop}, ${java.part.gl2es12}"/>
+        </jar>
+        <jar manifest="${build.jogl}/tempversion" destfile="${jogl.gl2es12.jar}" filesonly="true">
+            <fileset dir="${classes}" includes="${java.part.gl2es12}, ${java.part.openmax}"
+                     excludes="${java.part.glugldesktop}"/>
         </jar>
 
         <!-- misc -->
diff --git a/make/config/jogl/gl-gl2es12.cfg b/make/config/jogl/gl-gl2es12.cfg
new file mode 100644
index 000000000..3942b1419
--- /dev/null
+++ b/make/config/jogl/gl-gl2es12.cfg
@@ -0,0 +1,90 @@
+# This .cfg file is used to generate the GL interface and implementing class.
+JavaOutputDir gensrc/classes
+NativeOutputDir gensrc/native/jogl/gl2es12
+
+ExtendedInterfaceSymbolsOnly ../build-temp/gensrc/classes/javax/media/opengl/GL.java
+ExtendedInterfaceSymbolsOnly ../build-temp/gensrc/classes/javax/media/opengl/GL2ES1.java
+ExtendedInterfaceSymbolsOnly ../build-temp/gensrc/classes/javax/media/opengl/GL2ES2.java
+ExtendedInterfaceSymbolsOnly ../src/jogl/classes/javax/media/opengl/GLBase.java
+ExtendedInterfaceSymbolsOnly ../src/jogl/classes/javax/media/opengl/fixedfunc/GLMatrixFunc.java
+ExtendedInterfaceSymbolsOnly ../src/jogl/classes/javax/media/opengl/fixedfunc/GLPointerFunc.java
+ExtendedInterfaceSymbolsOnly ../src/jogl/classes/javax/media/opengl/fixedfunc/GLLightingFunc.java
+
+Style ImplOnly
+ImplPackage com.jogamp.opengl.impl.gl2es12
+ImplJavaClass GL2ES12Impl
+Implements GL2ES12Impl GLBase
+Implements GL2ES12Impl GL
+Implements GL2ES12Impl GL2ES1
+Implements GL2ES12Impl GL2ES2
+
+Include gl-common.cfg
+Include gl-common-extensions.cfg
+Include gl-desktop.cfg
+
+# Because we're manually implementing glMapBuffer but only producing
+# the implementing class, GlueGen doesn't notice that it has to emit a
+# proc address table entry for it. Force it to here.
+ForceProcAddressGen glMapBuffer
+
+# Force all of the methods to be emitted using dynamic linking so we
+# don't need to link against any emulation library on the desktop or
+# depend on the presence of an import library for a particular device
+ForceProcAddressGen __ALL__
+
+# Also force the calling conventions of the locally generated function
+# pointer typedefs for these routines to APIENTRY
+LocalProcAddressCallingConvention __ALL__ APIENTRY
+
+EmitProcAddressTable true
+ProcAddressTableClassName GL2ES12ProcAddressTable
+GetProcAddressTableExpr ((GL2ES12ProcAddressTable)_context.getGLProcAddressTable())
+
+# Pick up on-line OpenGL javadoc thanks to user cylab on javagaming.org forums
+TagNativeBinding true
+
+# There seem to be some errors in the glue code generation where we are not ignoring
+# enough routines from desktop GL in GL2ES12Impl. For now manually ignore those which
+# we know shouldn't be in there
+Ignore glGetTexImage
+Ignore glPixelStoref
+
+# Add PixelStorei StateTracker
+#
+# Add input validation to glPixelStorei to make sure that, even if we
+# are running on top of desktop OpenGL, parameters not exposed in
+# OpenGL ES can not be changed
+CustomJavaCode GL2ES12Impl private static final int params_offset = 0; // just a helper for JavaPrologue ..
+
+JavaPrologue glPixelStorei if (pname != GL_PACK_ALIGNMENT && pname != GL_UNPACK_ALIGNMENT) {
+JavaPrologue glPixelStorei     throw new GLException("Unsupported pixel store parameter name 0x" + Integer.toHexString(pname));
+JavaPrologue glPixelStorei }
+JavaPrologue glPixelStorei glStateTracker.setInt(pname, param);
+
+JavaPrologue glGetIntegerv if ( glStateTracker.getInt(pname, params, params_offset) ) { return; }
+
+CustomJavaCode GL2ES12Impl public void glFrustumf(float left, float right, float bottom, float top, float zNear, float zFar) {
+CustomJavaCode GL2ES12Impl   glFrustum((double)left, (double)right, (double)bottom, (double)top, (double)zNear, (double)zFar); }
+
+CustomJavaCode GL2ES12Impl public void glOrthof(float left, float right, float bottom, float top, float zNear, float zFar) {
+CustomJavaCode GL2ES12Impl   glOrtho((double)left, (double)right, (double)bottom, (double)top, (double)zNear, (double)zFar); }
+
+CustomJavaCode GL2ES12Impl public void glClearDepthf(float depth) {
+CustomJavaCode GL2ES12Impl   glClearDepth((double)depth); }
+
+CustomJavaCode GL2ES12Impl public void glDepthRangef(float zNear, float zFar) {
+CustomJavaCode GL2ES12Impl    glDepthRange((double)zNear, (double)zFar); }
+
+Include gl-headers.cfg
+Include ../intptr.cfg
+
+IncludeAs CustomJavaCode GL2ES12Impl gl-impl-CustomJavaCode-common.java
+IncludeAs CustomJavaCode GL2ES12Impl gl-impl-CustomJavaCode-gl2es12.java
+IncludeAs CustomJavaCode GL2ES12Impl gl-impl-CustomJavaCode-embedded.java
+IncludeAs CustomJavaCode GL2ES12Impl gl-impl-CustomJavaCode-gl2_es2.java
+IncludeAs CustomCCode gl-impl-CustomCCode-gl2es12.c
+
+Import javax.media.opengl.GLES1
+Import javax.media.opengl.GLES2
+Import com.jogamp.opengl.impl.InternalBufferUtil
+Import java.io.PrintStream
diff --git a/make/config/jogl/gl-impl-CustomCCode-gl2es12.c b/make/config/jogl/gl-impl-CustomCCode-gl2es12.c
new file mode 100644
index 000000000..07b821802
--- /dev/null
+++ b/make/config/jogl/gl-impl-CustomCCode-gl2es12.c
@@ -0,0 +1,24 @@
+/*   Java->C glue code:
+ *   Java package: com.jogamp.opengl.impl.gl2es12.GL2ES12Impl
+ *    Java method: long dispatch_glMapBuffer(int target, int access)
+ *     C function: void * glMapBuffer(GLenum target, GLenum access);
+ */
+JNIEXPORT jlong JNICALL 
+Java_com_jogamp_opengl_impl_gl2es12_GL2ES12Impl_dispatch_1glMapBuffer(JNIEnv *env, jobject _unused, jint target, jint access, jlong glProcAddress) {
+  PFNGLMAPBUFFERPROC ptr_glMapBuffer;
+  void * _res;
+  ptr_glMapBuffer = (PFNGLMAPBUFFERPROC) (intptr_t) glProcAddress;
+  assert(ptr_glMapBuffer != NULL);
+  _res = (* ptr_glMapBuffer) ((GLenum) target, (GLenum) access);
+  return (jlong) (intptr_t) _res;
+}
+
+/*   Java->C glue code:
+ *   Java package: com.jogamp.opengl.impl.gl2es12.GL2ES12Impl
+ *    Java method: ByteBuffer newDirectByteBuffer(long addr, int capacity);
+ *     C function: jobject newDirectByteBuffer(jlong addr, jint capacity);
+ */
+JNIEXPORT jobject JNICALL
+Java_com_jogamp_opengl_impl_gl2es12_GL2ES12Impl_newDirectByteBuffer(JNIEnv *env, jobject _unused, jlong addr, jint capacity) {
+  return (*env)->NewDirectByteBuffer(env, (void*) (intptr_t) addr, capacity);
+}
diff --git a/make/config/jogl/gl-impl-CustomJavaCode-gl2es12.java b/make/config/jogl/gl-impl-CustomJavaCode-gl2es12.java
new file mode 100644
index 000000000..4bc39b076
--- /dev/null
+++ b/make/config/jogl/gl-impl-CustomJavaCode-gl2es12.java
@@ -0,0 +1,414 @@
+// Tracks glBegin/glEnd calls to determine whether it is legal to
+// query Vertex Buffer Object state
+private boolean inBeginEndPair;
+
+/* FIXME: refactor dependence on Java 2D / JOGL bridge
+
+// Tracks creation and destruction of server-side OpenGL objects when
+// the Java2D/OpenGL pipeline is enabled and it is using frame buffer
+// objects (FBOs) to do its rendering
+private GLObjectTracker tracker;
+
+public void setObjectTracker(GLObjectTracker tracker) {
+  this.tracker = tracker;
+}
+
+*/
+
+public GL2ES12Impl(GLProfile glp, GLContextImpl context) {
+  this._context = context; 
+  this.bufferSizeTracker  = context.getBufferSizeTracker();
+  this.bufferStateTracker = context.getBufferStateTracker();
+  this.glStateTracker     = context.getGLStateTracker();
+  this.isGL2ES2 = glp.isGL2ES2();
+  this.glProfile = glp;
+}
+
+private boolean isGL2ES2;
+
+public final boolean isGL4bc() {
+    return false;
+}
+
+public final boolean isGL4() {
+    return false;
+}
+
+public final boolean isGL3bc() {
+    return false;
+}
+
+public final boolean isGL3() {
+    return false;
+}
+
+public final boolean isGL2() {
+    return false;
+}
+
+public final boolean isGLES1() {
+    return false;
+}
+
+public final boolean isGLES2() {
+    return false;
+}
+
+public final boolean isGLES() {
+    return false;
+}
+
+public final boolean isGL2ES1() {
+    return !isGL2ES2;
+}
+
+public final boolean isGL2ES2() {
+    return isGL2ES2;
+}
+
+public final boolean isGL2GL3() {
+    return false;
+}
+
+public final boolean hasGLSL() {
+    return isGL2ES2;
+}
+
+public final GL4bc getGL4bc() throws GLException {
+    throw new GLException("Not a GL4bc implementation");
+}
+
+public final GL4 getGL4() throws GLException {
+    throw new GLException("Not a GL4 implementation");
+}
+
+public final GL3bc getGL3bc() throws GLException {
+    throw new GLException("Not a GL3bc implementation");
+}
+
+public final GL3 getGL3() throws GLException {
+    throw new GLException("Not a GL3 implementation");
+}
+
+public final GL2 getGL2() throws GLException {
+    throw new GLException("Not a GL2 implementation");
+}
+
+public final GLES1 getGLES1() throws GLException {
+    throw new GLException("Not a GLES1 implementation");
+}
+
+public final GLES2 getGLES2() throws GLException {
+    throw new GLException("Not a GLES2 implementation");
+}
+
+public final GL2ES1 getGL2ES1() throws GLException {
+    if (isGL2ES1()) {
+        return this;
+    }
+    throw new GLException("Not a GL2ES1 implementation");
+}
+
+public final GL2ES2 getGL2ES2() throws GLException {
+    if (isGL2ES2()) {
+        return this;
+    }
+    throw new GLException("Not a GL2ES2 implementation");
+}
+
+public final GL2GL3 getGL2GL3() throws GLException {
+    throw new GLException("Not a GL2GL3 implementation");
+}
+
+//
+// Helpers for ensuring the correct amount of texture data
+//
+
+/** Returns the number of bytes required to fill in the appropriate
+    texture. This is computed as closely as possible based on the
+    pixel pack or unpack parameters. The logic in this routine is
+    based on code in the SGI OpenGL sample implementation. */
+
+private int imageSizeInBytes(int format, int type, int w, int h, int d,
+                             boolean pack) {
+  int elements = 0;
+  int esize = 0;
+  
+  if (w < 0) return 0;
+  if (h < 0) return 0;
+  if (d < 0) return 0;
+  switch (format) {
+  case GL_STENCIL_INDEX:
+    elements = 1;
+    break;
+  case GL_ALPHA:
+  case GL_LUMINANCE:
+  case GL_DEPTH_COMPONENT:
+    elements = 1;
+    break;
+  case GL_LUMINANCE_ALPHA:
+    elements = 2;
+    break;
+  case GL_RGB:
+    elements = 3;
+    break;
+  case GL_RGBA:
+    elements = 4;
+    break;
+  /* FIXME ?? 
+   case GL_HILO_NV:
+    elements = 2;
+    break; */
+  default:
+    return 0;
+  }
+  switch (type) {
+  case GL_BYTE:
+  case GL_UNSIGNED_BYTE:
+    esize = 1;
+    break;
+  case GL_SHORT:
+  case GL_UNSIGNED_SHORT:
+    esize = 2;
+    break;
+  case GL_UNSIGNED_SHORT_5_6_5:
+  case GL_UNSIGNED_SHORT_4_4_4_4:
+  case GL_UNSIGNED_SHORT_5_5_5_1:
+    esize = 2;
+    elements = 1;
+    break;
+  case GL_INT:
+  case GL_UNSIGNED_INT:
+  case GL_FLOAT:
+    esize = 4;
+    break;
+  default:
+    return 0;
+  }
+  return imageSizeInBytes(elements * esize, w, h, d, pack);
+}
+
+private GLBufferSizeTracker  bufferSizeTracker;
+private GLBufferStateTracker bufferStateTracker;
+private GLStateTracker       glStateTracker;
+
+private boolean bufferObjectExtensionsInitialized = false;
+private boolean haveGL15;
+private boolean haveGL21;
+private boolean haveARBVertexBufferObject;
+
+private void initBufferObjectExtensionChecks() {
+  if (bufferObjectExtensionsInitialized)
+    return;
+  bufferObjectExtensionsInitialized = true;
+  haveGL15                  = isExtensionAvailable("GL_VERSION_1_5");
+  haveGL21                  = isExtensionAvailable("GL_VERSION_2_1");
+  haveARBVertexBufferObject = isExtensionAvailable("GL_ARB_vertex_buffer_object");
+}
+
+private boolean checkBufferObject(boolean extension1,
+                                  boolean extension2,
+                                  boolean extension3,
+                                  boolean enabled,
+                                  int state,
+                                  String kind, boolean throwException) {
+  if (inBeginEndPair) {
+    throw new GLException("May not call this between glBegin and glEnd");
+  }
+  boolean avail = (extension1 || extension2 || extension3);
+  if (!avail) {
+    if (!enabled)
+      return true;
+    if(throwException) {
+        throw new GLException("Required extensions not available to call this function");
+    }
+    return false;
+  }
+  int buffer = bufferStateTracker.getBoundBufferObject(state, this);
+  if (enabled) {
+    if (buffer == 0) {
+      if(throwException) {
+          throw new GLException(kind + " must be enabled to call this method");
+      }
+      return false;
+    }
+  } else {
+    if (buffer != 0) {
+      if(throwException) {
+          throw new GLException(kind + " must be disabled to call this method");
+      }
+      return false;
+    }
+  }
+  return true;
+}  
+
+private boolean checkArrayVBODisabled(boolean throwException) { 
+  initBufferObjectExtensionChecks();
+  return checkBufferObject(haveGL15,
+                    haveARBVertexBufferObject,
+                    false,
+                    false,
+                    GL.GL_ARRAY_BUFFER,
+                    "array vertex_buffer_object", throwException);
+}
+
+private boolean checkArrayVBOEnabled(boolean throwException) { 
+  initBufferObjectExtensionChecks();
+  return checkBufferObject(haveGL15,
+                    haveARBVertexBufferObject,
+                    false,
+                    true,
+                    GL.GL_ARRAY_BUFFER,
+                    "array vertex_buffer_object", throwException);
+}
+
+private boolean checkElementVBODisabled(boolean throwException) { 
+  initBufferObjectExtensionChecks();
+  return checkBufferObject(haveGL15,
+                    haveARBVertexBufferObject,
+                    false,
+                    false,
+                    GL.GL_ELEMENT_ARRAY_BUFFER,
+                    "element vertex_buffer_object", throwException);
+}
+
+private boolean checkElementVBOEnabled(boolean throwException) { 
+  initBufferObjectExtensionChecks();
+  return checkBufferObject(haveGL15,
+                    haveARBVertexBufferObject,
+                    false,
+                    true,
+                    GL.GL_ELEMENT_ARRAY_BUFFER,
+                    "element vertex_buffer_object", throwException);
+}
+
+private boolean checkUnpackPBODisabled(boolean throwException) { 
+  // PBO n/a for ES 1.1 or ES 2.0
+  return true;
+}
+
+private boolean checkUnpackPBOEnabled(boolean throwException) { 
+  // PBO n/a for ES 1.1 or ES 2.0
+  return false;
+}
+
+private boolean checkPackPBODisabled(boolean throwException) { 
+  // PBO n/a for ES 1.1 or ES 2.0
+  return true;
+}
+
+private boolean checkPackPBOEnabled(boolean throwException) { 
+  // PBO n/a for ES 1.1 or ES 2.0
+  return false;
+}
+
+// Attempt to return the same ByteBuffer object from glMapBuffer if
+// the vertex buffer object's base address and size haven't changed
+private static class ARBVBOKey {
+  private long addr;
+  private int  capacity;
+
+  ARBVBOKey(long addr, int capacity) {
+    this.addr = addr;
+    this.capacity = capacity;
+  }
+
+  public int hashCode() {
+    return (int) addr;
+  }
+
+  public boolean equals(Object o) {
+    if ((o == null) || (!(o instanceof ARBVBOKey))) {
+      return false;
+    }
+
+    ARBVBOKey other = (ARBVBOKey) o;
+    return ((addr == other.addr) && (capacity == other.capacity));
+  }
+}
+
+private Map/*<ARBVBOKey, ByteBuffer>*/ arbVBOCache = new HashMap();
+
+/** Entry point to C language function: <br> <code> LPVOID glMapBuffer(GLenum target, GLenum access); </code>    */
+public java.nio.ByteBuffer glMapBuffer(int target, int access) {
+  final long __addr_ = ((GL2ES12ProcAddressTable)_context.getGLProcAddressTable())._addressof_glMapBuffer;
+  if (__addr_ == 0) {
+    throw new GLException("Method \"glMapBuffer\" not available");
+  }
+  int sz = bufferSizeTracker.getBufferSize(bufferStateTracker,
+                                           target,
+                                           this);
+  long addr;
+  addr = dispatch_glMapBuffer(target, access, __addr_);
+  if (addr == 0 || sz == 0) {
+    return null;
+  }
+  ARBVBOKey key = new ARBVBOKey(addr, sz);
+  ByteBuffer _res = (ByteBuffer) arbVBOCache.get(key);
+  if (_res == null) {
+    _res = newDirectByteBuffer(addr, sz);
+    InternalBufferUtil.nativeOrder(_res);
+    arbVBOCache.put(key, _res);
+  }
+  _res.position(0);
+  return _res;
+}
+
+/** Encapsulates function pointer for OpenGL function <br>: <code> LPVOID glMapBuffer(GLenum target, GLenum access); </code>    */
+native private long dispatch_glMapBuffer(int target, int access, long glProcAddress);
+
+native private ByteBuffer newDirectByteBuffer(long addr, int capacity);
+
+  /** Dummy implementation for the ES 2.0 function: <br> <code> void {@native glShaderBinary}(GLint n, const GLuint *  shaders, GLenum binaryformat, const void *  binary, GLint length); </code>  <br> Always throws a GLException!  */
+  public void glShaderBinary(int n, java.nio.IntBuffer shaders, int binaryformat, java.nio.Buffer binary, int length) {
+    throw new GLException("Method \"glShaderBinary\" not available");
+  }
+
+  /** Dummy implementation for the ES 2.0 function: <br> <code> void {@native glShaderBinary}(GLint n, const GLuint *  shaders, GLenum binaryformat, const void *  binary, GLint length); </code>  <br> Always throws a GLException!  */
+  public void glShaderBinary(int n, int[] shaders, int shaders_offset, int binaryformat, java.nio.Buffer binary, int length) {
+    throw new GLException("Method \"glShaderBinary\" not available");
+  }
+
+  public void glReleaseShaderCompiler() {
+    // nothing to do 
+  }
+
+    public void glVertexPointer(GLArrayData array) {
+      if(array.getComponentNumber()==0) return;
+      if(array.isVBO()) {
+          glVertexPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getOffset());
+      } else {
+          glVertexPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getBuffer());
+      }
+    }
+    public void glColorPointer(GLArrayData array) {
+      if(array.getComponentNumber()==0) return;
+      if(array.isVBO()) {
+          glColorPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getOffset());
+      } else {
+          glColorPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getBuffer());
+      }
+
+    }
+    public void glNormalPointer(GLArrayData array) {
+      if(array.getComponentNumber()==0) return;
+      if(array.getComponentNumber()!=3) {
+        throw new GLException("Only 3 components per normal allowed");
+      }
+      if(array.isVBO()) {
+          glNormalPointer(array.getComponentType(), array.getStride(), array.getOffset());
+      } else {
+          glNormalPointer(array.getComponentType(), array.getStride(), array.getBuffer());
+      }
+    }
+    public void glTexCoordPointer(GLArrayData array) {
+      if(array.getComponentNumber()==0) return;
+      if(array.isVBO()) {
+          glTexCoordPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getOffset());
+      } else {
+          glTexCoordPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getBuffer());
+      }
+    }
+
+
diff --git a/make/config/jogl/obsolete/gl-gl2es12.cfg b/make/config/jogl/obsolete/gl-gl2es12.cfg
deleted file mode 100644
index 3942b1419..000000000
--- a/make/config/jogl/obsolete/gl-gl2es12.cfg
+++ /dev/null
@@ -1,90 +0,0 @@
-# This .cfg file is used to generate the GL interface and implementing class.
-JavaOutputDir gensrc/classes
-NativeOutputDir gensrc/native/jogl/gl2es12
-
-ExtendedInterfaceSymbolsOnly ../build-temp/gensrc/classes/javax/media/opengl/GL.java
-ExtendedInterfaceSymbolsOnly ../build-temp/gensrc/classes/javax/media/opengl/GL2ES1.java
-ExtendedInterfaceSymbolsOnly ../build-temp/gensrc/classes/javax/media/opengl/GL2ES2.java
-ExtendedInterfaceSymbolsOnly ../src/jogl/classes/javax/media/opengl/GLBase.java
-ExtendedInterfaceSymbolsOnly ../src/jogl/classes/javax/media/opengl/fixedfunc/GLMatrixFunc.java
-ExtendedInterfaceSymbolsOnly ../src/jogl/classes/javax/media/opengl/fixedfunc/GLPointerFunc.java
-ExtendedInterfaceSymbolsOnly ../src/jogl/classes/javax/media/opengl/fixedfunc/GLLightingFunc.java
-
-Style ImplOnly
-ImplPackage com.jogamp.opengl.impl.gl2es12
-ImplJavaClass GL2ES12Impl
-Implements GL2ES12Impl GLBase
-Implements GL2ES12Impl GL
-Implements GL2ES12Impl GL2ES1
-Implements GL2ES12Impl GL2ES2
-
-Include gl-common.cfg
-Include gl-common-extensions.cfg
-Include gl-desktop.cfg
-
-# Because we're manually implementing glMapBuffer but only producing
-# the implementing class, GlueGen doesn't notice that it has to emit a
-# proc address table entry for it. Force it to here.
-ForceProcAddressGen glMapBuffer
-
-# Force all of the methods to be emitted using dynamic linking so we
-# don't need to link against any emulation library on the desktop or
-# depend on the presence of an import library for a particular device
-ForceProcAddressGen __ALL__
-
-# Also force the calling conventions of the locally generated function
-# pointer typedefs for these routines to APIENTRY
-LocalProcAddressCallingConvention __ALL__ APIENTRY
-
-EmitProcAddressTable true
-ProcAddressTableClassName GL2ES12ProcAddressTable
-GetProcAddressTableExpr ((GL2ES12ProcAddressTable)_context.getGLProcAddressTable())
-
-# Pick up on-line OpenGL javadoc thanks to user cylab on javagaming.org forums
-TagNativeBinding true
-
-# There seem to be some errors in the glue code generation where we are not ignoring
-# enough routines from desktop GL in GL2ES12Impl. For now manually ignore those which
-# we know shouldn't be in there
-Ignore glGetTexImage
-Ignore glPixelStoref
-
-# Add PixelStorei StateTracker
-#
-# Add input validation to glPixelStorei to make sure that, even if we
-# are running on top of desktop OpenGL, parameters not exposed in
-# OpenGL ES can not be changed
-CustomJavaCode GL2ES12Impl private static final int params_offset = 0; // just a helper for JavaPrologue ..
-
-JavaPrologue glPixelStorei if (pname != GL_PACK_ALIGNMENT && pname != GL_UNPACK_ALIGNMENT) {
-JavaPrologue glPixelStorei     throw new GLException("Unsupported pixel store parameter name 0x" + Integer.toHexString(pname));
-JavaPrologue glPixelStorei }
-JavaPrologue glPixelStorei glStateTracker.setInt(pname, param);
-
-JavaPrologue glGetIntegerv if ( glStateTracker.getInt(pname, params, params_offset) ) { return; }
-
-CustomJavaCode GL2ES12Impl public void glFrustumf(float left, float right, float bottom, float top, float zNear, float zFar) {
-CustomJavaCode GL2ES12Impl   glFrustum((double)left, (double)right, (double)bottom, (double)top, (double)zNear, (double)zFar); }
-
-CustomJavaCode GL2ES12Impl public void glOrthof(float left, float right, float bottom, float top, float zNear, float zFar) {
-CustomJavaCode GL2ES12Impl   glOrtho((double)left, (double)right, (double)bottom, (double)top, (double)zNear, (double)zFar); }
-
-CustomJavaCode GL2ES12Impl public void glClearDepthf(float depth) {
-CustomJavaCode GL2ES12Impl   glClearDepth((double)depth); }
-
-CustomJavaCode GL2ES12Impl public void glDepthRangef(float zNear, float zFar) {
-CustomJavaCode GL2ES12Impl    glDepthRange((double)zNear, (double)zFar); }
-
-Include gl-headers.cfg
-Include ../intptr.cfg
-
-IncludeAs CustomJavaCode GL2ES12Impl gl-impl-CustomJavaCode-common.java
-IncludeAs CustomJavaCode GL2ES12Impl gl-impl-CustomJavaCode-gl2es12.java
-IncludeAs CustomJavaCode GL2ES12Impl gl-impl-CustomJavaCode-embedded.java
-IncludeAs CustomJavaCode GL2ES12Impl gl-impl-CustomJavaCode-gl2_es2.java
-IncludeAs CustomCCode gl-impl-CustomCCode-gl2es12.c
-
-Import javax.media.opengl.GLES1
-Import javax.media.opengl.GLES2
-Import com.jogamp.opengl.impl.InternalBufferUtil
-Import java.io.PrintStream
diff --git a/make/config/jogl/obsolete/gl-impl-CustomCCode-gl2.c b/make/config/jogl/obsolete/gl-impl-CustomCCode-gl2.c
deleted file mode 100644
index 91fd0078b..000000000
--- a/make/config/jogl/obsolete/gl-impl-CustomCCode-gl2.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/*   Java->C glue code:
- *   Java package: com.jogamp.opengl.impl.gl2.GL2Impl
- *    Java method: long dispatch_glMapBuffer(int target, int access)
- *     C function: void * glMapBuffer(GLenum target, GLenum access);
- */
-JNIEXPORT jlong JNICALL 
-Java_com_jogamp_opengl_impl_gl2_GL2Impl_dispatch_1glMapBuffer(JNIEnv *env, jobject _unused, jint target, jint access, jlong glProcAddress) {
-  PFNGLMAPBUFFERPROC ptr_glMapBuffer;
-  void * _res;
-  ptr_glMapBuffer = (PFNGLMAPBUFFERPROC) (intptr_t) glProcAddress;
-  assert(ptr_glMapBuffer != NULL);
-  _res = (* ptr_glMapBuffer) ((GLenum) target, (GLenum) access);
-  return (jlong) (intptr_t) _res;
-}
-
-/*   Java->C glue code:
- *   Java package: com.jogamp.opengl.impl.gl2.GL2Impl
- *    Java method: ByteBuffer newDirectByteBuffer(long addr, int capacity);
- *     C function: jobject newDirectByteBuffer(jlong addr, jint capacity);
- */
-JNIEXPORT jobject JNICALL
-Java_com_jogamp_opengl_impl_gl2_GL2Impl_newDirectByteBuffer(JNIEnv *env, jobject _unused, jlong addr, jint capacity) {
-  return (*env)->NewDirectByteBuffer(env, (void*) (intptr_t) addr, capacity);
-}
diff --git a/make/config/jogl/obsolete/gl-impl-CustomCCode-gl2es12.c b/make/config/jogl/obsolete/gl-impl-CustomCCode-gl2es12.c
deleted file mode 100644
index 07b821802..000000000
--- a/make/config/jogl/obsolete/gl-impl-CustomCCode-gl2es12.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/*   Java->C glue code:
- *   Java package: com.jogamp.opengl.impl.gl2es12.GL2ES12Impl
- *    Java method: long dispatch_glMapBuffer(int target, int access)
- *     C function: void * glMapBuffer(GLenum target, GLenum access);
- */
-JNIEXPORT jlong JNICALL 
-Java_com_jogamp_opengl_impl_gl2es12_GL2ES12Impl_dispatch_1glMapBuffer(JNIEnv *env, jobject _unused, jint target, jint access, jlong glProcAddress) {
-  PFNGLMAPBUFFERPROC ptr_glMapBuffer;
-  void * _res;
-  ptr_glMapBuffer = (PFNGLMAPBUFFERPROC) (intptr_t) glProcAddress;
-  assert(ptr_glMapBuffer != NULL);
-  _res = (* ptr_glMapBuffer) ((GLenum) target, (GLenum) access);
-  return (jlong) (intptr_t) _res;
-}
-
-/*   Java->C glue code:
- *   Java package: com.jogamp.opengl.impl.gl2es12.GL2ES12Impl
- *    Java method: ByteBuffer newDirectByteBuffer(long addr, int capacity);
- *     C function: jobject newDirectByteBuffer(jlong addr, jint capacity);
- */
-JNIEXPORT jobject JNICALL
-Java_com_jogamp_opengl_impl_gl2es12_GL2ES12Impl_newDirectByteBuffer(JNIEnv *env, jobject _unused, jlong addr, jint capacity) {
-  return (*env)->NewDirectByteBuffer(env, (void*) (intptr_t) addr, capacity);
-}
diff --git a/make/config/jogl/obsolete/gl-impl-CustomCCode-gl3.c b/make/config/jogl/obsolete/gl-impl-CustomCCode-gl3.c
deleted file mode 100644
index f540a7d4a..000000000
--- a/make/config/jogl/obsolete/gl-impl-CustomCCode-gl3.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/*   Java->C glue code:
- *   Java package: com.jogamp.opengl.impl.gl3.GL3Impl
- *    Java method: long dispatch_glMapBuffer(int target, int access)
- *     C function: void * glMapBuffer(GLenum target, GLenum access);
- */
-JNIEXPORT jlong JNICALL 
-Java_com_jogamp_opengl_impl_gl3_GL3Impl_dispatch_1glMapBuffer(JNIEnv *env, jobject _unused, jint target, jint access, jlong glProcAddress) {
-  PFNGLMAPBUFFERPROC ptr_glMapBuffer;
-  void * _res;
-  ptr_glMapBuffer = (PFNGLMAPBUFFERPROC) (intptr_t) glProcAddress;
-  assert(ptr_glMapBuffer != NULL);
-  _res = (* ptr_glMapBuffer) ((GLenum) target, (GLenum) access);
-  return (jlong) (intptr_t) _res;
-}
-
-/*   Java->C glue code:
- *   Java package: com.jogamp.opengl.impl.gl3.GL3Impl
- *    Java method: ByteBuffer newDirectByteBuffer(long addr, int capacity);
- *     C function: jobject newDirectByteBuffer(jlong addr, jint capacity);
- */
-JNIEXPORT jobject JNICALL
-Java_com_jogamp_opengl_impl_gl3_GL3Impl_newDirectByteBuffer(JNIEnv *env, jobject _unused, jlong addr, jint capacity) {
-  return (*env)->NewDirectByteBuffer(env, (void*) (intptr_t) addr, capacity);
-}
diff --git a/make/config/jogl/obsolete/gl-impl-CustomJavaCode-gl2.java b/make/config/jogl/obsolete/gl-impl-CustomJavaCode-gl2.java
deleted file mode 100644
index a1a6917df..000000000
--- a/make/config/jogl/obsolete/gl-impl-CustomJavaCode-gl2.java
+++ /dev/null
@@ -1,385 +0,0 @@
-// Tracks glBegin/glEnd calls to determine whether it is legal to
-// query Vertex Buffer Object state
-private boolean inBeginEndPair;
-
-/* FIXME: refactor dependence on Java 2D / JOGL bridge
-
-// Tracks creation and destruction of server-side OpenGL objects when
-// the Java2D/OpenGL pipeline is enabled and it is using frame buffer
-// objects (FBOs) to do its rendering
-private GLObjectTracker tracker;
-
-public void setObjectTracker(GLObjectTracker tracker) {
-  this.tracker = tracker;
-}
-
-*/
-
-
-public GL2Impl(GLProfile glp, GLContextImpl context) {
-  this._context = context; 
-  this.bufferSizeTracker  = context.getBufferSizeTracker();
-  this.bufferStateTracker = context.getBufferStateTracker();
-  this.glStateTracker     = context.getGLStateTracker();
-  this.glProfile = glp;
-}
-
-/**
- * Provides platform-independent access to the wglAllocateMemoryNV /
- * glXAllocateMemoryNV extension.
- */
-public java.nio.ByteBuffer glAllocateMemoryNV(int arg0, float arg1, float arg2, float arg3) {
-  return _context.glAllocateMemoryNV(arg0, arg1, arg2, arg3);
-}
-
-//
-// Helpers for ensuring the correct amount of texture data
-//
-
-/** Returns the number of bytes required to fill in the appropriate
-    texture. This is computed as closely as possible based on the
-    pixel pack or unpack parameters. The logic in this routine is
-    based on code in the SGI OpenGL sample implementation. */
-
-private int imageSizeInBytes(int format, int type, int w, int h, int d,
-                             boolean pack) {
-  int elements = 0;
-  int esize = 0;
-  
-  if (w < 0) return 0;
-  if (h < 0) return 0;
-  if (d < 0) return 0;
-  switch (format) {
-  case GL_COLOR_INDEX:
-  case GL_STENCIL_INDEX:
-    elements = 1;
-    break;
-  case GL_RED:
-  case GL_GREEN:
-  case GL_BLUE:
-  case GL_ALPHA:
-  case GL_LUMINANCE:
-  case GL_DEPTH_COMPONENT:
-    elements = 1;
-    break;
-  case GL_LUMINANCE_ALPHA:
-    elements = 2;
-    break;
-  case GL_RGB:
-  case GL_BGR:
-    elements = 3;
-    break;
-  case GL_RGBA:
-  case GL_BGRA:
-  case GL_ABGR_EXT:
-    elements = 4;
-    break;
-  /* FIXME ?? 
-   case GL_HILO_NV:
-    elements = 2;
-    break; */
-  default:
-    return 0;
-  }
-  switch (type) {
-  case GL_BITMAP:
-    if (format == GL_COLOR_INDEX) {
-      return (d * (h * ((w+7)/8)));
-    } else {
-      return 0;
-    }
-  case GL_BYTE:
-  case GL_UNSIGNED_BYTE:
-    esize = 1;
-    break;
-  case GL_UNSIGNED_BYTE_3_3_2:
-  case GL_UNSIGNED_BYTE_2_3_3_REV:
-    esize = 1;
-    elements = 1;
-    break;
-  case GL_SHORT:
-  case GL_UNSIGNED_SHORT:
-    esize = 2;
-    break;
-  case GL_UNSIGNED_SHORT_5_6_5:
-  case GL_UNSIGNED_SHORT_5_6_5_REV:
-  case GL_UNSIGNED_SHORT_4_4_4_4:
-  case GL_UNSIGNED_SHORT_4_4_4_4_REV:
-  case GL_UNSIGNED_SHORT_5_5_5_1:
-  case GL_UNSIGNED_SHORT_1_5_5_5_REV:
-    esize = 2;
-    elements = 1;
-    break;
-  case GL_INT:
-  case GL_UNSIGNED_INT:
-  case GL_FLOAT:
-    esize = 4;
-    break;
-  case GL_UNSIGNED_INT_8_8_8_8:
-  case GL_UNSIGNED_INT_8_8_8_8_REV:
-  case GL_UNSIGNED_INT_10_10_10_2:
-  case GL_UNSIGNED_INT_2_10_10_10_REV:
-    esize = 4;
-    elements = 1;
-    break;
-  default:
-    return 0;
-  }
-  return imageSizeInBytes(elements * esize, w, h, d, pack);
-}
-
-private GLBufferSizeTracker  bufferSizeTracker;
-private GLBufferStateTracker bufferStateTracker;
-private GLStateTracker       glStateTracker;
-
-private boolean bufferObjectExtensionsInitialized = false;
-private boolean haveARBPixelBufferObject;
-private boolean haveEXTPixelBufferObject;
-private boolean haveGL15;
-private boolean haveGL21;
-private boolean haveARBVertexBufferObject;
-
-private void initBufferObjectExtensionChecks() {
-  if (bufferObjectExtensionsInitialized)
-    return;
-  bufferObjectExtensionsInitialized = true;
-  haveARBPixelBufferObject  = isExtensionAvailable("GL_ARB_pixel_buffer_object");
-  haveEXTPixelBufferObject  = isExtensionAvailable("GL_EXT_pixel_buffer_object");
-  haveGL15                  = isExtensionAvailable("GL_VERSION_1_5");
-  haveGL21                  = isExtensionAvailable("GL_VERSION_2_1");
-  haveARBVertexBufferObject = isExtensionAvailable("GL_ARB_vertex_buffer_object");
-}
-
-private boolean checkBufferObject(boolean extension1,
-                                  boolean extension2,
-                                  boolean extension3,
-                                  boolean enabled,
-                                  int state,
-                                  String kind, boolean throwException) {
-  if (inBeginEndPair) {
-    throw new GLException("May not call this between glBegin and glEnd");
-  }
-  boolean avail = (extension1 || extension2 || extension3);
-  if (!avail) {
-    if (!enabled)
-      return true;
-    if(throwException) {
-        throw new GLException("Required extensions not available to call this function");
-    }
-    return false;
-  }
-  int buffer = bufferStateTracker.getBoundBufferObject(state, this);
-  if (enabled) {
-    if (buffer == 0) {
-      if(throwException) {
-          throw new GLException(kind + " must be enabled to call this method");
-      }
-      return false;
-    }
-  } else {
-    if (buffer != 0) {
-      if(throwException) {
-          throw new GLException(kind + " must be disabled to call this method");
-      }
-      return false;
-    }
-  }
-  return true;
-}  
-
-private boolean checkArrayVBODisabled(boolean throwException) { 
-  initBufferObjectExtensionChecks();
-  return checkBufferObject(haveGL15,
-                    haveARBVertexBufferObject,
-                    false,
-                    false,
-                    GL.GL_ARRAY_BUFFER,
-                    "array vertex_buffer_object", throwException);
-}
-
-private boolean checkArrayVBOEnabled(boolean throwException) { 
-  initBufferObjectExtensionChecks();
-  return checkBufferObject(haveGL15,
-                    haveARBVertexBufferObject,
-                    false,
-                    true,
-                    GL.GL_ARRAY_BUFFER,
-                    "array vertex_buffer_object", throwException);
-}
-
-private boolean checkElementVBODisabled(boolean throwException) { 
-  initBufferObjectExtensionChecks();
-  return checkBufferObject(haveGL15,
-                    haveARBVertexBufferObject,
-                    false,
-                    false,
-                    GL.GL_ELEMENT_ARRAY_BUFFER,
-                    "element vertex_buffer_object", throwException);
-}
-
-private boolean checkElementVBOEnabled(boolean throwException) { 
-  initBufferObjectExtensionChecks();
-  return checkBufferObject(haveGL15,
-                    haveARBVertexBufferObject,
-                    false,
-                    true,
-                    GL.GL_ELEMENT_ARRAY_BUFFER,
-                    "element vertex_buffer_object", throwException);
-}
-
-private boolean checkUnpackPBODisabled(boolean throwException) { 
-  initBufferObjectExtensionChecks();
-  return checkBufferObject(haveARBPixelBufferObject,
-                    haveEXTPixelBufferObject,
-                    haveGL21,
-                    false,
-                    GL2.GL_PIXEL_UNPACK_BUFFER,
-                    "unpack pixel_buffer_object", throwException);
-}
-
-private boolean checkUnpackPBOEnabled(boolean throwException) { 
-  initBufferObjectExtensionChecks();
-  return checkBufferObject(haveARBPixelBufferObject,
-                    haveEXTPixelBufferObject,
-                    haveGL21,
-                    true,
-                    GL2.GL_PIXEL_UNPACK_BUFFER,
-                    "unpack pixel_buffer_object", throwException);
-}
-
-private boolean checkPackPBODisabled(boolean throwException) { 
-  initBufferObjectExtensionChecks();
-  return checkBufferObject(haveARBPixelBufferObject,
-                    haveEXTPixelBufferObject,
-                    haveGL21,
-                    false,
-                    GL2.GL_PIXEL_PACK_BUFFER,
-                    "pack pixel_buffer_object", throwException);
-}
-
-private boolean checkPackPBOEnabled(boolean throwException) { 
-  initBufferObjectExtensionChecks();
-  return checkBufferObject(haveARBPixelBufferObject,
-                    haveEXTPixelBufferObject,
-                    haveGL21,
-                    true,
-                    GL2.GL_PIXEL_PACK_BUFFER,
-                    "pack pixel_buffer_object", throwException);
-}
-
-public boolean glIsPBOPackEnabled() {
-    return checkPackPBOEnabled(false);
-}
-
-public boolean glIsPBOUnpackEnabled() {
-    return checkUnpackPBOEnabled(false);
-}
-
-// Attempt to return the same ByteBuffer object from glMapBuffer if
-// the vertex buffer object's base address and size haven't changed
-private static class ARBVBOKey {
-  private long addr;
-  private int  capacity;
-
-  ARBVBOKey(long addr, int capacity) {
-    this.addr = addr;
-    this.capacity = capacity;
-  }
-
-  public int hashCode() {
-    return (int) addr;
-  }
-
-  public boolean equals(Object o) {
-    if ((o == null) || (!(o instanceof ARBVBOKey))) {
-      return false;
-    }
-
-    ARBVBOKey other = (ARBVBOKey) o;
-    return ((addr == other.addr) && (capacity == other.capacity));
-  }
-}
-
-private Map/*<ARBVBOKey, ByteBuffer>*/ arbVBOCache = new HashMap();
-
-/** Entry point to C language function: <br> <code> LPVOID glMapBuffer(GLenum target, GLenum access); </code>    */
-public java.nio.ByteBuffer glMapBuffer(int target, int access) {
-  final long __addr_ = ((GL2ProcAddressTable)_context.getGLProcAddressTable())._addressof_glMapBuffer;
-  if (__addr_ == 0) {
-    throw new GLException("Method \"glMapBuffer\" not available");
-  }
-  int sz = bufferSizeTracker.getBufferSize(bufferStateTracker,
-                                           target,
-                                           this);
-  long addr;
-  addr = dispatch_glMapBuffer(target, access, __addr_);
-  if (addr == 0 || sz == 0) {
-    return null;
-  }
-  ARBVBOKey key = new ARBVBOKey(addr, sz);
-  ByteBuffer _res = (ByteBuffer) arbVBOCache.get(key);
-  if (_res == null) {
-    _res = newDirectByteBuffer(addr, sz);
-    InternalBufferUtil.nativeOrder(_res);
-    arbVBOCache.put(key, _res);
-  }
-  _res.position(0);
-  return _res;
-}
-
-/** Encapsulates function pointer for OpenGL function <br>: <code> LPVOID glMapBuffer(GLenum target, GLenum access); </code>    */
-native private long dispatch_glMapBuffer(int target, int access, long glProcAddress);
-
-native private ByteBuffer newDirectByteBuffer(long addr, int capacity);
-
-  /** Dummy implementation for the ES 2.0 function: <br> <code> void {@native glShaderBinary}(GLint n, const GLuint *  shaders, GLenum binaryformat, const void *  binary, GLint length); </code>  <br> Always throws a GLException!  */
-  public void glShaderBinary(int n, java.nio.IntBuffer shaders, int binaryformat, java.nio.Buffer binary, int length) {
-    throw new GLException("Method \"glShaderBinary\" not available");
-  }
-
-  /** Dummy implementation for the ES 2.0 function: <br> <code> void {@native glShaderBinary}(GLint n, const GLuint *  shaders, GLenum binaryformat, const void *  binary, GLint length); </code>  <br> Always throws a GLException!  */
-  public void glShaderBinary(int n, int[] shaders, int shaders_offset, int binaryformat, java.nio.Buffer binary, int length) {
-    throw new GLException("Method \"glShaderBinary\" not available");
-  }
-
-  public void glReleaseShaderCompiler() {
-    // nothing to do 
-  }
-
-    public void glVertexPointer(GLArrayData array) {
-      if(array.getComponentNumber()==0) return;
-      if(array.isVBO()) {
-          glVertexPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getOffset());
-      } else {
-          glVertexPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getBuffer());
-      }
-    }
-    public void glColorPointer(GLArrayData array) {
-      if(array.getComponentNumber()==0) return;
-      if(array.isVBO()) {
-          glColorPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getOffset());
-      } else {
-          glColorPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getBuffer());
-      }
-
-    }
-    public void glNormalPointer(GLArrayData array) {
-      if(array.getComponentNumber()==0) return;
-      if(array.getComponentNumber()!=3) {
-        throw new GLException("Only 3 components per normal allowed");
-      }
-      if(array.isVBO()) {
-          glNormalPointer(array.getComponentType(), array.getStride(), array.getOffset());
-      } else {
-          glNormalPointer(array.getComponentType(), array.getStride(), array.getBuffer());
-      }
-    }
-    public void glTexCoordPointer(GLArrayData array) {
-      if(array.getComponentNumber()==0) return;
-      if(array.isVBO()) {
-          glTexCoordPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getOffset());
-      } else {
-          glTexCoordPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getBuffer());
-      }
-    }
-
diff --git a/make/config/jogl/obsolete/gl-impl-CustomJavaCode-gl2es12.java b/make/config/jogl/obsolete/gl-impl-CustomJavaCode-gl2es12.java
deleted file mode 100644
index aed442da3..000000000
--- a/make/config/jogl/obsolete/gl-impl-CustomJavaCode-gl2es12.java
+++ /dev/null
@@ -1,353 +0,0 @@
-// Tracks glBegin/glEnd calls to determine whether it is legal to
-// query Vertex Buffer Object state
-private boolean inBeginEndPair;
-
-/* FIXME: refactor dependence on Java 2D / JOGL bridge
-
-// Tracks creation and destruction of server-side OpenGL objects when
-// the Java2D/OpenGL pipeline is enabled and it is using frame buffer
-// objects (FBOs) to do its rendering
-private GLObjectTracker tracker;
-
-public void setObjectTracker(GLObjectTracker tracker) {
-  this.tracker = tracker;
-}
-
-*/
-
-public GL2ES12Impl(GLProfile glp, GLContextImpl context) {
-  this._context = context; 
-  this.bufferSizeTracker  = context.getBufferSizeTracker();
-  this.bufferStateTracker = context.getBufferStateTracker();
-  this.glStateTracker     = context.getGLStateTracker();
-  this.isGL2ES2 = glp.isGL2ES2();
-  this.glProfile = glp;
-}
-
-private boolean isGL2ES2;
-
-public boolean isFunctionAvailable(String glFunctionName) {
-  return _context.isFunctionAvailable(glFunctionName);
-}
-
-public boolean isExtensionAvailable(String glExtensionName) {
-  return _context.isExtensionAvailable(glExtensionName);
-}
-
-public Object getExtension(String extensionName) {
-  // At this point we don't expose any extensions using this mechanism
-  return null;
-}
-
-/** Returns the context this GL object is associated with for better
-    error checking by DebugGL. */
-public GLContext getContext() {
-  return _context;
-}
-
-private GLContextImpl _context;
-
-public void setSwapInterval(int interval) {
-  _context.setSwapInterval(interval);
-}
-
-public int getSwapInterval() {
-  return _context.getSwapInterval();
-}
-
-public Object getPlatformGLExtensions() {
-  return _context.getPlatformGLExtensions();
-}
-
-//
-// Helpers for ensuring the correct amount of texture data
-//
-
-/** Returns the number of bytes required to fill in the appropriate
-    texture. This is computed as closely as possible based on the
-    pixel pack or unpack parameters. The logic in this routine is
-    based on code in the SGI OpenGL sample implementation. */
-
-private int imageSizeInBytes(int format, int type, int w, int h, int d,
-                             boolean pack) {
-  int elements = 0;
-  int esize = 0;
-  
-  if (w < 0) return 0;
-  if (h < 0) return 0;
-  if (d < 0) return 0;
-  switch (format) {
-  case GL_STENCIL_INDEX:
-    elements = 1;
-    break;
-  case GL_ALPHA:
-  case GL_LUMINANCE:
-  case GL_DEPTH_COMPONENT:
-    elements = 1;
-    break;
-  case GL_LUMINANCE_ALPHA:
-    elements = 2;
-    break;
-  case GL_RGB:
-    elements = 3;
-    break;
-  case GL_RGBA:
-    elements = 4;
-    break;
-  /* FIXME ?? 
-   case GL_HILO_NV:
-    elements = 2;
-    break; */
-  default:
-    return 0;
-  }
-  switch (type) {
-  case GL_BYTE:
-  case GL_UNSIGNED_BYTE:
-    esize = 1;
-    break;
-  case GL_SHORT:
-  case GL_UNSIGNED_SHORT:
-    esize = 2;
-    break;
-  case GL_UNSIGNED_SHORT_5_6_5:
-  case GL_UNSIGNED_SHORT_4_4_4_4:
-  case GL_UNSIGNED_SHORT_5_5_5_1:
-    esize = 2;
-    elements = 1;
-    break;
-  case GL_INT:
-  case GL_UNSIGNED_INT:
-  case GL_FLOAT:
-    esize = 4;
-    break;
-  default:
-    return 0;
-  }
-  return imageSizeInBytes(elements * esize, w, h, d, pack);
-}
-
-private GLBufferSizeTracker  bufferSizeTracker;
-private GLBufferStateTracker bufferStateTracker;
-private GLStateTracker       glStateTracker;
-
-private boolean bufferObjectExtensionsInitialized = false;
-private boolean haveGL15;
-private boolean haveGL21;
-private boolean haveARBVertexBufferObject;
-
-private void initBufferObjectExtensionChecks() {
-  if (bufferObjectExtensionsInitialized)
-    return;
-  bufferObjectExtensionsInitialized = true;
-  haveGL15                  = isExtensionAvailable("GL_VERSION_1_5");
-  haveGL21                  = isExtensionAvailable("GL_VERSION_2_1");
-  haveARBVertexBufferObject = isExtensionAvailable("GL_ARB_vertex_buffer_object");
-}
-
-private boolean checkBufferObject(boolean extension1,
-                                  boolean extension2,
-                                  boolean extension3,
-                                  boolean enabled,
-                                  int state,
-                                  String kind, boolean throwException) {
-  if (inBeginEndPair) {
-    throw new GLException("May not call this between glBegin and glEnd");
-  }
-  boolean avail = (extension1 || extension2 || extension3);
-  if (!avail) {
-    if (!enabled)
-      return true;
-    if(throwException) {
-        throw new GLException("Required extensions not available to call this function");
-    }
-    return false;
-  }
-  int buffer = bufferStateTracker.getBoundBufferObject(state, this);
-  if (enabled) {
-    if (buffer == 0) {
-      if(throwException) {
-          throw new GLException(kind + " must be enabled to call this method");
-      }
-      return false;
-    }
-  } else {
-    if (buffer != 0) {
-      if(throwException) {
-          throw new GLException(kind + " must be disabled to call this method");
-      }
-      return false;
-    }
-  }
-  return true;
-}  
-
-private boolean checkArrayVBODisabled(boolean throwException) { 
-  initBufferObjectExtensionChecks();
-  return checkBufferObject(haveGL15,
-                    haveARBVertexBufferObject,
-                    false,
-                    false,
-                    GL.GL_ARRAY_BUFFER,
-                    "array vertex_buffer_object", throwException);
-}
-
-private boolean checkArrayVBOEnabled(boolean throwException) { 
-  initBufferObjectExtensionChecks();
-  return checkBufferObject(haveGL15,
-                    haveARBVertexBufferObject,
-                    false,
-                    true,
-                    GL.GL_ARRAY_BUFFER,
-                    "array vertex_buffer_object", throwException);
-}
-
-private boolean checkElementVBODisabled(boolean throwException) { 
-  initBufferObjectExtensionChecks();
-  return checkBufferObject(haveGL15,
-                    haveARBVertexBufferObject,
-                    false,
-                    false,
-                    GL.GL_ELEMENT_ARRAY_BUFFER,
-                    "element vertex_buffer_object", throwException);
-}
-
-private boolean checkElementVBOEnabled(boolean throwException) { 
-  initBufferObjectExtensionChecks();
-  return checkBufferObject(haveGL15,
-                    haveARBVertexBufferObject,
-                    false,
-                    true,
-                    GL.GL_ELEMENT_ARRAY_BUFFER,
-                    "element vertex_buffer_object", throwException);
-}
-
-private boolean checkUnpackPBODisabled(boolean throwException) { 
-  // PBO n/a for ES 1.1 or ES 2.0
-  return true;
-}
-
-private boolean checkUnpackPBOEnabled(boolean throwException) { 
-  // PBO n/a for ES 1.1 or ES 2.0
-  return false;
-}
-
-private boolean checkPackPBODisabled(boolean throwException) { 
-  // PBO n/a for ES 1.1 or ES 2.0
-  return true;
-}
-
-private boolean checkPackPBOEnabled(boolean throwException) { 
-  // PBO n/a for ES 1.1 or ES 2.0
-  return false;
-}
-
-// Attempt to return the same ByteBuffer object from glMapBuffer if
-// the vertex buffer object's base address and size haven't changed
-private static class ARBVBOKey {
-  private long addr;
-  private int  capacity;
-
-  ARBVBOKey(long addr, int capacity) {
-    this.addr = addr;
-    this.capacity = capacity;
-  }
-
-  public int hashCode() {
-    return (int) addr;
-  }
-
-  public boolean equals(Object o) {
-    if ((o == null) || (!(o instanceof ARBVBOKey))) {
-      return false;
-    }
-
-    ARBVBOKey other = (ARBVBOKey) o;
-    return ((addr == other.addr) && (capacity == other.capacity));
-  }
-}
-
-private Map/*<ARBVBOKey, ByteBuffer>*/ arbVBOCache = new HashMap();
-
-/** Entry point to C language function: <br> <code> LPVOID glMapBuffer(GLenum target, GLenum access); </code>    */
-public java.nio.ByteBuffer glMapBuffer(int target, int access) {
-  final long __addr_ = ((GL2ES12ProcAddressTable)_context.getGLProcAddressTable())._addressof_glMapBuffer;
-  if (__addr_ == 0) {
-    throw new GLException("Method \"glMapBuffer\" not available");
-  }
-  int sz = bufferSizeTracker.getBufferSize(bufferStateTracker,
-                                           target,
-                                           this);
-  long addr;
-  addr = dispatch_glMapBuffer(target, access, __addr_);
-  if (addr == 0 || sz == 0) {
-    return null;
-  }
-  ARBVBOKey key = new ARBVBOKey(addr, sz);
-  ByteBuffer _res = (ByteBuffer) arbVBOCache.get(key);
-  if (_res == null) {
-    _res = newDirectByteBuffer(addr, sz);
-    InternalBufferUtil.nativeOrder(_res);
-    arbVBOCache.put(key, _res);
-  }
-  _res.position(0);
-  return _res;
-}
-
-/** Encapsulates function pointer for OpenGL function <br>: <code> LPVOID glMapBuffer(GLenum target, GLenum access); </code>    */
-native private long dispatch_glMapBuffer(int target, int access, long glProcAddress);
-
-native private ByteBuffer newDirectByteBuffer(long addr, int capacity);
-
-  /** Dummy implementation for the ES 2.0 function: <br> <code> void {@native glShaderBinary}(GLint n, const GLuint *  shaders, GLenum binaryformat, const void *  binary, GLint length); </code>  <br> Always throws a GLException!  */
-  public void glShaderBinary(int n, java.nio.IntBuffer shaders, int binaryformat, java.nio.Buffer binary, int length) {
-    throw new GLException("Method \"glShaderBinary\" not available");
-  }
-
-  /** Dummy implementation for the ES 2.0 function: <br> <code> void {@native glShaderBinary}(GLint n, const GLuint *  shaders, GLenum binaryformat, const void *  binary, GLint length); </code>  <br> Always throws a GLException!  */
-  public void glShaderBinary(int n, int[] shaders, int shaders_offset, int binaryformat, java.nio.Buffer binary, int length) {
-    throw new GLException("Method \"glShaderBinary\" not available");
-  }
-
-  public void glReleaseShaderCompiler() {
-    // nothing to do 
-  }
-
-    public void glVertexPointer(GLArrayData array) {
-      if(array.getComponentNumber()==0) return;
-      if(array.isVBO()) {
-          glVertexPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getOffset());
-      } else {
-          glVertexPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getBuffer());
-      }
-    }
-    public void glColorPointer(GLArrayData array) {
-      if(array.getComponentNumber()==0) return;
-      if(array.isVBO()) {
-          glColorPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getOffset());
-      } else {
-          glColorPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getBuffer());
-      }
-
-    }
-    public void glNormalPointer(GLArrayData array) {
-      if(array.getComponentNumber()==0) return;
-      if(array.getComponentNumber()!=3) {
-        throw new GLException("Only 3 components per normal allowed");
-      }
-      if(array.isVBO()) {
-          glNormalPointer(array.getComponentType(), array.getStride(), array.getOffset());
-      } else {
-          glNormalPointer(array.getComponentType(), array.getStride(), array.getBuffer());
-      }
-    }
-    public void glTexCoordPointer(GLArrayData array) {
-      if(array.getComponentNumber()==0) return;
-      if(array.isVBO()) {
-          glTexCoordPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getOffset());
-      } else {
-          glTexCoordPointer(array.getComponentNumber(), array.getComponentType(), array.getStride(), array.getBuffer());
-      }
-    }
-
-
diff --git a/make/lstjars.sh b/make/lstjars.sh
index 7691bfa2d..3837be5e3 100644
--- a/make/lstjars.sh
+++ b/make/lstjars.sh
@@ -47,7 +47,7 @@ function listdeployment() {
     echo
 
     echo JOGL GL2ES12 NEWT 
-    report gluegen-rt.$JAR_SUFFIX nativewindow.all-noawt.$JAR_SUFFIX jogl.core.$JAR_SUFFIX jogl.util.$JAR_SUFFIX jogl.os.$OSS.$JAR_SUFFIX newt.all-noawt.$JAR_SUFFIX libgluegen-rt.so.gz libnewt.so.gz libnativewindow_$OSS.so.gz
+    report gluegen-rt.$JAR_SUFFIX nativewindow.all-noawt.$JAR_SUFFIX jogl.core.$JAR_SUFFIX jogl.util.$JAR_SUFFIX jogl.os.$OSS.$JAR_SUFFIX jogl.gl2es12.$JAR_SUFFIX newt.all-noawt.$JAR_SUFFIX libgluegen-rt.so.gz libjogl_gl2es12.so.gz libnewt.so.gz libnativewindow_$OSS.so.gz
     echo
 
     echo JOGL GL2 NEWT 
@@ -125,8 +125,8 @@ mkdir -p nope
 
 mv *.cdc.lst *.all*.lst nope/
 
-mv jogl.gldesktop.*.lst nope/
-echo duplicates - w/o gldesktop.*
+mv jogl.gl2es12.*.lst jogl.gldesktop.*.lst nope/
+echo duplicates - w/o gl2es12.* gldesktop.*
 echo
 sort jogl*.lst | uniq -d
 mv nope/* .
diff --git a/make/make.jogl.all.linux-x86_64.sh b/make/make.jogl.all.linux-x86_64.sh
index 8ebcc8744..b6c5e9d63 100644
--- a/make/make.jogl.all.linux-x86_64.sh
+++ b/make/make.jogl.all.linux-x86_64.sh
@@ -16,6 +16,7 @@ fi
 #    -Dbuild.noarchives=true \
 
 ant  \
+    -Dbuild.noarchives=true \
     -Djogl.cg=1 -Dx11.cg.lib=../../lib-linux-x86_64 \
     -Drootrel.build=build-x86_64 \
     -DuseKD=true \
diff --git a/make/make.jogl.all.win64.bat b/make/make.jogl.all.win64.bat
new file mode 100644
index 000000000..508067d57
--- /dev/null
+++ b/make/make.jogl.all.win64.bat
@@ -0,0 +1,17 @@
+set THISDIR="C:\JOGL"
+
+set J2RE_HOME=c:\jre1.6.0_19
+set JAVA_HOME=c:\jdk1.6.0_19
+set ANT_PATH=C:\apache-ant-1.8.0
+
+set PATH=%JAVA_HOME%\bin;%ANT_PATH%\bin;c:\mingw-w64\bin;c:\mingw\bin;%PATH%
+
+set LIB_GEN=%THISDIR%\lib
+set CLASSPATH=.;%THISDIR%\build-win64\classes
+REM    -Dc.compiler.debug=true 
+REM    -DuseOpenMAX=true 
+REM    -DuseKD=true
+REM    -Djogl.cg=1 -D-Dwindows.cg.lib=C:\Cg-2.2
+REM    -Dbuild.noarchives=true
+
+ant -Drootrel.build=build-win64 -Djogl.cg=1 -Dwindows.cg.lib=C:\Cg-2.2\lib %1 %2 %3 %4 %5 %6 %7 %8 %9 > make.jogl.all.win64.log 2>&1
-- 
cgit v1.2.3