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

Commit 80e8cfe3 authored by Vishnu Nair's avatar Vishnu Nair
Browse files

[sf-newfe] update default frame rate compatibility

Bug: 300701739
Test: presubmit
Change-Id: I3dbfd8d7ef6fe801d4d750c1828d09da511ce283
parent ddba9342
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -398,6 +398,15 @@ void LayerSnapshot::merge(const RequestedLayerState& requested, bool forceUpdate
        geomCrop = requested.crop;
    }

    if (forceUpdate || requested.what & layer_state_t::eDefaultFrameRateCompatibilityChanged) {
        const auto compatibility =
                Layer::FrameRate::convertCompatibility(requested.defaultFrameRateCompatibility);
        if (defaultFrameRateCompatibility != compatibility) {
            clientChanges |= layer_state_t::eDefaultFrameRateCompatibilityChanged;
        }
        defaultFrameRateCompatibility = compatibility;
    }

    if (forceUpdate ||
        requested.what &
                (layer_state_t::eFlagsChanged | layer_state_t::eBufferChanged |
+2 −0
Original line number Diff line number Diff line
@@ -86,6 +86,8 @@ struct LayerSnapshot : public compositionengine::LayerFECompositionState {
    gui::GameMode gameMode;
    scheduler::LayerInfo::FrameRate frameRate;
    scheduler::LayerInfo::FrameRateSelectionStrategy frameRateSelectionStrategy;
    scheduler::FrameRateCompatibility defaultFrameRateCompatibility =
            scheduler::FrameRateCompatibility::Default;
    ui::Transform::RotationFlags fixedTransformHint;
    std::optional<ui::Transform::RotationFlags> transformHint;
    bool handleSkipScreenshotFlag = false;
+1 −1
Original line number Diff line number Diff line
@@ -1155,7 +1155,7 @@ bool Layer::setDefaultFrameRateCompatibility(FrameRateCompatibility compatibilit
    if (mDrawingState.defaultFrameRateCompatibility == compatibility) return false;
    mDrawingState.defaultFrameRateCompatibility = compatibility;
    mDrawingState.modified = true;
    mFlinger->mScheduler->setDefaultFrameRateCompatibility(this);
    mFlinger->mScheduler->setDefaultFrameRateCompatibility(sequence, compatibility);
    setTransactionFlags(eTransactionNeeded);
    return true;
}
+5 −5
Original line number Diff line number Diff line
@@ -141,20 +141,20 @@ void LayerHistory::record(int32_t id, const LayerProps& layerProps, nsecs_t pres
    }
}

void LayerHistory::setDefaultFrameRateCompatibility(Layer* layer, bool contentDetectionEnabled) {
void LayerHistory::setDefaultFrameRateCompatibility(int32_t id,
                                                    FrameRateCompatibility frameRateCompatibility,
                                                    bool contentDetectionEnabled) {
    std::lock_guard lock(mLock);
    auto id = layer->getSequence();

    auto [found, layerPair] = findLayer(id);
    if (found == LayerStatus::NotFound) {
        // Offscreen layer
        ALOGV("%s: %s not registered", __func__, layer->getName().c_str());
        ALOGV("%s: %d not registered", __func__, id);
        return;
    }

    const auto& info = layerPair->second;
    info->setDefaultLayerVote(
            getVoteType(layer->getDefaultFrameRateCompatibility(), contentDetectionEnabled));
    info->setDefaultLayerVote(getVoteType(frameRateCompatibility, contentDetectionEnabled));
}

auto LayerHistory::summarize(const RefreshRateSelector& selector, nsecs_t now) -> Summary {
+3 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@

#include "EventThread.h"

#include "FrameRateCompatibility.h"
#include "RefreshRateSelector.h"

namespace android {
@@ -70,7 +71,8 @@ public:

    // Updates the default frame rate compatibility which takes effect when the app
    // does not set a preference for refresh rate.
    void setDefaultFrameRateCompatibility(Layer*, bool contentDetectionEnabled);
    void setDefaultFrameRateCompatibility(int32_t id, FrameRateCompatibility frameRateCompatibility,
                                          bool contentDetectionEnabled);

    using Summary = std::vector<RefreshRateSelector::LayerRequirement>;

Loading