diff options
author | Jack Palevich <jackpal@google.com> | 2011-03-28 14:49:12 -0700 |
---|---|---|
committer | Jack Palevich <jackpal@google.com> | 2011-03-28 14:49:12 -0700 |
commit | 73108675c944ab4ee89631dced23566b12341b66 (patch) | |
tree | 509982a21e5d9e5e278f06245b839693fa7f9088 | |
parent | 45538666db67a3fd528765b22bd4da30280128ef (diff) | |
download | frameworks_base-73108675c944ab4ee89631dced23566b12341b66.zip frameworks_base-73108675c944ab4ee89631dced23566b12341b66.tar.gz frameworks_base-73108675c944ab4ee89631dced23566b12341b66.tar.bz2 |
Add Java support for a few accidentally omitted OpenGL ES APIs.
Fixes 3491494 Support OpenGL APIs: glBlendEquationSeparate and friends
Change-Id: I8fdc94b6ea14e9a7e3d402a965d500790a3d8f77
-rw-r--r-- | core/jni/android_opengl_GLES11.cpp | 61 | ||||
-rw-r--r-- | core/jni/android_opengl_GLES11Ext.cpp | 414 | ||||
-rw-r--r-- | core/jni/android_opengl_GLES20.cpp | 80 | ||||
-rw-r--r-- | opengl/tools/glgen/specs/gles11/checks.spec | 34 |
4 files changed, 505 insertions, 84 deletions
diff --git a/core/jni/android_opengl_GLES11.cpp b/core/jni/android_opengl_GLES11.cpp index 0f71b9f..1c326ba 100644 --- a/core/jni/android_opengl_GLES11.cpp +++ b/core/jni/android_opengl_GLES11.cpp @@ -533,16 +533,69 @@ android_glGetBooleanv__ILjava_nio_IntBuffer_2 static void android_glGetBufferParameteriv__II_3II (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { - _env->ThrowNew(UOEClass, - "glGetBufferParameteriv"); + jint _exception = 0; + GLint *params_base = (GLint *) 0; + jint _remaining; + GLint *params = (GLint *) 0; + + if (!params_ref) { + _exception = 1; + _env->ThrowNew(IAEClass, "params == null"); + goto exit; + } + if (offset < 0) { + _exception = 1; + _env->ThrowNew(IAEClass, "offset < 0"); + goto exit; + } + _remaining = _env->GetArrayLength(params_ref) - offset; + if (_remaining < 1) { + _exception = 1; + _env->ThrowNew(IAEClass, "length - offset < 1"); + goto exit; + } + params_base = (GLint *) + _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); + params = params_base + offset; + + glGetBufferParameteriv( + (GLenum)target, + (GLenum)pname, + (GLint *)params + ); + +exit: + if (params_base) { + _env->ReleasePrimitiveArrayCritical(params_ref, params_base, + _exception ? JNI_ABORT: 0); + } } /* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ static void android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { - _env->ThrowNew(UOEClass, - "glGetBufferParameteriv"); + jint _exception = 0; + jarray _array = (jarray) 0; + jint _remaining; + GLint *params = (GLint *) 0; + + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + if (_remaining < 1) { + _exception = 1; + _env->ThrowNew(IAEClass, "remaining() < 1"); + goto exit; + } + glGetBufferParameteriv( + (GLenum)target, + (GLenum)pname, + (GLint *)params + ); + +exit: + if (_array) { + releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); + } } /* void glGetClipPlanef ( GLenum pname, GLfloat *eqn ) */ diff --git a/core/jni/android_opengl_GLES11Ext.cpp b/core/jni/android_opengl_GLES11Ext.cpp index 942a0d9..1390506 100644 --- a/core/jni/android_opengl_GLES11Ext.cpp +++ b/core/jni/android_opengl_GLES11Ext.cpp @@ -1621,171 +1621,495 @@ android_glTranslatexOES__III static jboolean android_glIsRenderbufferOES__I (JNIEnv *_env, jobject _this, jint renderbuffer) { - _env->ThrowNew(UOEClass, - "glIsRenderbufferOES"); - return JNI_FALSE; + GLboolean _returnValue; + _returnValue = glIsRenderbufferOES( + (GLuint)renderbuffer + ); + return _returnValue; } /* void glBindRenderbufferOES ( GLenum target, GLuint renderbuffer ) */ static void android_glBindRenderbufferOES__II (JNIEnv *_env, jobject _this, jint target, jint renderbuffer) { - _env->ThrowNew(UOEClass, - "glBindRenderbufferOES"); + glBindRenderbufferOES( + (GLenum)target, + (GLuint)renderbuffer + ); } /* void glDeleteRenderbuffersOES ( GLsizei n, const GLuint *renderbuffers ) */ static void android_glDeleteRenderbuffersOES__I_3II (JNIEnv *_env, jobject _this, jint n, jintArray renderbuffers_ref, jint offset) { - _env->ThrowNew(UOEClass, - "glDeleteRenderbuffersOES"); + GLuint *renderbuffers_base = (GLuint *) 0; + jint _remaining; + GLuint *renderbuffers = (GLuint *) 0; + + if (!renderbuffers_ref) { + _env->ThrowNew(IAEClass, "renderbuffers == null"); + goto exit; + } + if (offset < 0) { + _env->ThrowNew(IAEClass, "offset < 0"); + goto exit; + } + _remaining = _env->GetArrayLength(renderbuffers_ref) - offset; + if (_remaining < n) { + _env->ThrowNew(IAEClass, "length - offset < n"); + goto exit; + } + renderbuffers_base = (GLuint *) + _env->GetPrimitiveArrayCritical(renderbuffers_ref, (jboolean *)0); + renderbuffers = renderbuffers_base + offset; + + glDeleteRenderbuffersOES( + (GLsizei)n, + (GLuint *)renderbuffers + ); + +exit: + if (renderbuffers_base) { + _env->ReleasePrimitiveArrayCritical(renderbuffers_ref, renderbuffers_base, + JNI_ABORT); + } } /* void glDeleteRenderbuffersOES ( GLsizei n, const GLuint *renderbuffers ) */ static void android_glDeleteRenderbuffersOES__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint n, jobject renderbuffers_buf) { - _env->ThrowNew(UOEClass, - "glDeleteRenderbuffersOES"); + jarray _array = (jarray) 0; + jint _remaining; + GLuint *renderbuffers = (GLuint *) 0; + + renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining); + if (_remaining < n) { + _env->ThrowNew(IAEClass, "remaining() < n"); + goto exit; + } + glDeleteRenderbuffersOES( + (GLsizei)n, + (GLuint *)renderbuffers + ); + +exit: + if (_array) { + releasePointer(_env, _array, renderbuffers, JNI_FALSE); + } } /* void glGenRenderbuffersOES ( GLsizei n, GLuint *renderbuffers ) */ static void android_glGenRenderbuffersOES__I_3II (JNIEnv *_env, jobject _this, jint n, jintArray renderbuffers_ref, jint offset) { - _env->ThrowNew(UOEClass, - "glGenRenderbuffersOES"); + jint _exception = 0; + GLuint *renderbuffers_base = (GLuint *) 0; + jint _remaining; + GLuint *renderbuffers = (GLuint *) 0; + + if (!renderbuffers_ref) { + _exception = 1; + _env->ThrowNew(IAEClass, "renderbuffers == null"); + goto exit; + } + if (offset < 0) { + _exception = 1; + _env->ThrowNew(IAEClass, "offset < 0"); + goto exit; + } + _remaining = _env->GetArrayLength(renderbuffers_ref) - offset; + if (_remaining < n) { + _exception = 1; + _env->ThrowNew(IAEClass, "length - offset < n"); + goto exit; + } + renderbuffers_base = (GLuint *) + _env->GetPrimitiveArrayCritical(renderbuffers_ref, (jboolean *)0); + renderbuffers = renderbuffers_base + offset; + + glGenRenderbuffersOES( + (GLsizei)n, + (GLuint *)renderbuffers + ); + +exit: + if (renderbuffers_base) { + _env->ReleasePrimitiveArrayCritical(renderbuffers_ref, renderbuffers_base, + _exception ? JNI_ABORT: 0); + } } /* void glGenRenderbuffersOES ( GLsizei n, GLuint *renderbuffers ) */ static void android_glGenRenderbuffersOES__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint n, jobject renderbuffers_buf) { - _env->ThrowNew(UOEClass, - "glGenRenderbuffersOES"); + jint _exception = 0; + jarray _array = (jarray) 0; + jint _remaining; + GLuint *renderbuffers = (GLuint *) 0; + + renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining); + if (_remaining < n) { + _exception = 1; + _env->ThrowNew(IAEClass, "remaining() < n"); + goto exit; + } + glGenRenderbuffersOES( + (GLsizei)n, + (GLuint *)renderbuffers + ); + +exit: + if (_array) { + releasePointer(_env, _array, renderbuffers, _exception ? JNI_FALSE : JNI_TRUE); + } } /* void glRenderbufferStorageOES ( GLenum target, GLenum internalformat, GLsizei width, GLsizei height ) */ static void android_glRenderbufferStorageOES__IIII (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint width, jint height) { - _env->ThrowNew(UOEClass, - "glRenderbufferStorageOES"); + glRenderbufferStorageOES( + (GLenum)target, + (GLenum)internalformat, + (GLsizei)width, + (GLsizei)height + ); } /* void glGetRenderbufferParameterivOES ( GLenum target, GLenum pname, GLint *params ) */ static void android_glGetRenderbufferParameterivOES__II_3II (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { - _env->ThrowNew(UOEClass, - "glGetRenderbufferParameterivOES"); + jint _exception = 0; + GLint *params_base = (GLint *) 0; + jint _remaining; + GLint *params = (GLint *) 0; + + if (!params_ref) { + _exception = 1; + _env->ThrowNew(IAEClass, "params == null"); + goto exit; + } + if (offset < 0) { + _exception = 1; + _env->ThrowNew(IAEClass, "offset < 0"); + goto exit; + } + _remaining = _env->GetArrayLength(params_ref) - offset; + if (_remaining < 1) { + _exception = 1; + _env->ThrowNew(IAEClass, "length - offset < 1"); + goto exit; + } + params_base = (GLint *) + _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); + params = params_base + offset; + + glGetRenderbufferParameterivOES( + (GLenum)target, + (GLenum)pname, + (GLint *)params + ); + +exit: + if (params_base) { + _env->ReleasePrimitiveArrayCritical(params_ref, params_base, + _exception ? JNI_ABORT: 0); + } } /* void glGetRenderbufferParameterivOES ( GLenum target, GLenum pname, GLint *params ) */ static void android_glGetRenderbufferParameterivOES__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { - _env->ThrowNew(UOEClass, - "glGetRenderbufferParameterivOES"); + jint _exception = 0; + jarray _array = (jarray) 0; + jint _remaining; + GLint *params = (GLint *) 0; + + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + if (_remaining < 1) { + _exception = 1; + _env->ThrowNew(IAEClass, "remaining() < 1"); + goto exit; + } + glGetRenderbufferParameterivOES( + (GLenum)target, + (GLenum)pname, + (GLint *)params + ); + +exit: + if (_array) { + releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); + } } /* GLboolean glIsFramebufferOES ( GLuint framebuffer ) */ static jboolean android_glIsFramebufferOES__I (JNIEnv *_env, jobject _this, jint framebuffer) { - _env->ThrowNew(UOEClass, - "glIsFramebufferOES"); - return JNI_FALSE; + GLboolean _returnValue; + _returnValue = glIsFramebufferOES( + (GLuint)framebuffer + ); + return _returnValue; } /* void glBindFramebufferOES ( GLenum target, GLuint framebuffer ) */ static void android_glBindFramebufferOES__II (JNIEnv *_env, jobject _this, jint target, jint framebuffer) { - _env->ThrowNew(UOEClass, - "glBindFramebufferOES"); + glBindFramebufferOES( + (GLenum)target, + (GLuint)framebuffer + ); } /* void glDeleteFramebuffersOES ( GLsizei n, const GLuint *framebuffers ) */ static void android_glDeleteFramebuffersOES__I_3II (JNIEnv *_env, jobject _this, jint n, jintArray framebuffers_ref, jint offset) { - _env->ThrowNew(UOEClass, - "glDeleteFramebuffersOES"); + GLuint *framebuffers_base = (GLuint *) 0; + jint _remaining; + GLuint *framebuffers = (GLuint *) 0; + + if (!framebuffers_ref) { + _env->ThrowNew(IAEClass, "framebuffers == null"); + goto exit; + } + if (offset < 0) { + _env->ThrowNew(IAEClass, "offset < 0"); + goto exit; + } + _remaining = _env->GetArrayLength(framebuffers_ref) - offset; + if (_remaining < n) { + _env->ThrowNew(IAEClass, "length - offset < n"); + goto exit; + } + framebuffers_base = (GLuint *) + _env->GetPrimitiveArrayCritical(framebuffers_ref, (jboolean *)0); + framebuffers = framebuffers_base + offset; + + glDeleteFramebuffersOES( + (GLsizei)n, + (GLuint *)framebuffers + ); + +exit: + if (framebuffers_base) { + _env->ReleasePrimitiveArrayCritical(framebuffers_ref, framebuffers_base, + JNI_ABORT); + } } /* void glDeleteFramebuffersOES ( GLsizei n, const GLuint *framebuffers ) */ static void android_glDeleteFramebuffersOES__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint n, jobject framebuffers_buf) { - _env->ThrowNew(UOEClass, - "glDeleteFramebuffersOES"); + jarray _array = (jarray) 0; + jint _remaining; + GLuint *framebuffers = (GLuint *) 0; + + framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining); + if (_remaining < n) { + _env->ThrowNew(IAEClass, "remaining() < n"); + goto exit; + } + glDeleteFramebuffersOES( + (GLsizei)n, + (GLuint *)framebuffers + ); + +exit: + if (_array) { + releasePointer(_env, _array, framebuffers, JNI_FALSE); + } } /* void glGenFramebuffersOES ( GLsizei n, GLuint *framebuffers ) */ static void android_glGenFramebuffersOES__I_3II (JNIEnv *_env, jobject _this, jint n, jintArray framebuffers_ref, jint offset) { - _env->ThrowNew(UOEClass, - "glGenFramebuffersOES"); + jint _exception = 0; + GLuint *framebuffers_base = (GLuint *) 0; + jint _remaining; + GLuint *framebuffers = (GLuint *) 0; + + if (!framebuffers_ref) { + _exception = 1; + _env->ThrowNew(IAEClass, "framebuffers == null"); + goto exit; + } + if (offset < 0) { + _exception = 1; + _env->ThrowNew(IAEClass, "offset < 0"); + goto exit; + } + _remaining = _env->GetArrayLength(framebuffers_ref) - offset; + if (_remaining < n) { + _exception = 1; + _env->ThrowNew(IAEClass, "length - offset < n"); + goto exit; + } + framebuffers_base = (GLuint *) + _env->GetPrimitiveArrayCritical(framebuffers_ref, (jboolean *)0); + framebuffers = framebuffers_base + offset; + + glGenFramebuffersOES( + (GLsizei)n, + (GLuint *)framebuffers + ); + +exit: + if (framebuffers_base) { + _env->ReleasePrimitiveArrayCritical(framebuffers_ref, framebuffers_base, + _exception ? JNI_ABORT: 0); + } } /* void glGenFramebuffersOES ( GLsizei n, GLuint *framebuffers ) */ static void android_glGenFramebuffersOES__ILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint n, jobject framebuffers_buf) { - _env->ThrowNew(UOEClass, - "glGenFramebuffersOES"); + jint _exception = 0; + jarray _array = (jarray) 0; + jint _remaining; + GLuint *framebuffers = (GLuint *) 0; + + framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining); + if (_remaining < n) { + _exception = 1; + _env->ThrowNew(IAEClass, "remaining() < n"); + goto exit; + } + glGenFramebuffersOES( + (GLsizei)n, + (GLuint *)framebuffers + ); + +exit: + if (_array) { + releasePointer(_env, _array, framebuffers, _exception ? JNI_FALSE : JNI_TRUE); + } } /* GLenum glCheckFramebufferStatusOES ( GLenum target ) */ static jint android_glCheckFramebufferStatusOES__I (JNIEnv *_env, jobject _this, jint target) { - _env->ThrowNew(UOEClass, - "glCheckFramebufferStatusOES"); - return 0; + GLenum _returnValue; + _returnValue = glCheckFramebufferStatusOES( + (GLenum)target + ); + return _returnValue; } /* void glFramebufferRenderbufferOES ( GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer ) */ static void android_glFramebufferRenderbufferOES__IIII (JNIEnv *_env, jobject _this, jint target, jint attachment, jint renderbuffertarget, jint renderbuffer) { - _env->ThrowNew(UOEClass, - "glFramebufferRenderbufferOES"); + glFramebufferRenderbufferOES( + (GLenum)target, + (GLenum)attachment, + (GLenum)renderbuffertarget, + (GLuint)renderbuffer + ); } /* void glFramebufferTexture2DOES ( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level ) */ static void android_glFramebufferTexture2DOES__IIIII (JNIEnv *_env, jobject _this, jint target, jint attachment, jint textarget, jint texture, jint level) { - _env->ThrowNew(UOEClass, - "glFramebufferTexture2DOES"); + glFramebufferTexture2DOES( + (GLenum)target, + (GLenum)attachment, + (GLenum)textarget, + (GLuint)texture, + (GLint)level + ); } /* void glGetFramebufferAttachmentParameterivOES ( GLenum target, GLenum attachment, GLenum pname, GLint *params ) */ static void android_glGetFramebufferAttachmentParameterivOES__III_3II (JNIEnv *_env, jobject _this, jint target, jint attachment, jint pname, jintArray params_ref, jint offset) { - _env->ThrowNew(UOEClass, - "glGetFramebufferAttachmentParameterivOES"); + jint _exception = 0; + GLint *params_base = (GLint *) 0; + jint _remaining; + GLint *params = (GLint *) 0; + + if (!params_ref) { + _exception = 1; + _env->ThrowNew(IAEClass, "params == null"); + goto exit; + } + if (offset < 0) { + _exception = 1; + _env->ThrowNew(IAEClass, "offset < 0"); + goto exit; + } + _remaining = _env->GetArrayLength(params_ref) - offset; + if (_remaining < 1) { + _exception = 1; + _env->ThrowNew(IAEClass, "length - offset < 1"); + goto exit; + } + params_base = (GLint *) + _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); + params = params_base + offset; + + glGetFramebufferAttachmentParameterivOES( + (GLenum)target, + (GLenum)attachment, + (GLenum)pname, + (GLint *)params + ); + +exit: + if (params_base) { + _env->ReleasePrimitiveArrayCritical(params_ref, params_base, + _exception ? JNI_ABORT: 0); + } } /* void glGetFramebufferAttachmentParameterivOES ( GLenum target, GLenum attachment, GLenum pname, GLint *params ) */ static void android_glGetFramebufferAttachmentParameterivOES__IIILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint target, jint attachment, jint pname, jobject params_buf) { - _env->ThrowNew(UOEClass, - "glGetFramebufferAttachmentParameterivOES"); + jint _exception = 0; + jarray _array = (jarray) 0; + jint _remaining; + GLint *params = (GLint *) 0; + + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + if (_remaining < 1) { + _exception = 1; + _env->ThrowNew(IAEClass, "remaining() < 1"); + goto exit; + } + glGetFramebufferAttachmentParameterivOES( + (GLenum)target, + (GLenum)attachment, + (GLenum)pname, + (GLint *)params + ); + +exit: + if (_array) { + releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); + } } /* void glGenerateMipmapOES ( GLenum target ) */ static void android_glGenerateMipmapOES__I (JNIEnv *_env, jobject _this, jint target) { - _env->ThrowNew(UOEClass, - "glGenerateMipmapOES"); + glGenerateMipmapOES( + (GLenum)target + ); } /* void glCurrentPaletteMatrixOES ( GLuint matrixpaletteindex ) */ diff --git a/core/jni/android_opengl_GLES20.cpp b/core/jni/android_opengl_GLES20.cpp index ef25319..7ac0f6e 100644 --- a/core/jni/android_opengl_GLES20.cpp +++ b/core/jni/android_opengl_GLES20.cpp @@ -249,16 +249,19 @@ android_glBlendColor__FFFF static void android_glBlendEquation__I (JNIEnv *_env, jobject _this, jint mode) { - _env->ThrowNew(UOEClass, - "glBlendEquation"); + glBlendEquation( + (GLenum)mode + ); } /* void glBlendEquationSeparate ( GLenum modeRGB, GLenum modeAlpha ) */ static void android_glBlendEquationSeparate__II (JNIEnv *_env, jobject _this, jint modeRGB, jint modeAlpha) { - _env->ThrowNew(UOEClass, - "glBlendEquationSeparate"); + glBlendEquationSeparate( + (GLenum)modeRGB, + (GLenum)modeAlpha + ); } /* void glBlendFunc ( GLenum sfactor, GLenum dfactor ) */ @@ -275,8 +278,12 @@ android_glBlendFunc__II static void android_glBlendFuncSeparate__IIII (JNIEnv *_env, jobject _this, jint srcRGB, jint dstRGB, jint srcAlpha, jint dstAlpha) { - _env->ThrowNew(UOEClass, - "glBlendFuncSeparate"); + glBlendFuncSeparate( + (GLenum)srcRGB, + (GLenum)dstRGB, + (GLenum)srcAlpha, + (GLenum)dstAlpha + ); } /* void glBufferData ( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage ) */ @@ -1643,16 +1650,69 @@ android_glGetBooleanv__ILjava_nio_IntBuffer_2 static void android_glGetBufferParameteriv__II_3II (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { - _env->ThrowNew(UOEClass, - "glGetBufferParameteriv"); + jint _exception = 0; + GLint *params_base = (GLint *) 0; + jint _remaining; + GLint *params = (GLint *) 0; + + if (!params_ref) { + _exception = 1; + _env->ThrowNew(IAEClass, "params == null"); + goto exit; + } + if (offset < 0) { + _exception = 1; + _env->ThrowNew(IAEClass, "offset < 0"); + goto exit; + } + _remaining = _env->GetArrayLength(params_ref) - offset; + if (_remaining < 1) { + _exception = 1; + _env->ThrowNew(IAEClass, "length - offset < 1"); + goto exit; + } + params_base = (GLint *) + _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); + params = params_base + offset; + + glGetBufferParameteriv( + (GLenum)target, + (GLenum)pname, + (GLint *)params + ); + +exit: + if (params_base) { + _env->ReleasePrimitiveArrayCritical(params_ref, params_base, + _exception ? JNI_ABORT: 0); + } } /* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ static void android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { - _env->ThrowNew(UOEClass, - "glGetBufferParameteriv"); + jint _exception = 0; + jarray _array = (jarray) 0; + jint _remaining; + GLint *params = (GLint *) 0; + + params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining); + if (_remaining < 1) { + _exception = 1; + _env->ThrowNew(IAEClass, "remaining() < 1"); + goto exit; + } + glGetBufferParameteriv( + (GLenum)target, + (GLenum)pname, + (GLint *)params + ); + +exit: + if (_array) { + releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); + } } /* GLenum glGetError ( void ) */ diff --git a/opengl/tools/glgen/specs/gles11/checks.spec b/opengl/tools/glgen/specs/gles11/checks.spec index f917128..f478a32 100644 --- a/opengl/tools/glgen/specs/gles11/checks.spec +++ b/opengl/tools/glgen/specs/gles11/checks.spec @@ -31,28 +31,12 @@ glDrawTexfvOES check coords 5 glDrawTexivOES check coords 5 glDrawTexsvOES check coords 5 glDrawTexxvOES check coords 5 -glBindFramebufferOES unsupported -glBindRenderbufferOES unsupported -glBlendEquation unsupported -glBlendEquationSeparate unsupported -glBlendFuncSeparate unsupported -glCheckFramebufferStatusOES unsupported return 0 -glDeleteFramebuffersOES unsupported -glDeleteRenderbuffersOES unsupported -glFramebufferRenderbufferOES unsupported -glFramebufferStorageOES unsupported -glFramebufferTexture2DOES unsupported -glGenFramebuffersOES unsupported -glGenRenderbuffersOES unsupported -glGenerateMipmapOES unsupported -glGetBufferParameter unsupported -glGetFramebufferAttachmentParameterivOES unsupported -glGetRenderbufferParameterivOES unsupported -glGetTexGen unsupported -glIsFramebufferOES unsupported return JNI_FALSE -glIsRenderbufferOES unsupported return JNI_FALSE -glRenderbufferStorageOES unsupported return false -glTexGen unsupported -glTexGenf unsupported -glTexGeni unsupported -glTexGenx unsupported +glDeleteFramebuffersOES check framebuffers n +glDeleteRenderbuffersOES check renderbuffers n +glGenFramebuffersOES check framebuffers n +glGenRenderbuffersOES check renderbuffers n +glGetBufferParameter check params 1 +glGetFramebufferAttachmentParameterivOES check params 1 +glGetRenderbufferParameterivOES check params 1 +glGetTexGen ifcheck params 1 pname GL_TEXTURE_GEN_MODE ifcheck params 4 pname GL_OBJECT_PLANE,GL_EYE_PLANE + |