Skip to content

Commit a216360

Browse files
Jason SamsAndroid (Google) Code Review
authored andcommitted
Merge "Add Kernel, Method, and field IDs bug 7182873" into jb-mr1-dev
2 parents 24ed276 + 08a8158 commit a216360

File tree

11 files changed

+617
-288
lines changed

11 files changed

+617
-288
lines changed

api/current.txt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20007,6 +20007,8 @@ package android.renderscript {
2000720007

2000820008
public class Script extends android.renderscript.BaseObj {
2000920009
method public void bindAllocation(android.renderscript.Allocation, int);
20010+
method protected android.renderscript.Script.FieldID createFieldID(int, android.renderscript.Element);
20011+
method protected android.renderscript.Script.KernelID createKernelID(int, int, android.renderscript.Element, android.renderscript.Element);
2001020012
method protected void forEach(int, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.FieldPacker);
2001120013
method protected void invoke(int);
2001220014
method protected void invoke(int, android.renderscript.FieldPacker);
@@ -20036,24 +20038,47 @@ package android.renderscript {
2003620038
field protected android.renderscript.Element mElement;
2003720039
}
2003820040

20041+
public static final class Script.FieldID extends android.renderscript.BaseObj {
20042+
}
20043+
20044+
public static final class Script.KernelID extends android.renderscript.BaseObj {
20045+
}
20046+
2003920047
public class ScriptC extends android.renderscript.Script {
2004020048
ctor protected ScriptC(int, android.renderscript.RenderScript);
2004120049
ctor protected ScriptC(android.renderscript.RenderScript, android.content.res.Resources, int);
2004220050
}
2004320051

20052+
public final class ScriptGroup extends android.renderscript.BaseObj {
20053+
method public void execute();
20054+
method public void setInput(android.renderscript.Script.KernelID, android.renderscript.Allocation);
20055+
method public void setOutput(android.renderscript.Script.KernelID, android.renderscript.Allocation);
20056+
}
20057+
20058+
public static final class ScriptGroup.Builder {
20059+
ctor public ScriptGroup.Builder(android.renderscript.RenderScript);
20060+
method public android.renderscript.ScriptGroup.Builder addConnection(android.renderscript.Type, android.renderscript.Script.KernelID, android.renderscript.Script.FieldID);
20061+
method public android.renderscript.ScriptGroup.Builder addConnection(android.renderscript.Type, android.renderscript.Script.KernelID, android.renderscript.Script.KernelID);
20062+
method public android.renderscript.ScriptGroup.Builder addKernel(android.renderscript.Script.KernelID);
20063+
method public android.renderscript.ScriptGroup create();
20064+
}
20065+
2004420066
public abstract class ScriptIntrinsic extends android.renderscript.Script {
2004520067
}
2004620068

2004720069
public final class ScriptIntrinsicBlur extends android.renderscript.ScriptIntrinsic {
2004820070
method public static android.renderscript.ScriptIntrinsicBlur create(android.renderscript.RenderScript, android.renderscript.Element);
2004920071
method public void forEach(android.renderscript.Allocation);
20072+
method public android.renderscript.Script.FieldID getFieldID_Input();
20073+
method public android.renderscript.Script.KernelID getKernelID();
2005020074
method public void setInput(android.renderscript.Allocation);
2005120075
method public void setRadius(float);
2005220076
}
2005320077

2005420078
public final class ScriptIntrinsicColorMatrix extends android.renderscript.ScriptIntrinsic {
2005520079
method public static android.renderscript.ScriptIntrinsicColorMatrix create(android.renderscript.RenderScript, android.renderscript.Element);
2005620080
method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation);
20081+
method public android.renderscript.Script.KernelID getKernelID();
2005720082
method public void setColorMatrix(android.renderscript.Matrix4f);
2005820083
method public void setColorMatrix(android.renderscript.Matrix3f);
2005920084
method public void setGreyscale();
@@ -20064,20 +20089,25 @@ package android.renderscript {
2006420089
public final class ScriptIntrinsicConvolve3x3 extends android.renderscript.ScriptIntrinsic {
2006520090
method public static android.renderscript.ScriptIntrinsicConvolve3x3 create(android.renderscript.RenderScript, android.renderscript.Element);
2006620091
method public void forEach(android.renderscript.Allocation);
20092+
method public android.renderscript.Script.FieldID getFieldID_Input();
20093+
method public android.renderscript.Script.KernelID getKernelID();
2006720094
method public void setCoefficients(float[]);
2006820095
method public void setInput(android.renderscript.Allocation);
2006920096
}
2007020097

2007120098
public final class ScriptIntrinsicConvolve5x5 extends android.renderscript.ScriptIntrinsic {
2007220099
method public static android.renderscript.ScriptIntrinsicConvolve5x5 create(android.renderscript.RenderScript, android.renderscript.Element);
2007320100
method public void forEach(android.renderscript.Allocation);
20101+
method public android.renderscript.Script.FieldID getFieldID_Input();
20102+
method public android.renderscript.Script.KernelID getKernelID();
2007420103
method public void setCoefficients(float[]);
2007520104
method public void setInput(android.renderscript.Allocation);
2007620105
}
2007720106

2007820107
public final class ScriptIntrinsicLUT extends android.renderscript.ScriptIntrinsic {
2007920108
method public static android.renderscript.ScriptIntrinsicLUT create(android.renderscript.RenderScript, android.renderscript.Element);
2008020109
method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation);
20110+
method public android.renderscript.Script.KernelID getKernelID();
2008120111
method public void setAlpha(int, int);
2008220112
method public void setBlue(int, int);
2008320113
method public void setGreen(int, int);

graphics/java/android/renderscript/RenderScript.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,42 @@ synchronized int nScriptIntrinsicCreate(int id, int eid) {
567567
return rsnScriptIntrinsicCreate(mContext, id, eid);
568568
}
569569

570+
native int rsnScriptKernelIDCreate(int con, int sid, int slot, int sig);
571+
synchronized int nScriptKernelIDCreate(int sid, int slot, int sig) {
572+
validate();
573+
return rsnScriptKernelIDCreate(mContext, sid, slot, sig);
574+
}
575+
576+
native int rsnScriptFieldIDCreate(int con, int sid, int slot);
577+
synchronized int nScriptFieldIDCreate(int sid, int slot) {
578+
validate();
579+
return rsnScriptFieldIDCreate(mContext, sid, slot);
580+
}
581+
582+
native int rsnScriptGroupCreate(int con, int[] kernels, int[] src, int[] dstk, int[] dstf, int[] types);
583+
synchronized int nScriptGroupCreate(int[] kernels, int[] src, int[] dstk, int[] dstf, int[] types) {
584+
validate();
585+
return rsnScriptGroupCreate(mContext, kernels, src, dstk, dstf, types);
586+
}
587+
588+
native void rsnScriptGroupSetInput(int con, int group, int kernel, int alloc);
589+
synchronized void nScriptGroupSetInput(int group, int kernel, int alloc) {
590+
validate();
591+
rsnScriptGroupSetInput(mContext, group, kernel, alloc);
592+
}
593+
594+
native void rsnScriptGroupSetOutput(int con, int group, int kernel, int alloc);
595+
synchronized void nScriptGroupSetOutput(int group, int kernel, int alloc) {
596+
validate();
597+
rsnScriptGroupSetOutput(mContext, group, kernel, alloc);
598+
}
599+
600+
native void rsnScriptGroupExecute(int con, int group);
601+
synchronized void nScriptGroupExecute(int group) {
602+
validate();
603+
rsnScriptGroupExecute(mContext, group);
604+
}
605+
570606
native int rsnSamplerCreate(int con, int magFilter, int minFilter,
571607
int wrapS, int wrapT, int wrapR, float aniso);
572608
synchronized int nSamplerCreate(int magFilter, int minFilter,

graphics/java/android/renderscript/Script.java

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,105 @@
1616

1717
package android.renderscript;
1818

19+
import android.util.SparseArray;
20+
1921
/**
2022
*
2123
**/
2224
public class Script extends BaseObj {
25+
26+
/**
27+
* KernelID is an identifier for a Script + root function pair. It is used
28+
* as an identifier for ScriptGroup creation.
29+
*
30+
* This class should not be directly created. Instead use the method in the
31+
* reflected or intrinsic code "getKernelID_funcname()".
32+
*
33+
*/
34+
public static final class KernelID extends BaseObj {
35+
Script mScript;
36+
int mSlot;
37+
int mSig;
38+
KernelID(int id, RenderScript rs, Script s, int slot, int sig) {
39+
super(id, rs);
40+
mScript = s;
41+
mSlot = slot;
42+
mSig = sig;
43+
}
44+
}
45+
46+
private final SparseArray<KernelID> mKIDs = new SparseArray<KernelID>();
47+
/**
48+
* Only to be used by generated reflected classes.
49+
*
50+
*
51+
* @param slot
52+
* @param sig
53+
* @param ein
54+
* @param eout
55+
*
56+
* @return KernelID
57+
*/
58+
protected KernelID createKernelID(int slot, int sig, Element ein, Element eout) {
59+
KernelID k = mKIDs.get(slot);
60+
if (k != null) {
61+
return k;
62+
}
63+
64+
int id = mRS.nScriptKernelIDCreate(getID(mRS), slot, sig);
65+
if (id == 0) {
66+
throw new RSDriverException("Failed to create KernelID");
67+
}
68+
69+
k = new KernelID(id, mRS, this, slot, sig);
70+
mKIDs.put(slot, k);
71+
return k;
72+
}
73+
74+
/**
75+
* FieldID is an identifier for a Script + exported field pair. It is used
76+
* as an identifier for ScriptGroup creation.
77+
*
78+
* This class should not be directly created. Instead use the method in the
79+
* reflected or intrinsic code "getFieldID_funcname()".
80+
*
81+
*/
82+
public static final class FieldID extends BaseObj {
83+
Script mScript;
84+
int mSlot;
85+
FieldID(int id, RenderScript rs, Script s, int slot) {
86+
super(id, rs);
87+
mScript = s;
88+
mSlot = slot;
89+
}
90+
}
91+
92+
private final SparseArray<FieldID> mFIDs = new SparseArray();
93+
/**
94+
* Only to be used by generated reflected classes.
95+
*
96+
* @param slot
97+
* @param e
98+
*
99+
* @return FieldID
100+
*/
101+
protected FieldID createFieldID(int slot, Element e) {
102+
FieldID f = mFIDs.get(slot);
103+
if (f != null) {
104+
return f;
105+
}
106+
107+
int id = mRS.nScriptFieldIDCreate(getID(mRS), slot);
108+
if (id == 0) {
109+
throw new RSDriverException("Failed to create FieldID");
110+
}
111+
112+
f = new FieldID(id, mRS, this, slot);
113+
mFIDs.put(slot, f);
114+
return f;
115+
}
116+
117+
23118
/**
24119
* Only intended for use by generated reflected code.
25120
*

0 commit comments

Comments
 (0)