RS compatlib is not thunking LaunchOptions correctly
bug 8680826
Change-Id: I22af3a5f5bc583beaff9c96c086a2deee0369443
diff --git a/renderscript/v8/java/src/android/support/v8/renderscript/Script.java b/renderscript/v8/java/src/android/support/v8/renderscript/Script.java
index 33dd4ed..596c387 100644
--- a/renderscript/v8/java/src/android/support/v8/renderscript/Script.java
+++ b/renderscript/v8/java/src/android/support/v8/renderscript/Script.java
@@ -249,6 +249,11 @@
}
protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v, LaunchOptions sc) {
+ if (mT != null) {
+ mT.thunkForEach(slot, ain, aout, v, sc);
+ return;
+ }
+
if (ain == null && aout == null) {
throw new RSIllegalArgumentException(
"At least one of ain or aout is required to be non-null.");
diff --git a/renderscript/v8/java/src/android/support/v8/renderscript/ScriptCThunker.java b/renderscript/v8/java/src/android/support/v8/renderscript/ScriptCThunker.java
index 50b7904..130e408 100644
--- a/renderscript/v8/java/src/android/support/v8/renderscript/ScriptCThunker.java
+++ b/renderscript/v8/java/src/android/support/v8/renderscript/ScriptCThunker.java
@@ -92,6 +92,31 @@
forEach(slot, nin, nout, nfp);
}
+ void thunkForEach(int slot, Allocation ain, Allocation aout, FieldPacker v,
+ android.support.v8.renderscript.Script.LaunchOptions sc) {
+ android.renderscript.Script.LaunchOptions lo = null;
+ if (sc != null) {
+ lo = new android.renderscript.Script.LaunchOptions();
+ if (sc.getXEnd() > 0) lo.setX(sc.getXStart(), sc.getXEnd());
+ if (sc.getYEnd() > 0) lo.setY(sc.getYStart(), sc.getYEnd());
+ if (sc.getZEnd() > 0) lo.setZ(sc.getZStart(), sc.getZEnd());
+ }
+
+ android.renderscript.Allocation nin = null;
+ android.renderscript.Allocation nout = null;
+ android.renderscript.FieldPacker nfp = null;
+ if (ain != null) {
+ nin = ((AllocationThunker)ain).mN;
+ }
+ if (aout != null) {
+ nout = ((AllocationThunker)aout).mN;
+ }
+ if (v != null) {
+ nfp = new android.renderscript.FieldPacker(v.getData());
+ }
+ forEach(slot, nin, nout, nfp, lo);
+ }
+
void thunkSetVar(int index, float v) {
setVar(index, v);
}