Collapse code paths for single- and multi-input kernels.

This patch simplifies the RenderScript JNI layer by replacing six functions
with a single funciton.  This new function now handles all previous cases.
Functions in android.renderscript.script have been updated to use this new JNI
function.

Change-Id: I6cd5448534c38123d51a589339bbeb7e98453e73
This commit is contained in:
Chris Wailes
2014-07-15 10:56:14 -07:00
committed by Stephen Hines
parent 21d1b115a1
commit be7b1defb6
3 changed files with 131 additions and 227 deletions

View File

@@ -590,52 +590,14 @@ public class RenderScript {
validate();
rsnScriptInvoke(mContext, id, slot);
}
native void rsnScriptForEach(long con, long id, int slot, long ain, long aout, byte[] params);
native void rsnScriptForEach(long con, long id, int slot, long ain, long aout);
native void rsnScriptForEachClipped(long con, long id, int slot, long ain, long aout, byte[] params,
int xstart, int xend, int ystart, int yend, int zstart, int zend);
native void rsnScriptForEachClipped(long con, long id, int slot, long ain, long aout,
int xstart, int xend, int ystart, int yend, int zstart, int zend);
synchronized void nScriptForEach(long id, int slot, long ain, long aout, byte[] params) {
native void rsnScriptForEach(long con, long id, int slot, long[] ains,
long aout, byte[] params, int[] limits);
synchronized void nScriptForEach(long id, int slot, long[] ains, long aout,
byte[] params, int[] limits) {
validate();
if (params == null) {
rsnScriptForEach(mContext, id, slot, ain, aout);
} else {
rsnScriptForEach(mContext, id, slot, ain, aout, params);
}
}
synchronized void nScriptForEachClipped(long id, int slot, long ain, long aout, byte[] params,
int xstart, int xend, int ystart, int yend, int zstart, int zend) {
validate();
if (params == null) {
rsnScriptForEachClipped(mContext, id, slot, ain, aout, xstart, xend, ystart, yend, zstart, zend);
} else {
rsnScriptForEachClipped(mContext, id, slot, ain, aout, params, xstart, xend, ystart, yend, zstart, zend);
}
}
/**
* Multi-input code.
*
*/
// @hide
native void rsnScriptForEachMultiClipped(long con, long id, int slot, long[] ains, long aout, byte[] params,
int xstart, int xend, int ystart, int yend, int zstart, int zend);
// @hide
native void rsnScriptForEachMultiClipped(long con, long id, int slot, long[] ains, long aout,
int xstart, int xend, int ystart, int yend, int zstart, int zend);
// @hide
synchronized void nScriptForEachMultiClipped(long id, int slot, long[] ains, long aout, byte[] params,
int xstart, int xend, int ystart, int yend, int zstart, int zend) {
validate();
if (params == null) {
rsnScriptForEachMultiClipped(mContext, id, slot, ains, aout, xstart, xend, ystart, yend, zstart, zend);
} else {
rsnScriptForEachMultiClipped(mContext, id, slot, ains, aout, params, xstart, xend, ystart, yend, zstart, zend);
}
rsnScriptForEach(mContext, id, slot, ains, aout, params, limits);
}
native void rsnScriptInvokeV(long con, long id, int slot, byte[] params);