diff options
author | Tim Murray <timmurray@google.com> | 2012-10-12 12:01:52 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-10-12 12:01:53 -0700 |
commit | 9e06c521bc29439457f33ad1c0d9153626dc00bd (patch) | |
tree | 85dacccd413165b8eff6d4dda4bf6127801f21a1 | |
parent | 11274a7324b478ec13e1d10a1b81350b34a65ab1 (diff) | |
parent | b81a993cc0fed2dabfb1abc8b23ab9bd1586f201 (diff) | |
download | android_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.cpp | 40 |
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; } |