diff options
author | Jason Sams <rjsams@android.com> | 2010-09-28 14:41:22 -0700 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2010-09-28 14:41:42 -0700 |
commit | f3470edc8a929d73797789656ce840aff918dcd0 (patch) | |
tree | 7727d1678314a56251a58b819de3d1a8338d5ddf /libs/rs/rsContext.cpp | |
parent | 556547dde9508ff88fe56a52c69e7ffb0e949f55 (diff) | |
download | frameworks_base-f3470edc8a929d73797789656ce840aff918dcd0.zip frameworks_base-f3470edc8a929d73797789656ce840aff918dcd0.tar.gz frameworks_base-f3470edc8a929d73797789656ce840aff918dcd0.tar.bz2 |
Fix safe for mp check in ScriptC.
Change-Id: Id91b3c1e99b2705fd39f9e74a52c61110805e246
Diffstat (limited to 'libs/rs/rsContext.cpp')
-rw-r--r-- | libs/rs/rsContext.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp index 3681bc2..a7f380f 100644 --- a/libs/rs/rsContext.cpp +++ b/libs/rs/rsContext.cpp @@ -33,6 +33,8 @@ #include <GLES2/gl2ext.h> #include <cutils/sched_policy.h> +#include <sys/syscall.h> +#include <string.h> using namespace android; using namespace android::renderscript; @@ -371,11 +373,15 @@ void * Context::helperThreadProc(void *vrsc) rsc->mWorkers.mLaunchSignals[idx].init(); rsc->mWorkers.mNativeThreadId[idx] = gettid(); - //cpu_set_t cpset[16]; - //int ret = sched_getaffinity(rsc->mWorkers.mNativeThreadId[idx], sizeof(cpset), &cpset); - //LOGE("ret = %i", ret); - -//sched_setaffinity +#if 0 + typedef struct {uint64_t bits[1024 / 64]; } cpu_set_t; + cpu_set_t cpuset; + memset(&cpuset, 0, sizeof(cpuset)); + cpuset.bits[idx / 64] |= 1ULL << (idx % 64); + int ret = syscall(241, rsc->mWorkers.mNativeThreadId[idx], + sizeof(cpuset), &cpuset); + LOGE("SETAFFINITY ret = %i %s", ret, EGLUtils::strerror(ret)); +#endif setpriority(PRIO_PROCESS, rsc->mWorkers.mNativeThreadId[idx], rsc->mThreadPriority); while(rsc->mRunning) { @@ -490,6 +496,7 @@ Context::Context(Device *dev, bool isGraphics, bool useDepth) usleep(100); } + mWorkers.mCompleteSignal.init(); mWorkers.mRunningCount = 0; mWorkers.mLaunchCount = 0; for (uint32_t ct=0; ct < mWorkers.mCount; ct++) { |