Merge "Various fixes in setting globals in a script group" am: c011ffd842 am: 7ee861abae
am: 89baba188e
* commit '89baba188eab42c424cc96eb62114d660ab6c992':
Various fixes in setting globals in a script group
This commit is contained in:
@@ -278,6 +278,8 @@ public final class ScriptGroup extends BaseObj {
|
||||
public ValueAndSize(RenderScript rs, Object obj) {
|
||||
if (obj instanceof Allocation) {
|
||||
value = ((Allocation)obj).getID(rs);
|
||||
// Special value for size to tell the runtime and driver that
|
||||
// the value is an Allocation
|
||||
size = -1;
|
||||
} else if (obj instanceof Boolean) {
|
||||
value = ((Boolean)obj).booleanValue() ? 1 : 0;
|
||||
@@ -289,10 +291,10 @@ public final class ScriptGroup extends BaseObj {
|
||||
value = ((Long)obj).longValue();
|
||||
size = 8;
|
||||
} else if (obj instanceof Float) {
|
||||
value = ((Float)obj).longValue();
|
||||
value = Float.floatToRawIntBits(((Float)obj).floatValue());
|
||||
size = 4;
|
||||
} else if (obj instanceof Double) {
|
||||
value = ((Double)obj).longValue();
|
||||
value = Double.doubleToRawLongBits(((Double)obj).doubleValue());
|
||||
size = 8;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -393,7 +393,6 @@ nClosureCreate(JNIEnv *_env, jobject _this, jlong con, jlong kernelID,
|
||||
|
||||
size_t numValues, numDependencies;
|
||||
RsScriptFieldID* fieldIDs;
|
||||
uintptr_t* values;
|
||||
RsClosure* depClosures;
|
||||
RsScriptFieldID* depFieldIDs;
|
||||
|
||||
@@ -430,15 +429,6 @@ nClosureCreate(JNIEnv *_env, jobject _this, jlong con, jlong kernelID,
|
||||
fieldIDs[i] = (RsScriptFieldID)jFieldIDs[i];
|
||||
}
|
||||
|
||||
values = (uintptr_t*)alloca(sizeof(uintptr_t) * numValues);
|
||||
if (values == nullptr) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < numValues; i++) {
|
||||
values[i] = (uintptr_t)jValues[i];
|
||||
}
|
||||
|
||||
depClosures = (RsClosure*)alloca(sizeof(RsClosure) * numDependencies);
|
||||
if (depClosures == nullptr) {
|
||||
goto exit;
|
||||
@@ -459,7 +449,7 @@ nClosureCreate(JNIEnv *_env, jobject _this, jlong con, jlong kernelID,
|
||||
|
||||
ret = (jlong)(uintptr_t)rsClosureCreate(
|
||||
(RsContext)con, (RsScriptKernelID)kernelID, (RsAllocation)returnValue,
|
||||
fieldIDs, numValues, values, numValues,
|
||||
fieldIDs, numValues, jValues, numValues,
|
||||
(int*)jSizes, numValues,
|
||||
depClosures, numDependencies,
|
||||
depFieldIDs, numDependencies);
|
||||
@@ -511,7 +501,6 @@ nInvokeClosureCreate(JNIEnv *_env, jobject _this, jlong con, jlong invokeID,
|
||||
|
||||
size_t numValues;
|
||||
RsScriptFieldID* fieldIDs;
|
||||
uintptr_t* values;
|
||||
|
||||
if (fieldIDs_length != values_length || values_length != sizes_length) {
|
||||
ALOGE("Unmatched field IDs, values, and sizes in closure creation.");
|
||||
@@ -534,18 +523,9 @@ nInvokeClosureCreate(JNIEnv *_env, jobject _this, jlong con, jlong invokeID,
|
||||
fieldIDs[i] = (RsScriptFieldID)jFieldIDs[i];
|
||||
}
|
||||
|
||||
values = (uintptr_t*)alloca(sizeof(uintptr_t) * numValues);
|
||||
if (values == nullptr) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < numValues; i++) {
|
||||
values[i] = (uintptr_t)jValues[i];
|
||||
}
|
||||
|
||||
ret = (jlong)(uintptr_t)rsInvokeClosureCreate(
|
||||
(RsContext)con, (RsScriptInvokeID)invokeID, jParams, jParamLength,
|
||||
fieldIDs, numValues, values, numValues,
|
||||
fieldIDs, numValues, jValues, numValues,
|
||||
(int*)jSizes, numValues);
|
||||
|
||||
exit:
|
||||
@@ -561,15 +541,17 @@ exit:
|
||||
static void
|
||||
nClosureSetArg(JNIEnv *_env, jobject _this, jlong con, jlong closureID,
|
||||
jint index, jlong value, jint size) {
|
||||
// Size is signed with -1 indicating the value is an Allocation
|
||||
rsClosureSetArg((RsContext)con, (RsClosure)closureID, (uint32_t)index,
|
||||
(uintptr_t)value, (size_t)size);
|
||||
(uintptr_t)value, size);
|
||||
}
|
||||
|
||||
static void
|
||||
nClosureSetGlobal(JNIEnv *_env, jobject _this, jlong con, jlong closureID,
|
||||
jlong fieldID, jlong value, jint size) {
|
||||
// Size is signed with -1 indicating the value is an Allocation
|
||||
rsClosureSetGlobal((RsContext)con, (RsClosure)closureID,
|
||||
(RsScriptFieldID)fieldID, (uintptr_t)value, (size_t)size);
|
||||
(RsScriptFieldID)fieldID, (int64_t)value, size);
|
||||
}
|
||||
|
||||
static long
|
||||
|
||||
Reference in New Issue
Block a user