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

Commit 290dc935 authored by Ram Indani's avatar Ram Indani Committed by Android (Google) Code Review
Browse files

Merge changes I30c34f13,I36e2e132 into main

* changes:
  [SF] Update only the render rate on the refresh rate indicator
  [SF] Add sysprop to enable vrr config
parents 61cce0ad 3faf5744
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -477,8 +477,12 @@ void DisplayDevice::enableRefreshRateOverlay(bool enable, bool setByHwc, bool sh


void DisplayDevice::updateRefreshRateOverlayRate(Fps vsyncRate, Fps renderFps, bool setByHwc) {
void DisplayDevice::updateRefreshRateOverlayRate(Fps vsyncRate, Fps renderFps, bool setByHwc) {
    ATRACE_CALL();
    ATRACE_CALL();
    if (mRefreshRateOverlay && (!mRefreshRateOverlay->isSetByHwc() || setByHwc)) {
    if (mRefreshRateOverlay) {
        if (!mRefreshRateOverlay->isSetByHwc() || setByHwc) {
            mRefreshRateOverlay->changeRefreshRate(vsyncRate, renderFps);
            mRefreshRateOverlay->changeRefreshRate(vsyncRate, renderFps);
        } else {
            mRefreshRateOverlay->changeRenderRate(renderFps);
        }
    }
    }
}
}


+2 −3
Original line number Original line Diff line number Diff line
@@ -31,8 +31,7 @@


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

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


namespace android {
namespace android {


@@ -141,7 +140,7 @@ public:
    // Peak refresh rate represents the highest refresh rate that can be used
    // Peak refresh rate represents the highest refresh rate that can be used
    // for the presentation.
    // for the presentation.
    Fps getPeakFps() const {
    Fps getPeakFps() const {
        return flags::vrr_config() && mVrrConfig
        return flagutils::vrrConfigEnabled() && mVrrConfig
                ? Fps::fromPeriodNsecs(mVrrConfig->minFrameIntervalNs)
                ? Fps::fromPeriodNsecs(mVrrConfig->minFrameIntervalNs)
                : mVsyncRate;
                : mVsyncRate;
    }
    }
+9 −0
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@
#include "Client.h"
#include "Client.h"
#include "Layer.h"
#include "Layer.h"
#include "RefreshRateOverlay.h"
#include "RefreshRateOverlay.h"
#include "Utils/FlagUtils.h"


#include <SkSurface.h>
#include <SkSurface.h>


@@ -249,6 +250,14 @@ void RefreshRateOverlay::changeRefreshRate(Fps vsyncRate, Fps renderFps) {
    createTransaction().setBuffer(mSurfaceControl->get(), buffer).apply();
    createTransaction().setBuffer(mSurfaceControl->get(), buffer).apply();
}
}


void RefreshRateOverlay::changeRenderRate(Fps renderFps) {
    if (mFeatures.test(Features::RenderRate) && mVsyncRate && flagutils::vrrConfigEnabled()) {
        mRenderFps = renderFps;
        const auto buffer = getOrCreateBuffers(*mVsyncRate, renderFps)[mFrame];
        createTransaction().setBuffer(mSurfaceControl->get(), buffer).apply();
    }
}

void RefreshRateOverlay::animate() {
void RefreshRateOverlay::animate() {
    if (!mFeatures.test(Features::Spinner) || !mVsyncRate) return;
    if (!mFeatures.test(Features::Spinner) || !mVsyncRate) return;


+1 −0
Original line number Original line Diff line number Diff line
@@ -50,6 +50,7 @@ public:
    void setLayerStack(ui::LayerStack);
    void setLayerStack(ui::LayerStack);
    void setViewport(ui::Size);
    void setViewport(ui::Size);
    void changeRefreshRate(Fps, Fps);
    void changeRefreshRate(Fps, Fps);
    void changeRenderRate(Fps);
    void animate();
    void animate();
    bool isSetByHwc() const { return mFeatures.test(RefreshRateOverlay::Features::SetByHwc); }
    bool isSetByHwc() const { return mFeatures.test(RefreshRateOverlay::Features::SetByHwc); }


+2 −1
Original line number Original line Diff line number Diff line
@@ -38,6 +38,7 @@


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


#include <com_android_graphics_surfaceflinger_flags.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/;
    using fps_approx_ops::operator/;
    // use signed type as `fps / range.max` might be 0
    // use signed type as `fps / range.max` might be 0
    auto start = std::max(1, static_cast<int>(peakFps / range.max) - 1);
    auto start = std::max(1, static_cast<int>(peakFps / range.max) - 1);
    if (flags::vrr_config()) {
    if (flagutils::vrrConfigEnabled()) {
        start = std::max(1,
        start = std::max(1,
                         static_cast<int>(vsyncRate /
                         static_cast<int>(vsyncRate /
                                          std::min(range.max, peakFps, fps_approx_ops::operator<)) -
                                          std::min(range.max, peakFps, fps_approx_ops::operator<)) -
Loading