derekf pushed a commit to branch master.

commit a17ac66f0a0b089dde0b2e550523b0d59ec97f52
Author: Derek Foreman <>
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
    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 
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:
+    int core;
     if (init_count++) return;
@@ -135,7 +138,9 @@ evas_thread_init(void)
       CRI("Could not create draw thread lock");
     if (!eina_condition_new(&evas_thread_queue_condition, 
       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))


Reply via email to