Fix single level forEach threading
No longer mark scripts single threaded just because a
forEach is present.
Change-Id: I617cb2b1ccb402526a78338612b1614f94da4efb
diff --git a/driver/rsdBcc.cpp b/driver/rsdBcc.cpp
index 29780e6..457a99d 100644
--- a/driver/rsdBcc.cpp
+++ b/driver/rsdBcc.cpp
@@ -397,12 +397,14 @@
mtls.yStrideOut = aout->mHal.drvState.stride;
}
- if ((dc->mWorkers.mCount > 1) && s->mHal.info.isThreadable) {
+ if ((dc->mWorkers.mCount > 1) && s->mHal.info.isThreadable && !dc->mInForEach) {
+ dc->mInForEach = true;
if (mtls.dimY > 1) {
rsdLaunchThreads(mrsc, wc_xy, &mtls);
} else {
rsdLaunchThreads(mrsc, wc_x, &mtls);
}
+ dc->mInForEach = false;
//ALOGE("launch 1");
} else {
diff --git a/driver/rsdCore.h b/driver/rsdCore.h
index 05ca13b..92e7c7f 100644
--- a/driver/rsdCore.h
+++ b/driver/rsdCore.h
@@ -43,6 +43,7 @@
uint32_t version_major;
uint32_t version_minor;
bool mHasGraphics;
+ bool mInForEach;
struct Workers {
volatile int mRunningCount;
diff --git a/driver/rsdRuntimeStubs.cpp b/driver/rsdRuntimeStubs.cpp
index 779076d..a24bba8 100644
--- a/driver/rsdRuntimeStubs.cpp
+++ b/driver/rsdRuntimeStubs.cpp
@@ -661,11 +661,11 @@
{ "_Z19rsgClearDepthTargetv", (void *)&SC_ClearFrameBufferObjectDepthTarget, false },
{ "_Z24rsgClearAllRenderTargetsv", (void *)&SC_ClearFrameBufferObjectTargets, false },
- { "_Z9rsForEach9rs_script13rs_allocationS0_", (void *)&SC_ForEach_SAA, false },
- { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach_SAAU, false },
- { "_Z9rsForEach9rs_script13rs_allocationS0_PKvPK16rs_script_call_t", (void *)&SC_ForEach_SAAUS, false },
- { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach_SAAUL, false },
- { "_Z9rsForEach9rs_script13rs_allocationS0_PKvjPK16rs_script_call_t", (void *)&SC_ForEach_SAAULS, false },
+ { "_Z9rsForEach9rs_script13rs_allocationS0_", (void *)&SC_ForEach_SAA, true },
+ { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach_SAAU, true },
+ { "_Z9rsForEach9rs_script13rs_allocationS0_PKvPK16rs_script_call_t", (void *)&SC_ForEach_SAAUS, true },
+ { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach_SAAUL, true },
+ { "_Z9rsForEach9rs_script13rs_allocationS0_PKvjPK16rs_script_call_t", (void *)&SC_ForEach_SAAULS, true },
// time
{ "_Z6rsTimePi", (void *)&SC_Time, true },