summaryrefslogtreecommitdiffstats
path: root/libs/rs
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2010-07-26 17:12:55 -0700
committerJason Sams <rjsams@android.com>2010-07-26 17:12:55 -0700
commit7f4d0c9705af50351753b608fc107e0220c9a2f4 (patch)
tree30994da0e42b15bd38da3b8b4e1e682eb2f1ea22 /libs/rs
parentb621677c97ba80804a5ae5d53167616774908867 (diff)
downloadframeworks_base-7f4d0c9705af50351753b608fc107e0220c9a2f4.zip
frameworks_base-7f4d0c9705af50351753b608fc107e0220c9a2f4.tar.gz
frameworks_base-7f4d0c9705af50351753b608fc107e0220c9a2f4.tar.bz2
Query the CPU count and use the result to determine
if and how many worker threads we use. Change-Id: I8fc1fb17aff835cfe8ed7c474287bccd532cbb29
Diffstat (limited to 'libs/rs')
-rw-r--r--libs/rs/rsContext.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp
index e897d00..d6df581 100644
--- a/libs/rs/rsContext.cpp
+++ b/libs/rs/rsContext.cpp
@@ -468,8 +468,11 @@ Context::Context(Device *dev, bool isGraphics, bool useDepth)
timerInit();
timerSet(RS_TIMER_INTERNAL);
- LOGV("RS Launching thread(s)");
- mWorkers.mCount = 2;
+ int cpu = sysconf(_SC_NPROCESSORS_ONLN);
+ LOGV("RS Launching thread(s), reported CPU count %i", cpu);
+ if (cpu < 2) cpu = 0;
+
+ mWorkers.mCount = (uint32_t)cpu;
mWorkers.mThreadId = (pthread_t *) calloc(mWorkers.mCount, sizeof(pthread_t));
mWorkers.mNativeThreadId = (pid_t *) calloc(mWorkers.mCount, sizeof(pid_t));
mWorkers.mLaunchSignals = new Signal[mWorkers.mCount];