Convert renderscript from using ACC to LLVM for its compiler.
This will also require application to be updated to support the new compiler and data passing models. Change-Id: If078e3a5148af395ba1b936169a407d8c3ad727f
This commit is contained in:
@@ -81,8 +81,6 @@ public class ScriptC extends Script {
|
||||
public static class Builder extends Script.Builder {
|
||||
byte[] mProgram;
|
||||
int mProgramLength;
|
||||
HashMap<String,Integer> mIntDefines = new HashMap();
|
||||
HashMap<String,Float> mFloatDefines = new HashMap();
|
||||
|
||||
public Builder(RenderScript rs) {
|
||||
super(rs);
|
||||
@@ -133,66 +131,20 @@ public class ScriptC extends Script {
|
||||
|
||||
static synchronized ScriptC internalCreate(Builder b) {
|
||||
b.mRS.nScriptCBegin();
|
||||
b.transferCreate();
|
||||
|
||||
for (Entry<String,Integer> e: b.mIntDefines.entrySet()) {
|
||||
b.mRS.nScriptCAddDefineI32(e.getKey(), e.getValue().intValue());
|
||||
}
|
||||
for (Entry<String,Float> e: b.mFloatDefines.entrySet()) {
|
||||
b.mRS.nScriptCAddDefineF(e.getKey(), e.getValue().floatValue());
|
||||
}
|
||||
|
||||
android.util.Log.e("rs", "len = " + b.mProgramLength);
|
||||
b.mRS.nScriptCSetScript(b.mProgram, 0, b.mProgramLength);
|
||||
|
||||
int id = b.mRS.nScriptCCreate();
|
||||
ScriptC obj = new ScriptC(id, b.mRS);
|
||||
b.transferObject(obj);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
public void addDefine(String name, int value) {
|
||||
mIntDefines.put(name, value);
|
||||
}
|
||||
|
||||
public void addDefine(String name, float value) {
|
||||
mFloatDefines.put(name, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes the all public static final fields for a class, and adds defines
|
||||
* for them, using the name of the field as the name of the define.
|
||||
*/
|
||||
public void addDefines(Class cl) {
|
||||
addDefines(cl.getFields(), (Modifier.STATIC | Modifier.FINAL | Modifier.PUBLIC), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes the all public fields for an object, and adds defines
|
||||
* for them, using the name of the field as the name of the define.
|
||||
*/
|
||||
public void addDefines(Object o) {
|
||||
addDefines(o.getClass().getFields(), Modifier.PUBLIC, o);
|
||||
}
|
||||
|
||||
void addDefines(Field[] fields, int mask, Object o) {
|
||||
for (Field f: fields) {
|
||||
try {
|
||||
if ((f.getModifiers() & mask) == mask) {
|
||||
Class t = f.getType();
|
||||
if (t == int.class) {
|
||||
mIntDefines.put(f.getName(), f.getInt(o));
|
||||
}
|
||||
else if (t == float.class) {
|
||||
mFloatDefines.put(f.getName(), f.getFloat(o));
|
||||
}
|
||||
}
|
||||
} catch (IllegalAccessException ex) {
|
||||
// TODO: Do we want this log?
|
||||
Log.d(TAG, "addDefines skipping field " + f.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
public void addDefine(String name, int value) {}
|
||||
public void addDefine(String name, float value) {}
|
||||
public void addDefines(Class cl) {}
|
||||
public void addDefines(Object o) {}
|
||||
void addDefines(Field[] fields, int mask, Object o) {}
|
||||
|
||||
public ScriptC create() {
|
||||
return internalCreate(this);
|
||||
|
||||
Reference in New Issue
Block a user