aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Murray <timmurray@google.com>2012-10-12 12:01:52 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-10-12 12:01:53 -0700
commit9e06c521bc29439457f33ad1c0d9153626dc00bd (patch)
tree85dacccd413165b8eff6d4dda4bf6127801f21a1
parent11274a7324b478ec13e1d10a1b81350b34a65ab1 (diff)
parentb81a993cc0fed2dabfb1abc8b23ab9bd1586f201 (diff)
downloadandroid_frameworks_compile_slang-9e06c521bc29439457f33ad1c0d9153626dc00bd.tar.gz
android_frameworks_compile_slang-9e06c521bc29439457f33ad1c0d9153626dc00bd.tar.bz2
android_frameworks_compile_slang-9e06c521bc29439457f33ad1c0d9153626dc00bd.zip
Merge "Add support for getting arbitrary kernel and field IDs." into jb-mr1-dev
-rw-r--r--slang_rs_reflection.cpp40
1 files changed, 37 insertions, 3 deletions
diff --git a/slang_rs_reflection.cpp b/slang_rs_reflection.cpp
index 05ec938..b559417 100644
--- a/slang_rs_reflection.cpp
+++ b/slang_rs_reflection.cpp
@@ -666,18 +666,39 @@ void RSReflection::genExportForEach(Context &C, const RSExportForEach *EF) {
}
}
+ const RSExportType *IET = EF->getInType();
+ const RSExportType *OET = EF->getOutType();
+
+ if (mRSContext->getTargetAPI() >= SLANG_JB_MR1_TARGET_API) {
+ int signature = 0;
+ C.startFunction(Context::AM_Public,
+ false,
+ "Script.KernelID",
+ "getKernelID_" + EF->getName(),
+ 0);
+
+ if (IET)
+ signature |= 1;
+ if (OET)
+ signature |= 2;
+
+ //TODO: add element checking
+ C.indent() << "return createKernelID(" << RS_EXPORT_FOREACH_INDEX_PREFIX
+ << EF->getName() << ", " << signature << ", null, null);"
+ << std::endl;
+
+ C.endFunction();
+ }
+
C.startFunction(Context::AM_Public,
false,
"void",
"forEach_" + EF->getName(),
Args);
- const RSExportType *IET = EF->getInType();
if (IET) {
genTypeCheck(C, IET, "ain");
}
-
- const RSExportType *OET = EF->getOutType();
if (OET) {
genTypeCheck(C, OET, "aout");
}
@@ -1067,6 +1088,19 @@ void RSReflection::genGetExportVariable(Context &C,
C.indent() << "return "RS_EXPORT_VAR_PREFIX << VarName << ";" << std::endl;
C.endFunction();
+ if (mRSContext->getTargetAPI() >= SLANG_JB_MR1_TARGET_API) {
+ C.startFunction(Context::AM_Public,
+ false,
+ "Script.FieldID",
+ "getFieldID_" + VarName,
+ 0);
+
+ C.indent() << "return createFieldID(" << RS_EXPORT_VAR_INDEX_PREFIX
+ << VarName << ", null);" << std::endl;
+
+ C.endFunction();
+ }
+
return;
}