aboutsummaryrefslogtreecommitdiffstats
path: root/make
diff options
context:
space:
mode:
authorKenneth Russel <[email protected]>2006-02-24 10:14:36 +0000
committerKenneth Russel <[email protected]>2006-02-24 10:14:36 +0000
commit492fe63d517b554cdf9f6ed355a71b5b18df2c97 (patch)
treeb01f5a521b0319c1ef169fbd6846b5f7dd482596 /make
parentcb68a8fc740f4bba9130b0628cf0b016191e1d61 (diff)
Optimized VBO/PBO checking routines in GLImpl. Now cache availability
of extensions in booleans rather than querying table each time. git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@636 232f8b59-042b-4e1e-8c03-345bb8c30851
Diffstat (limited to 'make')
-rw-r--r--make/gl-impl-CustomJavaCode.java63
1 files changed, 43 insertions, 20 deletions
diff --git a/make/gl-impl-CustomJavaCode.java b/make/gl-impl-CustomJavaCode.java
index 210195dec..6d5f55159 100644
--- a/make/gl-impl-CustomJavaCode.java
+++ b/make/gl-impl-CustomJavaCode.java
@@ -149,16 +149,31 @@ private int imageSizeInBytes(int format, int type, int w, int h, int d) {
}
private int[] bufTmp = new int[1];
-private void checkBufferObject(String extension1,
- String extension2,
+private boolean bufferObjectExtensionsInitialized = false;
+private boolean haveARBPixelBufferObject;
+private boolean haveEXTPixelBufferObject;
+private boolean haveGL15;
+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");
+ haveARBVertexBufferObject = isExtensionAvailable("GL_ARB_vertex_buffer_object");
+}
+
+private void checkBufferObject(boolean extension1,
+ boolean extension2,
boolean enabled,
int state,
String kind) {
if (inBeginEndPair) {
throw new GLException("May not call this between glBegin and glEnd");
}
- boolean avail = ((extension1 != null && isExtensionAvailable(extension1)) ||
- (extension2 != null && isExtensionAvailable(extension2)));
+ boolean avail = (extension1 || extension2);
if (!avail) {
if (!enabled)
return;
@@ -177,32 +192,36 @@ private void checkBufferObject(String extension1,
}
private void checkUnpackPBODisabled() {
- checkBufferObject("GL_ARB_pixel_buffer_object",
- "GL_EXT_pixel_buffer_object",
+ initBufferObjectExtensionChecks();
+ checkBufferObject(haveARBPixelBufferObject,
+ haveEXTPixelBufferObject,
false,
GL.GL_PIXEL_UNPACK_BUFFER_BINDING_ARB,
"unpack pixel_buffer_object");
}
private void checkUnpackPBOEnabled() {
- checkBufferObject("GL_ARB_pixel_buffer_object",
- "GL_EXT_pixel_buffer_object",
+ initBufferObjectExtensionChecks();
+ checkBufferObject(haveARBPixelBufferObject,
+ haveEXTPixelBufferObject,
true,
GL.GL_PIXEL_UNPACK_BUFFER_BINDING_ARB,
"unpack pixel_buffer_object");
}
private void checkPackPBODisabled() {
- checkBufferObject("GL_ARB_pixel_buffer_object",
- "GL_EXT_pixel_buffer_object",
+ initBufferObjectExtensionChecks();
+ checkBufferObject(haveARBPixelBufferObject,
+ haveEXTPixelBufferObject,
false,
GL.GL_PIXEL_PACK_BUFFER_BINDING_ARB,
"pack pixel_buffer_object");
}
private void checkPackPBOEnabled() {
- checkBufferObject("GL_ARB_pixel_buffer_object",
- "GL_EXT_pixel_buffer_object",
+ initBufferObjectExtensionChecks();
+ checkBufferObject(haveARBPixelBufferObject,
+ haveEXTPixelBufferObject,
true,
GL.GL_PIXEL_PACK_BUFFER_BINDING_ARB,
"pack pixel_buffer_object");
@@ -210,32 +229,36 @@ private void checkPackPBOEnabled() {
private void checkArrayVBODisabled() {
- checkBufferObject("GL_VERSION_1_5",
- "GL_ARB_vertex_buffer_object",
+ initBufferObjectExtensionChecks();
+ checkBufferObject(haveGL15,
+ haveARBVertexBufferObject,
false,
GL.GL_ARRAY_BUFFER_BINDING,
"array vertex_buffer_object");
}
private void checkArrayVBOEnabled() {
- checkBufferObject("GL_VERSION_1_5",
- "GL_ARB_vertex_buffer_object",
+ initBufferObjectExtensionChecks();
+ checkBufferObject(haveGL15,
+ haveARBVertexBufferObject,
true,
GL.GL_ARRAY_BUFFER_BINDING,
"array vertex_buffer_object");
}
private void checkElementVBODisabled() {
- checkBufferObject("GL_VERSION_1_5",
- "GL_ARB_vertex_buffer_object",
+ initBufferObjectExtensionChecks();
+ checkBufferObject(haveGL15,
+ haveARBVertexBufferObject,
false,
GL.GL_ELEMENT_ARRAY_BUFFER_BINDING,
"element vertex_buffer_object");
}
private void checkElementVBOEnabled() {
- checkBufferObject("GL_VERSION_1_5",
- "GL_ARB_vertex_buffer_object",
+ initBufferObjectExtensionChecks();
+ checkBufferObject(haveGL15,
+ haveARBVertexBufferObject,
true,
GL.GL_ELEMENT_ARRAY_BUFFER_BINDING,
"element vertex_buffer_object");