diff options
author | Pablo Ceballos <pceballos@google.com> | 2016-02-29 22:58:54 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-02-29 22:58:56 +0000 |
commit | 86a27f343cd0c1bf5854aca4af6311faef45342f (patch) | |
tree | c5d0013022cc956de1ab59065d60cdd321b4c75c | |
parent | 9e9bce724e73c4d553dc1ff0ff8f80289487f609 (diff) | |
parent | 59fb43e7bdc607f49b301644e4300485f352b103 (diff) |
Merge "Fix glGetTransformFeedbackVarying JNI" into nyc-dev
-rw-r--r-- | api/current.txt | 3 | ||||
-rw-r--r-- | api/system-current.txt | 3 | ||||
-rw-r--r-- | api/test-current.txt | 3 | ||||
-rw-r--r-- | core/jni/android_opengl_GLES30.cpp | 27 | ||||
-rw-r--r-- | opengl/java/android/opengl/GLES30.java | 17 |
5 files changed, 44 insertions, 9 deletions
diff --git a/api/current.txt b/api/current.txt index d4f9d73124af..f1647d04eaf6 100644 --- a/api/current.txt +++ b/api/current.txt @@ -26859,7 +26859,8 @@ package android.opengl { method public static void glGetSynciv(long, int, int, int[], int, int[], int); method public static void glGetSynciv(long, int, int, java.nio.IntBuffer, java.nio.IntBuffer); method public static void glGetTransformFeedbackVarying(int, int, int, int[], int, int[], int, int[], int, byte[], int); - method public static void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, byte); + method public static deprecated void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, byte); + method public static void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.ByteBuffer); method public static java.lang.String glGetTransformFeedbackVarying(int, int, int[], int, int[], int); method public static java.lang.String glGetTransformFeedbackVarying(int, int, java.nio.IntBuffer, java.nio.IntBuffer); method public static int glGetUniformBlockIndex(int, java.lang.String); diff --git a/api/system-current.txt b/api/system-current.txt index db90b8903d96..61a8953516c8 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -29161,7 +29161,8 @@ package android.opengl { method public static void glGetSynciv(long, int, int, int[], int, int[], int); method public static void glGetSynciv(long, int, int, java.nio.IntBuffer, java.nio.IntBuffer); method public static void glGetTransformFeedbackVarying(int, int, int, int[], int, int[], int, int[], int, byte[], int); - method public static void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, byte); + method public static deprecated void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, byte); + method public static void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.ByteBuffer); method public static java.lang.String glGetTransformFeedbackVarying(int, int, int[], int, int[], int); method public static java.lang.String glGetTransformFeedbackVarying(int, int, java.nio.IntBuffer, java.nio.IntBuffer); method public static int glGetUniformBlockIndex(int, java.lang.String); diff --git a/api/test-current.txt b/api/test-current.txt index ad3a5e64463f..d2d470bbd274 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -26868,7 +26868,8 @@ package android.opengl { method public static void glGetSynciv(long, int, int, int[], int, int[], int); method public static void glGetSynciv(long, int, int, java.nio.IntBuffer, java.nio.IntBuffer); method public static void glGetTransformFeedbackVarying(int, int, int, int[], int, int[], int, int[], int, byte[], int); - method public static void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, byte); + method public static deprecated void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, byte); + method public static void glGetTransformFeedbackVarying(int, int, int, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.IntBuffer, java.nio.ByteBuffer); method public static java.lang.String glGetTransformFeedbackVarying(int, int, int[], int, int[], int); method public static java.lang.String glGetTransformFeedbackVarying(int, int, java.nio.IntBuffer, java.nio.IntBuffer); method public static int glGetUniformBlockIndex(int, java.lang.String); diff --git a/core/jni/android_opengl_GLES30.cpp b/core/jni/android_opengl_GLES30.cpp index 2d69eaa516c3..59b8911487b9 100644 --- a/core/jni/android_opengl_GLES30.cpp +++ b/core/jni/android_opengl_GLES30.cpp @@ -2012,22 +2012,35 @@ exit: static void android_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) { + jniThrowException(_env, "java/lang/UnsupportedOperationException", "deprecated"); +} + +/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ +static void +android_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_ByteBuffer_2 + (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jobject name_buf) { jintArray _lengthArray = (jintArray) 0; jint _lengthBufferOffset = (jint) 0; jintArray _sizeArray = (jintArray) 0; jint _sizeBufferOffset = (jint) 0; jintArray _typeArray = (jintArray) 0; jint _typeBufferOffset = (jint) 0; + jbyteArray _nameArray = (jbyteArray)0; + jint _nameBufferOffset = (jint)0; jint _lengthRemaining; GLsizei *length = (GLsizei *) 0; jint _sizeRemaining; GLint *size = (GLint *) 0; jint _typeRemaining; GLenum *type = (GLenum *) 0; + jint _nameRemaining; + GLchar* name = (GLchar*)0; + length = (GLsizei *)getPointer(_env, length_buf, (jarray*)&_lengthArray, &_lengthRemaining, &_lengthBufferOffset); size = (GLint *)getPointer(_env, size_buf, (jarray*)&_sizeArray, &_sizeRemaining, &_sizeBufferOffset); type = (GLenum *)getPointer(_env, type_buf, (jarray*)&_typeArray, &_typeRemaining, &_typeBufferOffset); + name = (GLchar*)getPointer(_env, name_buf, (jarray*)&_nameArray, &_nameRemaining, &_nameBufferOffset); if (length == NULL) { char * _lengthBase = (char *)_env->GetIntArrayElements(_lengthArray, (jboolean *) 0); length = (GLsizei *) (_lengthBase + _lengthBufferOffset); @@ -2040,6 +2053,10 @@ android_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuff char * _typeBase = (char *)_env->GetIntArrayElements(_typeArray, (jboolean *) 0); type = (GLenum *) (_typeBase + _typeBufferOffset); } + if (name == NULL) { + char* _nameBase = (char *)_env->GetByteArrayElements(_nameArray, (jboolean*)0); + name = (GLchar *) (_nameBase + _nameBufferOffset); + } glGetTransformFeedbackVarying( (GLuint)program, (GLuint)index, @@ -2047,11 +2064,7 @@ android_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuff (GLsizei *)length, (GLint *)size, (GLenum *)type, - // The cast below is incorrect. The driver will end up writing to the - // address specified by name, which will always crash the process since - // it is guaranteed to be in low memory. The additional static_cast - // suppresses the warning for now. http://b/19478262 - (char *)static_cast<uintptr_t>(name) + (GLchar*)name ); if (_typeArray) { releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _typeArray, (jint*)type, JNI_TRUE); @@ -2062,6 +2075,9 @@ android_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuff if (_lengthArray) { releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _lengthArray, (jint*)length, JNI_TRUE); } + if (_nameArray) { + releaseArrayPointer<jbyteArray, jbyte*, ByteArrayReleaser>(_env, _nameArray, (jbyte*)name, JNI_TRUE); + } } /* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ @@ -5233,6 +5249,7 @@ static const JNINativeMethod methods[] = { {"glTransformFeedbackVaryings", "(I[Ljava/lang/String;I)V", (void *) android_glTransformFeedbackVaryings }, {"glGetTransformFeedbackVarying", "(III[II[II[II[BI)V", (void *) android_glGetTransformFeedbackVarying__III_3II_3II_3II_3BI }, {"glGetTransformFeedbackVarying", "(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V", (void *) android_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B }, +{"glGetTransformFeedbackVarying", "(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/ByteBuffer;)V", (void *) android_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_ByteBuffer_2 }, {"glGetTransformFeedbackVarying", "(II[II[II)Ljava/lang/String;", (void *) android_glGetTransformFeedbackVarying1 }, {"glGetTransformFeedbackVarying", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;", (void *) android_glGetTransformFeedbackVarying2 }, {"glVertexAttribIPointerBounds", "(IIIILjava/nio/Buffer;I)V", (void *) android_glVertexAttribIPointerBounds__IIIILjava_nio_Buffer_2I }, diff --git a/opengl/java/android/opengl/GLES30.java b/opengl/java/android/opengl/GLES30.java index 9c3b505e3270..74181c513753 100644 --- a/opengl/java/android/opengl/GLES30.java +++ b/opengl/java/android/opengl/GLES30.java @@ -889,7 +889,10 @@ public class GLES30 extends GLES20 { ); // C function void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) - + /** + * @deprecated + * Use the version that takes a ByteBuffer as the last argument, or the versions that return a String. + * */ public static native void glGetTransformFeedbackVarying( int program, int index, @@ -902,6 +905,18 @@ public class GLES30 extends GLES20 { // C function void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) + public static native void glGetTransformFeedbackVarying( + int program, + int index, + int bufsize, + java.nio.IntBuffer length, + java.nio.IntBuffer size, + java.nio.IntBuffer type, + java.nio.ByteBuffer name + ); + + // C function void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) + public static native String glGetTransformFeedbackVarying( int program, int index, |