SurfaceFlinger: add custom taskprofiles for SF threads
In some platforms, setting a different cpuset (or remove it) and/or
uclamp setting is beneficial to both performance and power. Adding 2
separate profiles for vendor to override surfaceflinger scheduling
policies.
Bug: 170507315
Test: build
Signed-off-by: Wei Wang <wvw@google.com>
Change-Id: I6746e768fbf850202f2008f5e2131326e3a8f6a8
diff --git a/libs/renderengine/threaded/RenderEngineThreaded.cpp b/libs/renderengine/threaded/RenderEngineThreaded.cpp
index 74c5f47..2a65f2a 100644
--- a/libs/renderengine/threaded/RenderEngineThreaded.cpp
+++ b/libs/renderengine/threaded/RenderEngineThreaded.cpp
@@ -24,6 +24,7 @@
#include <android-base/stringprintf.h>
#include <private/gui/SyncFeatures.h>
+#include <processgroup/processgroup.h>
#include <utils/Trace.h>
#include "gl/GLESRenderEngine.h"
@@ -80,6 +81,10 @@
void RenderEngineThreaded::threadMain(CreateInstanceFactory factory) NO_THREAD_SAFETY_ANALYSIS {
ATRACE_CALL();
+ if (!SetTaskProfiles(0, {"SFRenderEnginePolicy"})) {
+ ALOGW("Failed to set render-engine task profile!");
+ }
+
if (setSchedFifo(true) != NO_ERROR) {
ALOGW("Couldn't set SCHED_FIFO");
}