Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 976a6459 authored by Wei Wang's avatar Wei Wang
Browse files

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: default avatarWei Wang <wvw@google.com>
Change-Id: I6746e768fbf850202f2008f5e2131326e3a8f6a8
parent f75789e7
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -24,6 +24,7 @@


#include <android-base/stringprintf.h>
#include <android-base/stringprintf.h>
#include <private/gui/SyncFeatures.h>
#include <private/gui/SyncFeatures.h>
#include <processgroup/processgroup.h>
#include <utils/Trace.h>
#include <utils/Trace.h>


#include "gl/GLESRenderEngine.h"
#include "gl/GLESRenderEngine.h"
@@ -80,6 +81,10 @@ status_t RenderEngineThreaded::setSchedFifo(bool enabled) {
void RenderEngineThreaded::threadMain(CreateInstanceFactory factory) NO_THREAD_SAFETY_ANALYSIS {
void RenderEngineThreaded::threadMain(CreateInstanceFactory factory) NO_THREAD_SAFETY_ANALYSIS {
    ATRACE_CALL();
    ATRACE_CALL();


    if (!SetTaskProfiles(0, {"SFRenderEnginePolicy"})) {
        ALOGW("Failed to set render-engine task profile!");
    }

    if (setSchedFifo(true) != NO_ERROR) {
    if (setSchedFifo(true) != NO_ERROR) {
        ALOGW("Couldn't set SCHED_FIFO");
        ALOGW("Couldn't set SCHED_FIFO");
    }
    }
+7 −0
Original line number Original line Diff line number Diff line
@@ -63,6 +63,7 @@
#include <log/log.h>
#include <log/log.h>
#include <private/android_filesystem_config.h>
#include <private/android_filesystem_config.h>
#include <private/gui/SyncFeatures.h>
#include <private/gui/SyncFeatures.h>
#include <processgroup/processgroup.h>
#include <renderengine/RenderEngine.h>
#include <renderengine/RenderEngine.h>
#include <sys/types.h>
#include <sys/types.h>
#include <ui/ColorSpace.h>
#include <ui/ColorSpace.h>
@@ -785,6 +786,12 @@ void SurfaceFlinger::init() {
                                    ? renderengine::RenderEngine::ContextPriority::REALTIME
                                    ? renderengine::RenderEngine::ContextPriority::REALTIME
                                    : renderengine::RenderEngine::ContextPriority::MEDIUM)
                                    : renderengine::RenderEngine::ContextPriority::MEDIUM)
                    .build()));
                    .build()));

    // Set SF main policy after initializing RenderEngine which has its own policy.
    if (!SetTaskProfiles(0, {"SFMainPolicy"})) {
        ALOGW("Failed to set main task profile");
    }

    mCompositionEngine->setTimeStats(mTimeStats);
    mCompositionEngine->setTimeStats(mTimeStats);
    mCompositionEngine->setHwComposer(getFactory().createHWComposer(mHwcServiceName));
    mCompositionEngine->setHwComposer(getFactory().createHWComposer(mHwcServiceName));
    mCompositionEngine->getHwComposer().setCallback(this);
    mCompositionEngine->getHwComposer().setCallback(this);