Skip to content

Commit 08a8158

Browse files
author
Jason Sams
committed
Add Kernel, Method, and field IDs
bug 7182873 Change-Id: I066a359bb04027e9376dac088560f042c496b10e
1 parent 21dfd7c commit 08a8158

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
@@ -20003,6 +20003,8 @@ package android.renderscript {
2000320003

2000420004
public class Script extends android.renderscript.BaseObj {
2000520005
method public void bindAllocation(android.renderscript.Allocation, int);
20006+
method protected android.renderscript.Script.FieldID createFieldID(int, android.renderscript.Element);
20007+
method protected android.renderscript.Script.KernelID createKernelID(int, int, android.renderscript.Element, android.renderscript.Element);
2000620008
method protected void forEach(int, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.FieldPacker);
2000720009
method protected void invoke(int);
2000820010
method protected void invoke(int, android.renderscript.FieldPacker);
@@ -20032,24 +20034,47 @@ package android.renderscript {
2003220034
field protected android.renderscript.Element mElement;
2003320035
}
2003420036

20037+
public static final class Script.FieldID extends android.renderscript.BaseObj {
20038+
}
20039+
20040+
public static final class Script.KernelID extends android.renderscript.BaseObj {
20041+
}
20042+
2003520043
public class ScriptC extends android.renderscript.Script {
2003620044
ctor protected ScriptC(int, android.renderscript.RenderScript);
2003720045
ctor protected ScriptC(android.renderscript.RenderScript, android.content.res.Resources, int);
2003820046
}
2003920047

20048+
public final class ScriptGroup extends android.renderscript.BaseObj {
20049+
method public void execute();
20050+
method public void setInput(android.renderscript.Script.KernelID, android.renderscript.Allocation);
20051+
method public void setOutput(android.renderscript.Script.KernelID, android.renderscript.Allocation);
20052+
}
20053+
20054+
public static final class ScriptGroup.Builder {
20055+
ctor public ScriptGroup.Builder(android.renderscript.RenderScript);
20056+
method public android.renderscript.ScriptGroup.Builder addConnection(android.renderscript.Type, android.renderscript.Script.KernelID, android.renderscript.Script.FieldID);
20057+
method public android.renderscript.ScriptGroup.Builder addConnection(android.renderscript.Type, android.renderscript.Script.KernelID, android.renderscript.Script.KernelID);
20058+
method public android.renderscript.ScriptGroup.Builder addKernel(android.renderscript.Script.KernelID);
20059+
method public android.renderscript.ScriptGroup create();
20060+
}
20061+
2004020062
public abstract class ScriptIntrinsic extends android.renderscript.Script {
2004120063
}
2004220064

2004320065
public final class ScriptIntrinsicBlur extends android.renderscript.ScriptIntrinsic {
2004420066
method public static android.renderscript.ScriptIntrinsicBlur create(android.renderscript.RenderScript, android.renderscript.Element);
2004520067
method public void forEach(android.renderscript.Allocation);
20068+
method public android.renderscript.Script.FieldID getFieldID_Input();
20069+
method public android.renderscript.Script.KernelID getKernelID();
2004620070
method public void setInput(android.renderscript.Allocation);
2004720071
method public void setRadius(float);
2004820072
}
2004920073

2005020074
public final class ScriptIntrinsicColorMatrix extends android.renderscript.ScriptIntrinsic {
2005120075
method public static android.renderscript.ScriptIntrinsicColorMatrix create(android.renderscript.RenderScript, android.renderscript.Element);
2005220076
method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation);
20077+
method public android.renderscript.Script.KernelID getKernelID();
2005320078
method public void setColorMatrix(android.renderscript.Matrix4f);
2005420079
method public void setColorMatrix(android.renderscript.Matrix3f);
2005520080
method public void setGreyscale();
@@ -20060,20 +20085,25 @@ package android.renderscript {
2006020085
public final class ScriptIntrinsicConvolve3x3 extends android.renderscript.ScriptIntrinsic {
2006120086
method public static android.renderscript.ScriptIntrinsicConvolve3x3 create(android.renderscript.RenderScript, android.renderscript.Element);
2006220087
method public void forEach(android.renderscript.Allocation);
20088+
method public android.renderscript.Script.FieldID getFieldID_Input();
20089+
method public android.renderscript.Script.KernelID getKernelID();
2006320090
method public void setCoefficients(float[]);
2006420091
method public void setInput(android.renderscript.Allocation);
2006520092
}
2006620093

2006720094
public final class ScriptIntrinsicConvolve5x5 extends android.renderscript.ScriptIntrinsic {
2006820095
method public static android.renderscript.ScriptIntrinsicConvolve5x5 create(android.renderscript.RenderScript, android.renderscript.Element);
2006920096
method public void forEach(android.renderscript.Allocation);
20097+
method public android.renderscript.Script.FieldID getFieldID_Input();
20098+
method public android.renderscript.Script.KernelID getKernelID();
2007020099
method public void setCoefficients(float[]);
2007120100
method public void setInput(android.renderscript.Allocation);
2007220101
}
2007320102

2007420103
public final class ScriptIntrinsicLUT extends android.renderscript.ScriptIntrinsic {
2007520104
method public static android.renderscript.ScriptIntrinsicLUT create(android.renderscript.RenderScript, android.renderscript.Element);
2007620105
method public void forEach(android.renderscript.Allocation, android.renderscript.Allocation);
20106+
method public android.renderscript.Script.KernelID getKernelID();
2007720107
method public void setAlpha(int, int);
2007820108
method public void setBlue(int, int);
2007920109
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)