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

Commit 2e66d172 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 10853826 from ab85f59f to 24Q1-release

Change-Id: I37bfa53f5b1860300fab323fdfd889b34be4fd98
parents 75a49d1b ab85f59f
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;
    }
    }
+12 −4
Original line number Original line Diff line number Diff line
@@ -1252,9 +1252,14 @@ const half4& Layer::getBorderColor() {
    return mBorderColor;
    return mBorderColor;
}
}


bool Layer::propagateFrameRateForLayerTree(FrameRate parentFrameRate, bool* transactionNeeded) {
bool Layer::propagateFrameRateForLayerTree(FrameRate parentFrameRate, bool overrideChildren,
    // The frame rate for layer tree is this layer's frame rate if present, or the parent frame rate
                                           bool* transactionNeeded) {
    // Gets the frame rate to propagate to children.
    const auto frameRate = [&] {
    const auto frameRate = [&] {
        if (overrideChildren && parentFrameRate.isValid()) {
            return parentFrameRate;
        }

        if (mDrawingState.frameRate.isValid()) {
        if (mDrawingState.frameRate.isValid()) {
            return mDrawingState.frameRate;
            return mDrawingState.frameRate;
        }
        }
@@ -1268,7 +1273,10 @@ bool Layer::propagateFrameRateForLayerTree(FrameRate parentFrameRate, bool* tran
    bool childrenHaveFrameRate = false;
    bool childrenHaveFrameRate = false;
    for (const sp<Layer>& child : mCurrentChildren) {
    for (const sp<Layer>& child : mCurrentChildren) {
        childrenHaveFrameRate |=
        childrenHaveFrameRate |=
                child->propagateFrameRateForLayerTree(frameRate, transactionNeeded);
                child->propagateFrameRateForLayerTree(frameRate,
                                                      overrideChildren ||
                                                              shouldOverrideChildrenFrameRate(),
                                                      transactionNeeded);
    }
    }


    // If we don't have a valid frame rate specification, but the children do, we set this
    // If we don't have a valid frame rate specification, but the children do, we set this
@@ -1301,7 +1309,7 @@ void Layer::updateTreeHasFrameRateVote() {
    }();
    }();


    bool transactionNeeded = false;
    bool transactionNeeded = false;
    root->propagateFrameRateForLayerTree({}, &transactionNeeded);
    root->propagateFrameRateForLayerTree({}, false, &transactionNeeded);


    // TODO(b/195668952): we probably don't need eTraversalNeeded here
    // TODO(b/195668952): we probably don't need eTraversalNeeded here
    if (transactionNeeded) {
    if (transactionNeeded) {
+7 −1
Original line number Original line Diff line number Diff line
@@ -1102,7 +1102,8 @@ private:
                                          const std::vector<Layer*>& layersInTree);
                                          const std::vector<Layer*>& layersInTree);


    void updateTreeHasFrameRateVote();
    void updateTreeHasFrameRateVote();
    bool propagateFrameRateForLayerTree(FrameRate parentFrameRate, bool* transactionNeeded);
    bool propagateFrameRateForLayerTree(FrameRate parentFrameRate, bool overrideChildren,
                                        bool* transactionNeeded);
    void setZOrderRelativeOf(const wp<Layer>& relativeOf);
    void setZOrderRelativeOf(const wp<Layer>& relativeOf);
    bool isTrustedOverlay() const;
    bool isTrustedOverlay() const;
    gui::DropInputMode getDropInputMode() const;
    gui::DropInputMode getDropInputMode() const;
@@ -1164,6 +1165,11 @@ private:
    void transferAvailableJankData(const std::deque<sp<CallbackHandle>>& handles,
    void transferAvailableJankData(const std::deque<sp<CallbackHandle>>& handles,
                                   std::vector<JankData>& jankData);
                                   std::vector<JankData>& jankData);


    bool shouldOverrideChildrenFrameRate() const {
        return getDrawingState().frameRateSelectionStrategy ==
                FrameRateSelectionStrategy::OverrideChildren;
    }

    // Cached properties computed from drawing state
    // Cached properties computed from drawing state
    // Effective transform taking into account parent transforms and any parent scaling, which is
    // Effective transform taking into account parent transforms and any parent scaling, which is
    // a transform from the current layer coordinate space to display(screen) coordinate space.
    // a transform from the current layer coordinate space to display(screen) coordinate space.
+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;


Loading