diff options
Diffstat (limited to 'make/config/jogl/gl-impl-CustomJavaCode-gles1.java')
-rw-r--r-- | make/config/jogl/gl-impl-CustomJavaCode-gles1.java | 236 |
1 files changed, 133 insertions, 103 deletions
diff --git a/make/config/jogl/gl-impl-CustomJavaCode-gles1.java b/make/config/jogl/gl-impl-CustomJavaCode-gles1.java index 68eadc683..6a7e12ca1 100644 --- a/make/config/jogl/gl-impl-CustomJavaCode-gles1.java +++ b/make/config/jogl/gl-impl-CustomJavaCode-gles1.java @@ -1,17 +1,20 @@ public GLES1Impl(GLProfile glp, GLContextImpl context) { this._context = context; if(null != context) { - this.bufferSizeTracker = context.getBufferSizeTracker(); + this.bufferObjectTracker = context.getBufferObjectTracker(); this.bufferStateTracker = context.getBufferStateTracker(); this.glStateTracker = context.getGLStateTracker(); } else { - this.bufferSizeTracker = null; + this.bufferObjectTracker = null; this.bufferStateTracker = null; this.glStateTracker = null; } this.glProfile = glp; } +public final void finalizeInit() { +} + @Override public final boolean isGL4bc() { return false; @@ -48,6 +51,11 @@ public final boolean isGLES2() { } @Override +public final boolean isGLES3() { + return false; +} + +@Override public final boolean isGLES() { return true; } @@ -63,11 +71,46 @@ public final boolean isGL2ES2() { } @Override +public final boolean isGL2ES3() { + return false; +} + +@Override +public final boolean isGL3ES3() { + return false; +} + +@Override +public final boolean isGL4ES3() { + return false; +} + +@Override +public final boolean isGL4core() { + return false; +} + +@Override +public final boolean isGL3core() { + return false; +} + +@Override +public final boolean isGLcore() { + return false; +} + +@Override public final boolean isGLES2Compatible() { return false; } @Override +public final boolean isGLES3Compatible() { + return false; +} + +@Override public final boolean isGL2GL3() { return false; } @@ -118,16 +161,36 @@ public final GLES2 getGLES2() throws GLException { } @Override +public final GLES3 getGLES3() throws GLException { + throw new GLException("Not a GLES3 implementation"); +} + +@Override public final GL2ES1 getGL2ES1() throws GLException { return this; } @Override +public final GL2ES3 getGL2ES3() throws GLException { + throw new GLException("Not a GL2ES3 implementation"); +} + +@Override public final GL2ES2 getGL2ES2() throws GLException { throw new GLException("Not a GL2ES2 implementation"); } @Override +public final GL3ES3 getGL3ES3() throws GLException { + throw new GLException("Not a GL3ES3 implementation"); +} + +@Override +public final GL4ES3 getGL4ES3() throws GLException { + throw new GLException("Not a GL4ES3 implementation"); +} + +@Override public final GL2GL3 getGL2GL3() throws GLException { throw new GLException("Not a GL2GL3 implementation"); } @@ -136,44 +199,21 @@ public final GL2GL3 getGL2GL3() throws GLException { // Helpers for ensuring the correct amount of texture data // -private final GLBufferSizeTracker bufferSizeTracker; -private final GLBufferStateTracker bufferStateTracker; -private final GLStateTracker glStateTracker; - -private boolean bufferObjectExtensionsInitialized = false; -private boolean haveOESFramebufferObject; - -private final void initBufferObjectExtensionChecks() { - if (bufferObjectExtensionsInitialized) - return; - bufferObjectExtensionsInitialized = true; - haveOESFramebufferObject = isExtensionAvailable("GL_OES_framebuffer_object"); -} - -private final boolean checkBufferObject(boolean avail, - boolean enabled, +private final boolean checkBufferObject(boolean bound, int state, String kind, boolean throwException) { - 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) { + final int buffer = bufferStateTracker.getBoundBufferObject(state, this); + if (bound) { + if (0 == buffer) { if(throwException) { - throw new GLException(kind + " must be enabled to call this method"); + throw new GLException(kind + " must be bound to call this method"); } return false; } } else { - if (buffer != 0) { + if (0 != buffer) { if(throwException) { - throw new GLException(kind + " must be disabled to call this method"); + throw new GLException(kind + " must be unbound to call this method"); } return false; } @@ -181,101 +221,50 @@ private final boolean checkBufferObject(boolean avail, return true; } -private final boolean checkArrayVBODisabled(boolean throwException) { - initBufferObjectExtensionChecks(); - return checkBufferObject(true, - false, - GL.GL_ARRAY_BUFFER, - "array vertex_buffer_object", throwException); +private final boolean checkArrayVBOUnbound(boolean throwException) { + return checkBufferObject(false, // bound + GL.GL_ARRAY_BUFFER, + "array vertex_buffer_object", throwException); } -private final boolean checkArrayVBOEnabled(boolean throwException) { - initBufferObjectExtensionChecks(); - return checkBufferObject(true, - true, - GL.GL_ARRAY_BUFFER, - "array vertex_buffer_object", throwException); +private final boolean checkArrayVBOBound(boolean throwException) { + return checkBufferObject(true, // bound + GL.GL_ARRAY_BUFFER, + "array vertex_buffer_object", throwException); } -private final boolean checkElementVBODisabled(boolean throwException) { - initBufferObjectExtensionChecks(); - return checkBufferObject(true, - false, - GL.GL_ELEMENT_ARRAY_BUFFER, - "element vertex_buffer_object", throwException); +private final boolean checkElementVBOUnbound(boolean throwException) { + return checkBufferObject(false, // bound + GL.GL_ELEMENT_ARRAY_BUFFER, + "element vertex_buffer_object", throwException); } -private final boolean checkElementVBOEnabled(boolean throwException) { - initBufferObjectExtensionChecks(); - return checkBufferObject(true, - true, - GL.GL_ELEMENT_ARRAY_BUFFER, - "element vertex_buffer_object", throwException); +private final boolean checkElementVBOBound(boolean throwException) { + return checkBufferObject(true, // bound + GL.GL_ELEMENT_ARRAY_BUFFER, + "element vertex_buffer_object", throwException); } -private final boolean checkUnpackPBODisabled(boolean throwException) { +private final boolean checkUnpackPBOUnbound(boolean throwException) { // PBO n/a for ES 1.1 or ES 2.0 return true; } -private final boolean checkUnpackPBOEnabled(boolean throwException) { +private final boolean checkUnpackPBOBound(boolean throwException) { // PBO n/a for ES 1.1 or ES 2.0 return false; } -private final boolean checkPackPBODisabled(boolean throwException) { +private final boolean checkPackPBOUnbound(boolean throwException) { // PBO n/a for ES 1.1 or ES 2.0 return true; } -private final boolean checkPackPBOEnabled(boolean throwException) { +private final boolean checkPackPBOBound(boolean throwException) { // PBO n/a for ES 1.1 or ES 2.0 return false; } -private final HashMap<MemoryObject, MemoryObject> arbMemCache = new HashMap<MemoryObject, MemoryObject>(); - -/** Entry point to C language function: <br> <code> LPVOID glMapBuffer(GLenum target, GLenum access); </code> */ -public final java.nio.ByteBuffer glMapBuffer(int target, int access) { - final long __addr_ = ((GLES1ProcAddressTable)_context.getGLProcAddressTable())._addressof_glMapBuffer; - if (__addr_ == 0) { - throw new GLException("Method \"glMapBuffer\" not available"); - } - final long sz = bufferSizeTracker.getBufferSize(bufferStateTracker, target, this); - if (0 == sz) { - return null; - } - final long addr = dispatch_glMapBuffer(target, access, __addr_); - if (0 == addr) { - return null; - } - ByteBuffer buffer; - MemoryObject memObj0 = new MemoryObject(addr, sz); // object and key - MemoryObject memObj1 = MemoryObject.getOrAddSafe(arbMemCache, memObj0); - if(memObj0 == memObj1) { - // just added .. - if(null != memObj0.getBuffer()) { - throw new InternalError(); - } - buffer = newDirectByteBuffer(addr, sz); - Buffers.nativeOrder(buffer); - memObj0.setBuffer(buffer); - } else { - // already mapped - buffer = memObj1.getBuffer(); - if(null == buffer) { - throw new InternalError(); - } - } - buffer.position(0); - return buffer; -} - -/** 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, long capacity); - @Override public final void glVertexPointer(GLArrayData array) { if(array.getComponentCount()==0) return; @@ -317,3 +306,44 @@ public final void glTexCoordPointer(GLArrayData array) { } } +// +// GLBufferObjectTracker Redirects +// + +@Override +public final void glBufferData(int target, long size, Buffer data, int usage) { + final long glProcAddress = ((GLES1ProcAddressTable)_context.getGLProcAddressTable())._addressof_glBufferData; + if ( 0 == glProcAddress ) { + throw new GLException(String.format("Method \"%s\" not available", "glBufferData")); + } + bufferObjectTracker.createBufferStorage(bufferStateTracker, this, + target, size, data, usage, 0 /* immutableFlags */, + createBoundMutableStorageDispatch, glProcAddress); +} + +@Override +public boolean glUnmapBuffer(int target) { + final long glProcAddress = ((GLES1ProcAddressTable)_context.getGLProcAddressTable())._addressof_glUnmapBuffer; + if ( 0 == glProcAddress ) { + throw new GLException(String.format("Method \"%s\" not available", "glUnmapBuffer")); + } + return bufferObjectTracker.unmapBuffer(bufferStateTracker, this, target, unmapBoundBufferDispatch, glProcAddress); +} + +@Override +public final GLBufferStorage mapBuffer(final int target, final int access) { + final long glProcAddress = ((GLES1ProcAddressTable)_context.getGLProcAddressTable())._addressof_glMapBuffer; + if ( 0 == glProcAddress ) { + throw new GLException("Method \"glMapBuffer\" not available"); + } + return bufferObjectTracker.mapBuffer(bufferStateTracker, this, target, access, mapBoundBufferAllDispatch, glProcAddress); +} +@Override +public final GLBufferStorage mapBufferRange(final int target, final long offset, final long length, final int access) { + final long glProcAddress = ((GLES1ProcAddressTable)_context.getGLProcAddressTable())._addressof_glMapBufferRange; + if ( 0 == glProcAddress ) { + throw new GLException("Method \"glMapBufferRange\" not available"); + } + return bufferObjectTracker.mapBuffer(bufferStateTracker, this, target, offset, length, access, mapBoundBufferRangeDispatch, glProcAddress); +} + |