From 4a71a73843d974490c0c8ccdf7318bbc54b6bd42 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Fri, 10 Feb 2017 08:11:55 -0800 Subject: [PATCH] graphics: use FIFO scheduler in IComposer Make IComposer default implementation use the same process scheduler as SurfaceFlinger does. Bug: 35210697 Test: manual Change-Id: Ie2ebe1d3fd26505984d9f6c33d63b5db36b0b64a --- .../android.hardware.graphics.composer@2.1-service.rc | 1 + graphics/composer/2.1/default/service.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc b/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc index fc21d59e1f..9548d4174c 100644 --- a/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc +++ b/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc @@ -2,4 +2,5 @@ service hwcomposer-2-1 /system/bin/hw/android.hardware.graphics.composer@2.1-ser class hal user system group graphics drmrpc readproc + capabilities SYS_NICE onrestart restart surfaceflinger diff --git a/graphics/composer/2.1/default/service.cpp b/graphics/composer/2.1/default/service.cpp index a31decd3a3..656673e672 100644 --- a/graphics/composer/2.1/default/service.cpp +++ b/graphics/composer/2.1/default/service.cpp @@ -16,6 +16,8 @@ #define LOG_TAG "android.hardware.graphics.composer@2.1-service" +#include + #include #include @@ -29,5 +31,13 @@ int main() { android::ProcessState::self()->setThreadPoolMaxThreadCount(4); android::ProcessState::self()->startThreadPool(); + // same as SF main thread + struct sched_param param = {0}; + param.sched_priority = 2; + if (sched_setscheduler(0, SCHED_FIFO | SCHED_RESET_ON_FORK, + ¶m) != 0) { + ALOGE("Couldn't set SCHED_FIFO: %d", errno); + } + return defaultPassthroughServiceImplementation("hwcomposer"); }