diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-08-03 16:23:07 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-08-03 16:23:07 -0700 |
commit | 9df76c7c2f94cf3a66a61b28432b7c5d68869255 (patch) | |
tree | 4f5fc5985c51bfccaad47108027055ffc0c83eef /graphics | |
parent | 8a173f7632c517965f2f482a5a01c514907a076e (diff) | |
parent | bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacb (diff) | |
download | frameworks_base-9df76c7c2f94cf3a66a61b28432b7c5d68869255.zip frameworks_base-9df76c7c2f94cf3a66a61b28432b7c5d68869255.tar.gz frameworks_base-9df76c7c2f94cf3a66a61b28432b7c5d68869255.tar.bz2 |
Merge change 9551
* changes:
Implement the jni bindings for Adapter2D. Fix a refcount bug in the native adapter implementation. Use adapters in Film to border the mipmaps.
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/java/android/renderscript/Allocation.java | 48 | ||||
-rw-r--r-- | graphics/java/android/renderscript/RenderScript.java | 24 | ||||
-rw-r--r-- | graphics/jni/android_renderscript_RenderScript.cpp | 91 |
3 files changed, 144 insertions, 19 deletions
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java index 1327328..3b6571a 100644 --- a/graphics/java/android/renderscript/Allocation.java +++ b/graphics/java/android/renderscript/Allocation.java @@ -90,14 +90,14 @@ public class Allocation extends BaseObj { mRS.nAdapter1DData(mID, d); } - public void subData(int off, int count, int[] d) { - mRS.nAdapter1DSubData(mID, off, count, d); - } - public void data(float[] d) { mRS.nAdapter1DData(mID, d); } + public void subData(int off, int count, int[] d) { + mRS.nAdapter1DSubData(mID, off, count, d); + } + public void subData(int off, int count, float[] d) { mRS.nAdapter1DSubData(mID, off, count, d); } @@ -112,6 +112,46 @@ public class Allocation extends BaseObj { } + public class Adapter2D extends BaseObj { + Adapter2D(int id, RenderScript rs) { + super(rs); + mID = id; + } + + public void destroy() { + mRS.nAdapter2DDestroy(mID); + mID = 0; + } + + public void setConstraint(Dimension dim, int value) { + mRS.nAdapter2DSetConstraint(mID, dim.mID, value); + } + + public void data(int[] d) { + mRS.nAdapter2DData(mID, d); + } + + public void data(float[] d) { + mRS.nAdapter2DData(mID, d); + } + + public void subData(int xoff, int yoff, int w, int h, int[] d) { + mRS.nAdapter2DSubData(mID, xoff, yoff, w, h, d); + } + + public void subData(int xoff, int yoff, int w, int h, float[] d) { + mRS.nAdapter2DSubData(mID, xoff, yoff, w, h, d); + } + } + + public Adapter2D createAdapter2D() { + int id = mRS.nAdapter2DCreate(); + if (id != 0) { + mRS.nAdapter2DBindAllocation(id, mID); + } + return new Adapter2D(id, mRS); + } + // creation diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java index dc87b6a..dd7dd02 100644 --- a/graphics/java/android/renderscript/RenderScript.java +++ b/graphics/java/android/renderscript/RenderScript.java @@ -113,11 +113,20 @@ public class RenderScript { native void nAdapter1DBindAllocation(int ad, int alloc); native void nAdapter1DSetConstraint(int ad, int dim, int value); native void nAdapter1DData(int ad, int[] d); - native void nAdapter1DSubData(int ad, int off, int count, int[] d); native void nAdapter1DData(int ad, float[] d); + native void nAdapter1DSubData(int ad, int off, int count, int[] d); native void nAdapter1DSubData(int ad, int off, int count, float[] d); native int nAdapter1DCreate(); + native void nAdapter2DDestroy(int id); + native void nAdapter2DBindAllocation(int ad, int alloc); + native void nAdapter2DSetConstraint(int ad, int dim, int value); + native void nAdapter2DData(int ad, int[] d); + native void nAdapter2DData(int ad, float[] d); + native void nAdapter2DSubData(int ad, int xoff, int yoff, int w, int h, int[] d); + native void nAdapter2DSubData(int ad, int xoff, int yoff, int w, int h, float[] d); + native int nAdapter2DCreate(); + native void nScriptDestroy(int script); native void nScriptBindAllocation(int vtm, int alloc, int slot); native void nScriptCBegin(); @@ -720,19 +729,6 @@ public class RenderScript { nContextBindProgramVertex(pf.mID); } -/* - RsAdapter2D rsAdapter2DCreate (); - void rsAdapter2DBindAllocation (RsAdapter2D adapt, RsAllocation alloc); - void rsAdapter2DDestroy (RsAdapter2D adapter); - void rsAdapter2DSetConstraint (RsAdapter2D adapter, RsDimension dim, uint32_t value); - void rsAdapter2DData (RsAdapter2D adapter, const void * data); - void rsAdapter2DSubData (RsAdapter2D adapter, uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, const void * data); - void rsSamplerBegin (); - void rsSamplerSet (RsSamplerParam p, RsSamplerValue value); - RsSampler rsSamplerCreate (); - void rsSamplerBind (RsSampler sampler, RsAllocation alloc); -*/ - } diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp index a02abca..f5227a0 100644 --- a/graphics/jni/android_renderscript_RenderScript.cpp +++ b/graphics/jni/android_renderscript_RenderScript.cpp @@ -551,6 +551,86 @@ nAdapter1DCreate(JNIEnv *_env, jobject _this) // ----------------------------------- static void +nAdapter2DDestroy(JNIEnv *_env, jobject _this, jint adapter) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + LOG_API("nAdapter2DDestroy, con(%p), adapter(%p)", con, (RsAdapter2D)adapter); + rsAdapter2DDestroy((RsAdapter2D)adapter); +} + +static void +nAdapter2DBindAllocation(JNIEnv *_env, jobject _this, jint adapter, jint alloc) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + LOG_API("nAdapter2DBindAllocation, con(%p), adapter(%p), alloc(%p)", con, (RsAdapter2D)adapter, (RsAllocation)alloc); + rsAdapter2DBindAllocation((RsAdapter2D)adapter, (RsAllocation)alloc); +} + +static void +nAdapter2DSetConstraint(JNIEnv *_env, jobject _this, jint adapter, jint dim, jint value) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + LOG_API("nAdapter2DSetConstraint, con(%p), adapter(%p), dim(%i), value(%i)", con, (RsAdapter2D)adapter, dim, value); + rsAdapter2DSetConstraint((RsAdapter2D)adapter, (RsDimension)dim, value); +} + +static void +nAdapter2DData_i(JNIEnv *_env, jobject _this, jint adapter, jintArray data) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + jint len = _env->GetArrayLength(data); + LOG_API("nAdapter2DData_i, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); + jint *ptr = _env->GetIntArrayElements(data, NULL); + rsAdapter2DData((RsAdapter2D)adapter, ptr); + _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); +} + +static void +nAdapter2DData_f(JNIEnv *_env, jobject _this, jint adapter, jfloatArray data) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + jint len = _env->GetArrayLength(data); + LOG_API("nAdapter2DData_f, con(%p), adapter(%p), len(%i)", con, (RsAdapter2D)adapter, len); + jfloat *ptr = _env->GetFloatArrayElements(data, NULL); + rsAdapter2DData((RsAdapter2D)adapter, ptr); + _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); +} + +static void +nAdapter2DSubData_i(JNIEnv *_env, jobject _this, jint adapter, jint xoff, jint yoff, jint w, jint h, jintArray data) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + jint len = _env->GetArrayLength(data); + LOG_API("nAdapter2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", + con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); + jint *ptr = _env->GetIntArrayElements(data, NULL); + rsAdapter2DSubData((RsAdapter2D)adapter, xoff, yoff, w, h, ptr); + _env->ReleaseIntArrayElements(data, ptr, 0/*JNI_ABORT*/); +} + +static void +nAdapter2DSubData_f(JNIEnv *_env, jobject _this, jint adapter, jint xoff, jint yoff, jint w, jint h, jfloatArray data) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + jint len = _env->GetArrayLength(data); + LOG_API("nAdapter2DSubData_f, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", + con, (RsAdapter2D)adapter, xoff, yoff, w, h, len); + jfloat *ptr = _env->GetFloatArrayElements(data, NULL); + rsAdapter2DSubData((RsAdapter1D)adapter, xoff, yoff, w, h, ptr); + _env->ReleaseFloatArrayElements(data, ptr, 0/*JNI_ABORT*/); +} + +static jint +nAdapter2DCreate(JNIEnv *_env, jobject _this) +{ + RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); + LOG_API("nAdapter2DCreate, con(%p)", con); + return (jint)rsAdapter2DCreate(); +} + +// ----------------------------------- + +static void nScriptDestroy(JNIEnv *_env, jobject _this, jint script) { RsContext con = (RsContext)(_env->GetIntField(_this, gContextId)); @@ -1058,11 +1138,20 @@ static JNINativeMethod methods[] = { {"nAdapter1DBindAllocation", "(II)V", (void*)nAdapter1DBindAllocation }, {"nAdapter1DSetConstraint", "(III)V", (void*)nAdapter1DSetConstraint }, {"nAdapter1DData", "(I[I)V", (void*)nAdapter1DData_i }, -{"nAdapter1DSubData", "(III[I)V", (void*)nAdapter1DSubData_i }, {"nAdapter1DData", "(I[F)V", (void*)nAdapter1DData_f }, +{"nAdapter1DSubData", "(III[I)V", (void*)nAdapter1DSubData_i }, {"nAdapter1DSubData", "(III[F)V", (void*)nAdapter1DSubData_f }, {"nAdapter1DCreate", "()I", (void*)nAdapter1DCreate }, +{"nAdapter2DDestroy", "(I)V", (void*)nAdapter2DDestroy }, +{"nAdapter2DBindAllocation", "(II)V", (void*)nAdapter2DBindAllocation }, +{"nAdapter2DSetConstraint", "(III)V", (void*)nAdapter2DSetConstraint }, +{"nAdapter2DData", "(I[I)V", (void*)nAdapter2DData_i }, +{"nAdapter2DData", "(I[F)V", (void*)nAdapter2DData_f }, +{"nAdapter2DSubData", "(IIIII[I)V", (void*)nAdapter2DSubData_i }, +{"nAdapter2DSubData", "(IIIII[F)V", (void*)nAdapter2DSubData_f }, +{"nAdapter2DCreate", "()I", (void*)nAdapter2DCreate }, + {"nScriptDestroy", "(I)V", (void*)nScriptDestroy }, {"nScriptBindAllocation", "(III)V", (void*)nScriptBindAllocation }, {"nScriptCBegin", "()V", (void*)nScriptCBegin }, |