summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--graphics/java/android/renderscript/Allocation.java36
-rw-r--r--graphics/java/android/renderscript/RenderScript.java11
-rw-r--r--graphics/jni/android_renderscript_RenderScript.cpp40
-rw-r--r--tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java6
-rw-r--r--tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/UsageIO.java66
5 files changed, 87 insertions, 72 deletions
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java
index 1c83c51..2f3e48c 100644
--- a/graphics/java/android/renderscript/Allocation.java
+++ b/graphics/java/android/renderscript/Allocation.java
@@ -1246,24 +1246,6 @@ public class Allocation extends BaseObj {
}
/**
- *
- *
- * @hide
- *
- */
- public SurfaceTexture getSurfaceTexture() {
- if ((mUsage & USAGE_IO_INPUT) == 0) {
- throw new RSInvalidStateException("Allocation is not a surface texture.");
- }
-
- int id = mRS.nAllocationGetSurfaceTextureID(getID(mRS));
- SurfaceTexture st = new SurfaceTexture(id);
- mRS.nAllocationGetSurfaceTextureID2(getID(mRS), st);
-
- return st;
- }
-
- /**
* For allocations used with io operations, returns the handle
* onto a raw buffer that is being managed by the screen
* compositor.
@@ -1272,7 +1254,10 @@ public class Allocation extends BaseObj {
*
*/
public Surface getSurface() {
- return new Surface(getSurfaceTexture());
+ if ((mUsage & USAGE_IO_INPUT) == 0) {
+ throw new RSInvalidStateException("Allocation is not a surface texture.");
+ }
+ return mRS.nAllocationGetSurface(getID(mRS));
}
/**
@@ -1290,19 +1275,6 @@ public class Allocation extends BaseObj {
}
/**
- * @hide
- */
- public void setSurfaceTexture(SurfaceTexture st) {
- mRS.validate();
- if ((mUsage & USAGE_IO_OUTPUT) == 0) {
- throw new RSInvalidStateException("Allocation is not USAGE_IO_OUTPUT.");
- }
-
- Surface s = new Surface(st);
- mRS.nAllocationSetSurface(getID(mRS), s);
- }
-
- /**
* Creates a RenderScript allocation from a bitmap.
*
* With target API version 18 or greater, this allocation will be
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index 10f4daa..c3fcbb5 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -303,15 +303,10 @@ public class RenderScript {
validate();
rsnAllocationSyncAll(mContext, alloc, src);
}
- native int rsnAllocationGetSurfaceTextureID(int con, int alloc);
- synchronized int nAllocationGetSurfaceTextureID(int alloc) {
+ native Surface rsnAllocationGetSurface(int con, int alloc);
+ synchronized Surface nAllocationGetSurface(int alloc) {
validate();
- return rsnAllocationGetSurfaceTextureID(mContext, alloc);
- }
- native void rsnAllocationGetSurfaceTextureID2(int con, int alloc, SurfaceTexture st);
- synchronized void nAllocationGetSurfaceTextureID2(int alloc, SurfaceTexture st) {
- validate();
- rsnAllocationGetSurfaceTextureID2(mContext, alloc, st);
+ return rsnAllocationGetSurface(mContext, alloc);
}
native void rsnAllocationSetSurface(int con, int alloc, Surface sur);
synchronized void nAllocationSetSurface(int alloc, Surface sur) {
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index 5e631af..5b3758a 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -237,23 +237,6 @@ nContextSetSurface(JNIEnv *_env, jobject _this, RsContext con, jint width, jint
}
static void
-nContextSetSurfaceTexture(JNIEnv *_env, jobject _this, RsContext con, jint width, jint height, jobject sur)
-{
- LOG_API("nContextSetSurfaceTexture, con(%p), width(%i), height(%i), surface(%p)", con, width, height, (Surface *)sur);
-
- sp<ANativeWindow> window;
- sp<GLConsumer> st;
- if (sur == 0) {
-
- } else {
- st = SurfaceTexture_getSurfaceTexture(_env, sur);
- window = new Surface(st->getBufferQueue());
- }
-
- rsContextSetSurface(con, width, height, window.get());
-}
-
-static void
nContextDestroy(JNIEnv *_env, jobject _this, RsContext con)
{
LOG_API("nContextDestroy, con(%p)", con);
@@ -487,20 +470,17 @@ nAllocationSyncAll(JNIEnv *_env, jobject _this, RsContext con, jint a, jint bits
rsAllocationSyncAll(con, (RsAllocation)a, (RsAllocationUsageType)bits);
}
-static jint
-nAllocationGetSurfaceTextureID(JNIEnv *_env, jobject _this, RsContext con, jint a)
+static jobject
+nAllocationGetSurface(JNIEnv *_env, jobject _this, RsContext con, jint a)
{
- LOG_API("nAllocationGetSurfaceTextureID, con(%p), a(%p)", con, (RsAllocation)a);
- return rsAllocationGetSurfaceTextureID(con, (RsAllocation)a);
-}
+ LOG_API("nAllocationGetSurface, con(%p), a(%p)", con, (RsAllocation)a);
-static void
-nAllocationGetSurfaceTextureID2(JNIEnv *_env, jobject _this, RsContext con, jint a, jobject jst)
-{
- LOG_API("nAllocationGetSurfaceTextureID2, con(%p), a(%p)", con, (RsAllocation)a);
- sp<GLConsumer> st = SurfaceTexture_getSurfaceTexture(_env, jst);
+ IGraphicBufferProducer *v = (IGraphicBufferProducer *)rsAllocationGetSurface(con, (RsAllocation)a);
+ sp<IGraphicBufferProducer> bp = v;
+ v->decStrong(NULL);
- rsAllocationGetSurfaceTextureID2(con, (RsAllocation)a, st.get(), sizeof(GLConsumer *));
+ jobject o = android_view_Surface_createFromIGraphicBufferProducer(_env, bp);
+ return o;
}
static void
@@ -1488,7 +1468,6 @@ static JNINativeMethod methods[] = {
{"rsnContextFinish", "(I)V", (void*)nContextFinish },
{"rsnContextSetPriority", "(II)V", (void*)nContextSetPriority },
{"rsnContextSetSurface", "(IIILandroid/view/Surface;)V", (void*)nContextSetSurface },
-{"rsnContextSetSurfaceTexture", "(IIILandroid/graphics/SurfaceTexture;)V", (void*)nContextSetSurfaceTexture },
{"rsnContextDestroy", "(I)V", (void*)nContextDestroy },
{"rsnContextDump", "(II)V", (void*)nContextDump },
{"rsnContextPause", "(I)V", (void*)nContextPause },
@@ -1526,8 +1505,7 @@ static JNINativeMethod methods[] = {
{"rsnAllocationCopyToBitmap", "(IILandroid/graphics/Bitmap;)V", (void*)nAllocationCopyToBitmap },
{"rsnAllocationSyncAll", "(III)V", (void*)nAllocationSyncAll },
-{"rsnAllocationGetSurfaceTextureID", "(II)I", (void*)nAllocationGetSurfaceTextureID },
-{"rsnAllocationGetSurfaceTextureID2","(IILandroid/graphics/SurfaceTexture;)V",(void*)nAllocationGetSurfaceTextureID2 },
+{"rsnAllocationGetSurface", "(II)Landroid/view/Surface;", (void*)nAllocationGetSurface },
{"rsnAllocationSetSurface", "(IILandroid/view/Surface;)V", (void*)nAllocationSetSurface },
{"rsnAllocationIoSend", "(II)V", (void*)nAllocationIoSend },
{"rsnAllocationIoReceive", "(II)V", (void*)nAllocationIoReceive },
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
index 0a78908..d2139ea 100644
--- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
+++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
@@ -97,7 +97,8 @@ public class ImageProcessingActivity extends Activity
EXPOSURE ("Exposure"),
WHITE_BALANCE ("White Balance"),
COLOR_CUBE ("Color Cube"),
- COLOR_CUBE_3D_INTRINSIC ("Color Cube (3D LUT intrinsic)");
+ COLOR_CUBE_3D_INTRINSIC ("Color Cube (3D LUT intrinsic)"),
+ USAGE_IO ("Usage io)");
private final String name;
@@ -352,6 +353,9 @@ public class ImageProcessingActivity extends Activity
case COLOR_CUBE_3D_INTRINSIC:
mTest = new ColorCube(true);
break;
+ case USAGE_IO:
+ mTest = new UsageIO();
+ break;
}
mTest.createBaseTest(this, mBitmapIn, mBitmapIn2, mBitmapOut);
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/UsageIO.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/UsageIO.java
new file mode 100644
index 0000000..3f86311
--- /dev/null
+++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/UsageIO.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.rs.image;
+
+import java.lang.Math;
+
+import android.view.Surface;
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RenderScript;
+import android.renderscript.ScriptIntrinsicConvolve3x3;
+import android.renderscript.ScriptIntrinsicColorMatrix;
+import android.renderscript.Type;
+import android.renderscript.Matrix4f;
+import android.renderscript.ScriptGroup;
+import android.util.Log;
+
+public class UsageIO extends TestBase {
+ private ScriptIntrinsicColorMatrix mMatrix;
+
+ private Allocation mScratchPixelsAllocation1;
+ private Allocation mScratchPixelsAllocation2;
+
+ public UsageIO() {
+ }
+
+ public void createTest(android.content.res.Resources res) {
+ mMatrix = ScriptIntrinsicColorMatrix.create(mRS, Element.U8_4(mRS));
+
+ Matrix4f m = new Matrix4f();
+ m.set(1, 0, 0.2f);
+ m.set(1, 1, 0.9f);
+ m.set(1, 2, 0.2f);
+ mMatrix.setColorMatrix(m);
+
+ Type connect = mInPixelsAllocation.getType();
+
+ mScratchPixelsAllocation1 = Allocation.createTyped(mRS, connect, Allocation.USAGE_IO_OUTPUT | Allocation.USAGE_SCRIPT);
+ mScratchPixelsAllocation2 = Allocation.createTyped(mRS, connect, Allocation.USAGE_IO_INPUT | Allocation.USAGE_SCRIPT);
+
+ Surface s = mScratchPixelsAllocation2.getSurface();
+ mScratchPixelsAllocation1.setSurface(s);
+ }
+
+ public void runTest() {
+ mScratchPixelsAllocation1.copyFrom(mInPixelsAllocation);
+ mScratchPixelsAllocation1.ioSend();
+ mScratchPixelsAllocation2.ioReceive();
+ mMatrix.forEach(mScratchPixelsAllocation2, mOutPixelsAllocation);
+ }
+
+}