From 1c8b8e8b8ee6290875fe59288ffa7ccaf4d86247 Mon Sep 17 00:00:00 2001 From: Jesse Hall Date: Wed, 10 Apr 2013 16:13:35 -0700 Subject: [PATCH] Special-case glMapBufferRange Updating the generator to handle GLvoid*/java.nio.Buffer return values probably wouldn't be too hard, but this is the only function that needs it currently. Bug: 8566953 Change-Id: I359a951136ab479ab576ce2e5a2881b937b7e8c9 --- opengl/tools/glgen/specs/gles11/GLES30.spec | 2 +- .../tools/glgen/stubs/gles11/glMapBufferRange.cpp | 13 +++++++++++++ .../tools/glgen/stubs/gles11/glMapBufferRange.java | 9 +++++++++ .../glgen/stubs/gles11/glMapBufferRange.nativeReg | 1 + 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 opengl/tools/glgen/stubs/gles11/glMapBufferRange.cpp create mode 100644 opengl/tools/glgen/stubs/gles11/glMapBufferRange.java create mode 100644 opengl/tools/glgen/stubs/gles11/glMapBufferRange.nativeReg diff --git a/opengl/tools/glgen/specs/gles11/GLES30.spec b/opengl/tools/glgen/specs/gles11/GLES30.spec index d95937d87..b7fe460e7 100644 --- a/opengl/tools/glgen/specs/gles11/GLES30.spec +++ b/opengl/tools/glgen/specs/gles11/GLES30.spec @@ -184,7 +184,7 @@ void glUniformMatrix4x3fv ( GLint location, GLsizei count, GLboolean transpose, void glBlitFramebuffer ( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter ) void glRenderbufferStorageMultisample ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height ) void glFramebufferTextureLayer ( GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer ) -// GLvoid * glMapBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ) +GLvoid * glMapBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ) void glFlushMappedBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length ) void glBindVertexArray ( GLuint array ) void glDeleteVertexArrays ( GLsizei n, const GLuint *arrays ) diff --git a/opengl/tools/glgen/stubs/gles11/glMapBufferRange.cpp b/opengl/tools/glgen/stubs/gles11/glMapBufferRange.cpp new file mode 100644 index 000000000..248564232 --- /dev/null +++ b/opengl/tools/glgen/stubs/gles11/glMapBufferRange.cpp @@ -0,0 +1,13 @@ +/* GLvoid * glMapBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ) */ +static jobject +android_glMapBufferRange__IIII + (JNIEnv *_env, jobject _this, jint target, jint offset, jint length, jint access) { + GLvoid* _p = glMapBufferRange((GLenum)target, + (GLintptr)offset, (GLsizeiptr)length, (GLbitfield)access); + jobject _buf = (jobject)0; + if (_p) { + _buf = _env->NewDirectByteBuffer(_p, length); + } + return _buf; +} + diff --git a/opengl/tools/glgen/stubs/gles11/glMapBufferRange.java b/opengl/tools/glgen/stubs/gles11/glMapBufferRange.java new file mode 100644 index 000000000..482ea9981 --- /dev/null +++ b/opengl/tools/glgen/stubs/gles11/glMapBufferRange.java @@ -0,0 +1,9 @@ + // C function GLvoid * glMapBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ) + + public static native java.nio.Buffer glMapBufferRange( + int target, + int offset, + int length, + int access + ); + diff --git a/opengl/tools/glgen/stubs/gles11/glMapBufferRange.nativeReg b/opengl/tools/glgen/stubs/gles11/glMapBufferRange.nativeReg new file mode 100644 index 000000000..ad5c07776 --- /dev/null +++ b/opengl/tools/glgen/stubs/gles11/glMapBufferRange.nativeReg @@ -0,0 +1 @@ +{"glMapBufferRange", "(IIII)Ljava/nio/Buffer;", (void *) android_glMapBufferRange__IIII }, \ No newline at end of file