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

Commit 9b08532c authored by ramindani's avatar ramindani
Browse files

[SF] Add sysprop to enable vrr config

Test: manual with adb shell setprop ro.surface_flinger.enable_vrr_config true
BUG: 284845445
Change-Id: I36e2e132021e9ac17e1d928e754c6df54bdc29d3
parent 2a405b58
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -31,8 +31,7 @@

#include "DisplayHardware/Hal.h"
#include "Scheduler/StrongTyping.h"

#include <com_android_graphics_surfaceflinger_flags.h>
#include "Utils/FlagUtils.h"

namespace android {

@@ -141,7 +140,7 @@ public:
    // Peak refresh rate represents the highest refresh rate that can be used
    // for the presentation.
    Fps getPeakFps() const {
        return flags::vrr_config() && mVrrConfig
        return flagutils::vrrConfigEnabled() && mVrrConfig
                ? Fps::fromPeriodNsecs(mVrrConfig->minFrameIntervalNs)
                : mVsyncRate;
    }
+2 −1
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@

#include "../SurfaceFlingerProperties.h"
#include "RefreshRateSelector.h"
#include "Utils/FlagUtils.h"

#include <com_android_graphics_surfaceflinger_flags.h>

@@ -114,7 +115,7 @@ std::pair<unsigned, unsigned> divisorRange(Fps vsyncRate, Fps peakFps, FpsRange
    using fps_approx_ops::operator/;
    // use signed type as `fps / range.max` might be 0
    auto start = std::max(1, static_cast<int>(peakFps / range.max) - 1);
    if (flags::vrr_config()) {
    if (flagutils::vrrConfigEnabled()) {
        start = std::max(1,
                         static_cast<int>(vsyncRate /
                                          std::min(range.max, peakFps, fps_approx_ops::operator<)) -
+3 −2
Original line number Diff line number Diff line
@@ -155,6 +155,7 @@
#include "TimeStats/TimeStats.h"
#include "TunnelModeEnabledReporter.h"
#include "Utils/Dumper.h"
#include "Utils/FlagUtils.h"
#include "WindowInfosListenerInvoker.h"

#include <aidl/android/hardware/graphics/common/DisplayDecorationSupport.h>
@@ -498,7 +499,6 @@ SurfaceFlinger::SurfaceFlinger(Factory& factory) : SurfaceFlinger(factory, SkipI
    mMiscFlagValue = flags::misc1();
    mConnectedDisplayFlagValue = flags::connected_display();
    mMisc2FlagEarlyBootValue = flags::late_boot_misc2();
    mVrrConfigFlagValue = flags::vrr_config();
}

LatchUnsignaledConfig SurfaceFlinger::getLatchUnsignaledConfig() {
@@ -6418,7 +6418,8 @@ void SurfaceFlinger::dumpAllLocked(const DumpArgs& args, const std::string& comp
    StringAppendF(&result, "Misc2FlagValue: %s (%s after boot)\n",
                  mMisc2FlagLateBootValue ? "true" : "false",
                  mMisc2FlagEarlyBootValue == mMisc2FlagLateBootValue ? "stable" : "modified");
    StringAppendF(&result, "VrrConfigFlagValue: %s\n", mVrrConfigFlagValue ? "true" : "false");
    StringAppendF(&result, "VrrConfigFlagValue: %s\n",
                  flagutils::vrrConfigEnabled() ? "true" : "false");

    getRenderEngine().dump(result);

+0 −1
Original line number Diff line number Diff line
@@ -1457,7 +1457,6 @@ private:
    bool mConnectedDisplayFlagValue;
    bool mMisc2FlagEarlyBootValue;
    bool mMisc2FlagLateBootValue;
    bool mVrrConfigFlagValue;
};

class SurfaceComposerAIDL : public gui::BnSurfaceComposer {
+33 −0
Original line number Diff line number Diff line
/**
 * Copyright 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#pragma once

#include <android-base/properties.h>
#include <com_android_graphics_surfaceflinger_flags.h>
#include <string>

namespace android::flagutils {

using namespace std::literals::string_literals;
using namespace com::android::graphics::surfaceflinger;

inline bool vrrConfigEnabled() {
    static const bool enable_vrr_config =
            base::GetBoolProperty("debug.sf.enable_vrr_config"s, false);
    return flags::vrr_config() || enable_vrr_config;
}
} // namespace android::flagutils