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: I77e4b155cc7ca1581b05bf901c70ae53a9ff0b12
This commit is contained in:
Chris Wailes
2014-07-15 10:56:14 -07:00
parent 7f93572650
commit eb3470219d
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);