summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2023-08-06 21:26:04 +0200
committerSven Gothel <[email protected]>2023-08-06 21:26:04 +0200
commitaf321b4a90a4da9351dfbdd6d9a8202a73fc8c05 (patch)
treed279e01f01f2de580276ca91f773df3e5ebbc2e7
parent7437eb0e4a6bbbfb96047677716d9306e9b2acbd (diff)
Bug 1441 - Fix ARB_multi_draw_indirect: Belongs to GL4, glMultiDrawElementsIndirect shall only have VBO indirect access
-rw-r--r--make/build-jogl.xml11
-rw-r--r--make/config/jogl/gl-common-gpubufferonly.cfg5
-rw-r--r--make/config/jogl/gl-common.cfg12
-rw-r--r--make/config/jogl/gl-if-gl4-ignores.cfg1
-rw-r--r--make/config/jogl/gl4bc-common-cpubufferJavaCode.java4
-rwxr-xr-xmake/scripts/gluegen-gl.sh101
6 files changed, 115 insertions, 19 deletions
diff --git a/make/build-jogl.xml b/make/build-jogl.xml
index 7f2ebbcd5..ee95eb642 100644
--- a/make/build-jogl.xml
+++ b/make/build-jogl.xml
@@ -578,7 +578,9 @@
config="${config.jogl}/gl-if-gl3.cfg"
includeRefid="stub.includes.fileset.all.gldesktop"
literalInclude="${stub.includes.gluegen.gg}"
- emitter="com.jogamp.gluegen.opengl.GLEmitter">
+ emitter="com.jogamp.gluegen.opengl.GLEmitter"
+ debug="false"
+ logLevel="WARNING">
<classpath refid="gluegen-gl.classpath" />
</gluegen>
</target>
@@ -643,7 +645,9 @@
config="${config.jogl}/gl-if-gl4.cfg"
includeRefid="stub.includes.fileset.all.gldesktop"
literalInclude="${stub.includes.gluegen.gg}"
- emitter="com.jogamp.gluegen.opengl.GLEmitter">
+ emitter="com.jogamp.gluegen.opengl.GLEmitter"
+ debug="false"
+ logLevel="WARNING">
<classpath refid="gluegen-gl.classpath" />
</gluegen>
</target>
@@ -657,7 +661,8 @@
includeRefid="stub.includes.fileset.all.gldesktop"
literalInclude="${stub.includes.gluegen.gg}"
emitter="com.jogamp.gluegen.opengl.GLEmitter"
- debug="false">
+ debug="false"
+ logLevel="WARNING">
<classpath refid="gluegen-gl.classpath" />
</gluegen>
</target>
diff --git a/make/config/jogl/gl-common-gpubufferonly.cfg b/make/config/jogl/gl-common-gpubufferonly.cfg
index 9370d9502..e91f341dd 100644
--- a/make/config/jogl/gl-common-gpubufferonly.cfg
+++ b/make/config/jogl/gl-common-gpubufferonly.cfg
@@ -44,7 +44,10 @@ BufferObjectOnly glDrawElementsInstancedBaseVertex
BufferObjectOnly glDrawElementsInstancedBaseVertexBaseInstance
BufferObjectOnly glDrawRangeElements
BufferObjectOnly glDrawRangeElementsBaseVertex
-BufferObjectOnly glMultiDrawArraysIndirect
+
+# `glMultiDrawArraysIndirect` uses both, Buffer for memory address and (see Bug 974) VBO offset for GL_DRAW_INDIRECT_BUFFER
+#BufferObjectOnly glMultiDrawArraysIndirect
+BufferObjectOnly glMultiDrawElementsIndirect
BufferObjectOnly glDrawArraysIndirect
BufferObjectOnly glDrawElementsIndirect
diff --git a/make/config/jogl/gl-common.cfg b/make/config/jogl/gl-common.cfg
index be4d9c44e..499c7db7f 100644
--- a/make/config/jogl/gl-common.cfg
+++ b/make/config/jogl/gl-common.cfg
@@ -734,9 +734,19 @@ BufferObjectKind Element glDrawElementsInstancedBaseVertexBaseInstance
BufferObjectKind Element glDrawRangeElements
BufferObjectKind Element glDrawRangeElementsBaseVertex
+# ARB_multi_draw_indirect
+# Example of VBO offset only: glMultiDrawElementsIndirect of extension ARB_multi_draw_indirect
+# - `BufferObjectOnly` and `NIODirectOnly` causes only 1 binding variant while
+# - We specify this in file `gl-common-gpubufferonly.cfg` in general
+# - `BufferObjectKind Indirect` causes it to be of indirect VBO, type long
+NIODirectOnly glMultiDrawElementsIndirect
+BufferObjectOnly glMultiDrawElementsIndirect
+BufferObjectKind Indirect glMultiDrawElementsIndirect
+# `glMultiDrawArraysIndirect` uses both, Buffer for memory address and (see Bug 974) VBO offset for GL_DRAW_INDIRECT_BUFFER
+BufferObjectKind Indirect glMultiDrawArraysIndirect
+
BufferObjectKind Indirect glDrawArraysIndirect
BufferObjectKind Indirect glDrawElementsIndirect
-BufferObjectKind Indirect glMultiDrawArraysIndirect
# There are no PBOs in the embedded OpenGL variants right now
BufferObjectKind UnpackPixel glBitmap
diff --git a/make/config/jogl/gl-if-gl4-ignores.cfg b/make/config/jogl/gl-if-gl4-ignores.cfg
index 7de570557..ec623d8d4 100644
--- a/make/config/jogl/gl-if-gl4-ignores.cfg
+++ b/make/config/jogl/gl-if-gl4-ignores.cfg
@@ -57,4 +57,5 @@ IgnoreExtension GL_ARB_sparse_texture_clamp
IgnoreExtension GL_ARB_sample_locations
IgnoreExtension GL_ARB_fragment_shader_interlock
IgnoreExtension GL_ARB_post_depth_coverage
+IgnoreExtension GL_ARB_multi_draw_indirect
diff --git a/make/config/jogl/gl4bc-common-cpubufferJavaCode.java b/make/config/jogl/gl4bc-common-cpubufferJavaCode.java
index 39dc9f6c4..a29f540fa 100644
--- a/make/config/jogl/gl4bc-common-cpubufferJavaCode.java
+++ b/make/config/jogl/gl4bc-common-cpubufferJavaCode.java
@@ -7,10 +7,6 @@
@param indirect a direct or array-backed {@link java.nio.Buffer} */
public void glDrawElementsIndirect(int mode, int type, Buffer indirect);
- /** Entry point to C language function: <code> void {@native glMultiDrawArraysIndirect}(GLenum mode, const void * indirect, GLsizei drawcount, GLsizei stride); </code> <br>Part of <code>GL_VERSION_4_3</code>, <code>GL_ARB_multi_draw_indirect</code>
- @param indirect a direct or array-backed {@link java.nio.Buffer} */
- public void glMultiDrawArraysIndirect(int mode, Buffer indirect, int drawcount, int stride);
-
/** Entry point to C language function: <code> void {@native glDrawElementsInstancedBaseInstance}(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLuint baseinstance); </code> <br>Part of <code>GL_VERSION_4_2</code>, <code>GL_ARB_base_instance</code>
@param indices a direct or array-backed {@link java.nio.Buffer} */
public void glDrawElementsInstancedBaseInstance(int mode, int count, int type, Buffer indices, int instancecount, int baseinstance);
diff --git a/make/scripts/gluegen-gl.sh b/make/scripts/gluegen-gl.sh
index b94658523..b4788b5be 100755
--- a/make/scripts/gluegen-gl.sh
+++ b/make/scripts/gluegen-gl.sh
@@ -309,12 +309,14 @@ fi
}
function gluegen_gl3es3() {
+# --logLevel INFO \
+# --debug \
+
java \
-classpath \
../../gluegen/$rootrel/gluegen.jar:../$rootrel/jogl/gluegen-gl.jar \
com.jogamp.gluegen.GlueGen \
---debug \
---dumpCPP \
+--logLevel INFO \
-O../$rootrel/jogl \
-Ecom.jogamp.gluegen.opengl.GLEmitter \
-C./config/jogl/gl-if-gl3_es3.cfg \
@@ -349,8 +351,7 @@ java \
-classpath \
../../gluegen/$rootrel/gluegen.jar:../$rootrel/jogl/gluegen-gl.jar \
com.jogamp.gluegen.GlueGen \
---debug \
---dumpCPP \
+--logLevel INFO \
-O../$rootrel/jogl \
-Ecom.jogamp.gluegen.opengl.GLEmitter \
-C./config/jogl/gl-if-es3.cfg \
@@ -455,12 +456,14 @@ copy_temp
}
function gluegen_gl2gl3() {
+# --logLevel INFO \
+# --debug \
+
java \
-classpath \
../../gluegen/$rootrel/gluegen.jar:../$rootrel/jogl/gluegen-gl.jar \
com.jogamp.gluegen.GlueGen \
---debug \
---dumpCPP \
+--logLevel INFO \
-O../$rootrel/jogl \
-Ecom.jogamp.gluegen.opengl.GLEmitter \
-C./config/jogl/gl-if-gl2gl3-subset.cfg \
@@ -493,8 +496,7 @@ java \
-classpath \
../../gluegen/$rootrel/gluegen.jar:../$rootrel/jogl/gluegen-gl.jar \
com.jogamp.gluegen.GlueGen \
---debug \
---dumpCPP \
+--logLevel INFO \
-O../$rootrel/jogl \
-Ecom.jogamp.gluegen.opengl.GLEmitter \
-C./config/jogl/gl-if-gl2_gl3.cfg \
@@ -525,7 +527,45 @@ copy_temp
}
-function gluegen_gl4() {
+function gluegen_gl3() {
+# --logLevel INFO \
+# --debug \
+
+java \
+-classpath \
+../../gluegen/$rootrel/gluegen.jar:../$rootrel/jogl/gluegen-gl.jar \
+com.jogamp.gluegen.GlueGen \
+--logLevel INFO \
+-O../$rootrel/jogl \
+-Ecom.jogamp.gluegen.opengl.GLEmitter \
+-C./config/jogl/gl-if-gl3.cfg \
+-Istub_includes/jni \
+-Istub_includes/jni/macosx \
+-Istub_includes/jni/win32 \
+-Istub_includes/jni/x11 \
+-Istub_includes/khr \
+-Istub_includes/khr/KD \
+-Istub_includes/khr/KHR \
+-Istub_includes/macosx \
+-Istub_includes/macosx/AppKit \
+-Istub_includes/macosx/OpenGL \
+-Istub_includes/macosx/QuartzCore \
+-Istub_includes/opengl \
+-Istub_includes/opengl/GL \
+-Istub_includes/opengl/GL3 \
+-Istub_includes/opengl/GLES \
+-Istub_includes/opengl/GLES2 \
+-Istub_includes/win32 \
+-Istub_includes/x11 \
+-Istub_includes/x11/X11 \
+-Istub_includes/x11/X11/extensions \
+-I../../gluegen/make/stub_includes/gluegen \
+stub_includes/opengl/gl3.c \
+
+copy_temp
+
+}
+function gluegen_gl3bc() {
java \
-classpath \
../../gluegen/$rootrel/gluegen.jar:../$rootrel/jogl/gluegen-gl.jar \
@@ -534,6 +574,45 @@ com.jogamp.gluegen.GlueGen \
--dumpCPP \
-O../$rootrel/jogl \
-Ecom.jogamp.gluegen.opengl.GLEmitter \
+-C./config/jogl/gl-gl3bc.cfg \
+-Istub_includes/jni \
+-Istub_includes/jni/macosx \
+-Istub_includes/jni/win32 \
+-Istub_includes/jni/x11 \
+-Istub_includes/khr \
+-Istub_includes/khr/KD \
+-Istub_includes/khr/KHR \
+-Istub_includes/macosx \
+-Istub_includes/macosx/AppKit \
+-Istub_includes/macosx/OpenGL \
+-Istub_includes/macosx/QuartzCore \
+-Istub_includes/opengl \
+-Istub_includes/opengl/GL \
+-Istub_includes/opengl/GL3 \
+-Istub_includes/opengl/GLES \
+-Istub_includes/opengl/GLES2 \
+-Istub_includes/win32 \
+-Istub_includes/x11 \
+-Istub_includes/x11/X11 \
+-Istub_includes/x11/X11/extensions \
+-I../../gluegen/make/stub_includes/gluegen \
+stub_includes/opengl/gl3bc.c \
+
+copy_temp
+
+}
+
+function gluegen_gl4() {
+# --logLevel INFO \
+# --debug \
+
+java \
+-classpath \
+../../gluegen/$rootrel/gluegen.jar:../$rootrel/jogl/gluegen-gl.jar \
+com.jogamp.gluegen.GlueGen \
+--logLevel INFO \
+-O../$rootrel/jogl \
+-Ecom.jogamp.gluegen.opengl.GLEmitter \
-C./config/jogl/gl-if-gl4.cfg \
-Istub_includes/jni \
-Istub_includes/jni/macosx \
@@ -913,7 +992,9 @@ function gluegen_all() {
# gluegen_es3_impl
# gluegen_gl2
# gluegen_gl2gl3
-# gluegen_gl4
+# gluegen_gl3
+# gluegen_gl3bc
+ gluegen_gl4
# gluegen_gl4bc
#
# gluegen_egl