derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=a17ac66f0a0b089dde0b2e550523b0d59ec97f52
commit a17ac66f0a0b089dde0b2e550523b0d59ec97f52 Author: Derek Foreman <der...@osg.samsung.com> Date: Thu Sep 15 16:05:25 2016 -0500 render_thread: Attempt to set affinity to a random fast core We've been pinning the render thread for every EFL process to core 0. This is a bit silly in the first place, but some big.LITTLE arm systems, such as exynos 5422, have the LITTLE cores first. On those systems we put all the render threads on a slow core. This attempts to fix that by using a random core from the pool of fast cores. If we can't determine which cores are fast (ie: we're not on a linux kernel with cpufreq enabled) then we'll continue doing what we've always done. --- src/lib/evas/common/evas_thread_render.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib/evas/common/evas_thread_render.c b/src/lib/evas/common/evas_thread_render.c index 623e40e..562ef29 100644 --- a/src/lib/evas/common/evas_thread_render.c +++ b/src/lib/evas/common/evas_thread_render.c @@ -1,4 +1,5 @@ #include "evas_common_private.h" +#include "eina_cpu_private.h" #include <assert.h> @@ -125,6 +126,8 @@ out: void evas_thread_init(void) { + int core; + if (init_count++) return; eina_threads_init(); @@ -135,7 +138,9 @@ evas_thread_init(void) CRI("Could not create draw thread lock"); if (!eina_condition_new(&evas_thread_queue_condition, &evas_thread_queue_lock)) CRI("Could not create draw thread condition"); - if (!eina_thread_create(&evas_thread_worker, EINA_THREAD_NORMAL, 0, + + core = _eina_cpu_fast_core_get(); + if (!eina_thread_create(&evas_thread_worker, EINA_THREAD_NORMAL, core, evas_thread_worker_func, NULL)) if (!eina_thread_create(&evas_thread_worker, EINA_THREAD_NORMAL, -1, evas_thread_worker_func, NULL)) --