summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPablo Ceballos <pceballos@google.com>2016-02-22 11:50:31 -0800
committerPablo Ceballos <pceballos@google.com>2016-02-22 11:50:31 -0800
commit68981ff03b2c166800ddc82973a2aa95269a343b (patch)
treec39d1cfbe15b949d03fa9420f2b70a6d54bd6058
parentde1eaab7f71a7bafd46e67fad2d591743061b5b8 (diff)
Add glReadPixels with buffer-offset argument
- For reading into PBOs on GLES3, add an overloaded version of glReadPixels that takes an offset argument. Bug 18878609 Change-Id: I744483deab6358a66b0dc5e87be1ae2b96560ac1
-rw-r--r--api/current.txt1
-rw-r--r--api/system-current.txt1
-rw-r--r--api/test-current.txt1
-rw-r--r--core/jni/android_opengl_GLES30.cpp16
-rw-r--r--opengl/java/android/opengl/GLES30.java12
5 files changed, 31 insertions, 0 deletions
diff --git a/api/current.txt b/api/current.txt
index abc9e9a2b163..60b28af5faa1 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -26851,6 +26851,7 @@ package android.opengl {
method public static void glProgramBinary(int, int, java.nio.Buffer, int);
method public static void glProgramParameteri(int, int, int);
method public static void glReadBuffer(int);
+ method public static void glReadPixels(int, int, int, int, int, int, int);
method public static void glRenderbufferStorageMultisample(int, int, int, int, int);
method public static void glResumeTransformFeedback();
method public static void glSamplerParameterf(int, int, float);
diff --git a/api/system-current.txt b/api/system-current.txt
index b36d7e89cb8d..5feb8ac2767c 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -29143,6 +29143,7 @@ package android.opengl {
method public static void glProgramBinary(int, int, java.nio.Buffer, int);
method public static void glProgramParameteri(int, int, int);
method public static void glReadBuffer(int);
+ method public static void glReadPixels(int, int, int, int, int, int, int);
method public static void glRenderbufferStorageMultisample(int, int, int, int, int);
method public static void glResumeTransformFeedback();
method public static void glSamplerParameterf(int, int, float);
diff --git a/api/test-current.txt b/api/test-current.txt
index 3878fbf25e31..2ebf8f876beb 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -26860,6 +26860,7 @@ package android.opengl {
method public static void glProgramBinary(int, int, java.nio.Buffer, int);
method public static void glProgramParameteri(int, int, int);
method public static void glReadBuffer(int);
+ method public static void glReadPixels(int, int, int, int, int, int, int);
method public static void glRenderbufferStorageMultisample(int, int, int, int, int);
method public static void glResumeTransformFeedback();
method public static void glSamplerParameterf(int, int, float);
diff --git a/core/jni/android_opengl_GLES30.cpp b/core/jni/android_opengl_GLES30.cpp
index c9b5af74183f..2d69eaa516c3 100644
--- a/core/jni/android_opengl_GLES30.cpp
+++ b/core/jni/android_opengl_GLES30.cpp
@@ -5155,6 +5155,21 @@ android_glGetInternalformativ__IIIILjava_nio_IntBuffer_2
}
}
+/* void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint offset ) */
+static void
+android_glReadPixels__IIIIIII
+ (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jint offset) {
+ glReadPixels(
+ (GLint)x,
+ (GLint)y,
+ (GLsizei)width,
+ (GLsizei)height,
+ (GLenum)format,
+ (GLenum)type,
+ reinterpret_cast<GLvoid *>(offset)
+ );
+}
+
static const char *classPathName = "android/opengl/GLES30";
static const JNINativeMethod methods[] = {
@@ -5320,6 +5335,7 @@ static const JNINativeMethod methods[] = {
{"glTexStorage3D", "(IIIIII)V", (void *) android_glTexStorage3D__IIIIII },
{"glGetInternalformativ", "(IIII[II)V", (void *) android_glGetInternalformativ__IIII_3II },
{"glGetInternalformativ", "(IIIILjava/nio/IntBuffer;)V", (void *) android_glGetInternalformativ__IIIILjava_nio_IntBuffer_2 },
+{"glReadPixels", "(IIIIIII)V", (void *) android_glReadPixels__IIIIIII },
};
int register_android_opengl_jni_GLES30(JNIEnv *_env)
diff --git a/opengl/java/android/opengl/GLES30.java b/opengl/java/android/opengl/GLES30.java
index 342ffa41993e..9c3b505e3270 100644
--- a/opengl/java/android/opengl/GLES30.java
+++ b/opengl/java/android/opengl/GLES30.java
@@ -1791,4 +1791,16 @@ public class GLES30 extends GLES20 {
java.nio.IntBuffer params
);
+ // C function void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint offset )
+
+ public static native void glReadPixels(
+ int x,
+ int y,
+ int width,
+ int height,
+ int format,
+ int type,
+ int offset
+ );
+
}