aboutsummaryrefslogtreecommitdiffstats
path: root/make
diff options
context:
space:
mode:
Diffstat (limited to 'make')
-rw-r--r--make/build.xml5
-rw-r--r--make/gl-common.cfg7
-rw-r--r--make/gl-impl-CustomCCode.c15
-rw-r--r--make/gl-impl-CustomJavaCode.java16
-rw-r--r--make/gl-impl-macosx.cfg3
-rw-r--r--make/gl-impl-win32.cfg3
-rw-r--r--make/gl-impl-x11.cfg3
7 files changed, 48 insertions, 4 deletions
diff --git a/make/build.xml b/make/build.xml
index 7875f57cc..e3ce6476f 100644
--- a/make/build.xml
+++ b/make/build.xml
@@ -159,6 +159,8 @@
<include name="${stub.includes.dir}/win32/**" />
<include name="${stub.includes.dir}/x11/**" />
<include name="*.cfg" />
+ <include name="*.java" />
+ <include name="*.c" />
<exclude name="cg-common.cfg" />
</fileset>
<dirset id="stub.includes.cg.fileset.all" dir=".">
@@ -475,6 +477,9 @@
(the uptodate task doesn't allow arbitrary source and target filesets but should) -->
<dependset>
<srcfileset refid="stub.includes.dependencies.fileset" />
+ <srcfileset dir=".">
+ <include name="${classes}/net/java/games/gluegen/**/*.class" />
+ </srcfileset>
<targetfileset dir=".">
<include name="${src.generated.java}/**/*.java" />
<include name="${src.generated.c}/**/*.c" />
diff --git a/make/gl-common.cfg b/make/gl-common.cfg
index 32664d7a0..9f2acf1c2 100644
--- a/make/gl-common.cfg
+++ b/make/gl-common.cfg
@@ -49,10 +49,9 @@ Ignore glGetVertexAttribPointervARB
Ignore glGetVertexAttribPointervNV
Ignore glTracePointerRangeMESA
-# FIXME: Temporarily ignore glMapBufferARB as it returns a void* that
-# we don't know the size of, and it's so new that there's no
-# documentation on its semantics
-Ignore glMapBufferARB
+# Manually implement glMapBufferARB as the size of the returned buffer
+# can only be computed by calling another routine
+ManuallyImplement glMapBufferARB
# Ignore GL functions that have void** parameters; we cannot yet deal with them
Ignore glMultiDrawElements
diff --git a/make/gl-impl-CustomCCode.c b/make/gl-impl-CustomCCode.c
new file mode 100644
index 000000000..1616353d9
--- /dev/null
+++ b/make/gl-impl-CustomCCode.c
@@ -0,0 +1,15 @@
+/* Java->C glue code:
+ * Java package: net.java.games.jogl.impl.windows.WindowsGLImpl
+ * Java method: java.nio.ByteBuffer dispatch_glMapBufferARB(int target, int access)
+ * C function: LPVOID glMapBufferARB(GLenum target, GLenum access);
+ */
+JNIEXPORT jobject JNICALL
+Java_net_java_games_jogl_impl_windows_WindowsGLImpl_dispatch_1glMapBufferARB(JNIEnv *env, jobject _unused, jint target, jint access, jint size, jlong glProcAddress) {
+ PFNGLMAPBUFFERARBPROC ptr_glMapBufferARB;
+ LPVOID _res;
+ ptr_glMapBufferARB = (PFNGLMAPBUFFERARBPROC) (intptr_t) glProcAddress;
+ assert(ptr_glMapBufferARB != NULL);
+ _res = (* ptr_glMapBufferARB) ((GLenum) target, (GLenum) access);
+ if (_res == NULL) return NULL;
+ return (*env)->NewDirectByteBuffer(env, _res, size);
+}
diff --git a/make/gl-impl-CustomJavaCode.java b/make/gl-impl-CustomJavaCode.java
new file mode 100644
index 000000000..31bb91bc1
--- /dev/null
+++ b/make/gl-impl-CustomJavaCode.java
@@ -0,0 +1,16 @@
+/** Entry point to C language function: <br> <code> LPVOID glMapBufferARB(GLenum target, GLenum access); </code> */
+public java.nio.ByteBuffer glMapBufferARB(int target, int access) {
+ final long __addr_ = context.getGLProcAddressTable()._addressof_glMapBufferARB;
+ if (__addr_ == 0) {
+ throw new GLException("Method \"glMapBufferARB\" not available");
+ }
+ int[] sz = new int[1];
+ glGetBufferParameterivARB(target, GL_BUFFER_SIZE_ARB, sz);
+ ByteBuffer _res;
+ _res = dispatch_glMapBufferARB(target, access, sz[0], __addr_);
+ if (_res == null) return null;
+ return _res.order(ByteOrder.nativeOrder());
+}
+
+/** Encapsulates function pointer for OpenGL function <br>: <code> LPVOID glMapBufferARB(GLenum target, GLenum access); </code> */
+native private java.nio.ByteBuffer dispatch_glMapBufferARB(int target, int access, int size, long glProcAddress);
diff --git a/make/gl-impl-macosx.cfg b/make/gl-impl-macosx.cfg
index 5aa8ea786..c5a0ade2f 100644
--- a/make/gl-impl-macosx.cfg
+++ b/make/gl-impl-macosx.cfg
@@ -68,3 +68,6 @@ CustomJavaCode MacOSXGLImpl {
CustomJavaCode MacOSXGLImpl // FIXME
CustomJavaCode MacOSXGLImpl throw new GLException("Not yet implemented");
CustomJavaCode MacOSXGLImpl }
+
+IncludeAs CustomJavaCode MacOSXGLImpl gl-impl-CustomJavaCode.java
+IncludeAs CustomCCode gl-impl-CustomCCode.c
diff --git a/make/gl-impl-win32.cfg b/make/gl-impl-win32.cfg
index 4891bd490..18c213769 100644
--- a/make/gl-impl-win32.cfg
+++ b/make/gl-impl-win32.cfg
@@ -57,3 +57,6 @@ CustomJavaCode WindowsGLImpl */
CustomJavaCode WindowsGLImpl public java.nio.ByteBuffer glAllocateMemoryNV(int arg0, float arg1, float arg2, float arg3) {
CustomJavaCode WindowsGLImpl return wglAllocateMemoryNV(arg0, arg1, arg2, arg3);
CustomJavaCode WindowsGLImpl }
+
+IncludeAs CustomJavaCode WindowsGLImpl gl-impl-CustomJavaCode.java
+IncludeAs CustomCCode gl-impl-CustomCCode.c
diff --git a/make/gl-impl-x11.cfg b/make/gl-impl-x11.cfg
index e94923c64..0ef534df1 100644
--- a/make/gl-impl-x11.cfg
+++ b/make/gl-impl-x11.cfg
@@ -55,3 +55,6 @@ CustomJavaCode X11GLImpl */
CustomJavaCode X11GLImpl public java.nio.ByteBuffer glAllocateMemoryNV(int arg0, float arg1, float arg2, float arg3) {
CustomJavaCode X11GLImpl return glXAllocateMemoryNV(arg0, arg1, arg2, arg3);
CustomJavaCode X11GLImpl }
+
+IncludeAs CustomJavaCode X11GLImpl gl-impl-CustomJavaCode.java
+IncludeAs CustomCCode gl-impl-CustomCCode.c