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

Commit 2139f73d authored by Ady Abraham's avatar Ady Abraham
Browse files

SurfaceFlinger: use config groups

Composer 2.4 adds a new attribute for configs groups. This change
groups configs according to their group and store them in
RefreshRateConfigs.

Test: rev up composer to 2.4 and test refresh rate switching
Test: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest
Test: adb shell /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test
Bug: 141329414
Fixes: 139751853
Change-Id: Ic0bcd3da4bf6b73efa11a60c2594948ce030362f
parent fbbd4fe4
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -399,8 +399,7 @@ void BufferQueueLayer::onFrameAvailable(const BufferItem& item) {
    // Add this buffer from our internal queue tracker
    { // Autolock scope
        const nsecs_t presentTime = item.mIsAutoTimestamp ? 0 : item.mTimestamp;
        const bool isHDR = item.mHdrMetadata.validTypes != 0;
        mFlinger->mScheduler->recordLayerHistory(this, presentTime, isHDR);
        mFlinger->mScheduler->recordLayerHistory(this, presentTime);

        Mutex::Autolock lock(mQueueItemLock);
        // Reset the frame number tracker when we receive the first buffer after
+1 −2
Original line number Diff line number Diff line
@@ -247,8 +247,7 @@ bool BufferStateLayer::setBuffer(const sp<GraphicBuffer>& buffer, nsecs_t postTi
                                           FrameTracer::FrameEvent::POST);
    mCurrentState.desiredPresentTime = desiredPresentTime;

    const bool isHDR = mCurrentState.hdrMetadata.validTypes != 0;
    mFlinger->mScheduler->recordLayerHistory(this, desiredPresentTime, isHDR);
    mFlinger->mScheduler->recordLayerHistory(this, desiredPresentTime);

    return true;
}
+3 −3
Original line number Diff line number Diff line
@@ -132,11 +132,11 @@ bool DisplayDevice::isPoweredOn() const {
}

// ----------------------------------------------------------------------------
void DisplayDevice::setActiveConfig(int mode) {
void DisplayDevice::setActiveConfig(HwcConfigIndexType mode) {
    mActiveConfig = mode;
}

int DisplayDevice::getActiveConfig()  const {
HwcConfigIndexType DisplayDevice::getActiveConfig() const {
    return mActiveConfig;
}

@@ -285,7 +285,7 @@ void DisplayDevice::dump(std::string& result) const {

    result.append("   ");
    StringAppendF(&result, "powerMode=%d, ", mPowerMode);
    StringAppendF(&result, "activeConfig=%d, ", mActiveConfig);
    StringAppendF(&result, "activeConfig=%d, ", mActiveConfig.value());
    getCompositionDisplay()->dump(result);
}

+4 −3
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@
#include "DisplayHardware/DisplayIdentification.h"
#include "DisplayHardware/PowerAdvisor.h"
#include "RenderArea.h"
#include "Scheduler/HwcStrongTypes.h"

namespace android {

@@ -141,8 +142,8 @@ public:
    /* ------------------------------------------------------------------------
     * Display active config management.
     */
    int getActiveConfig() const;
    void setActiveConfig(int mode);
    HwcConfigIndexType getActiveConfig() const;
    void setActiveConfig(HwcConfigIndexType mode);

    // release HWC resources (if any) for removable displays
    void disconnect();
@@ -186,7 +187,7 @@ private:
    // Current power mode
    int mPowerMode;
    // Current active config
    int mActiveConfig;
    HwcConfigIndexType mActiveConfig;

    // TODO(b/74619554): Remove special cases for primary display.
    const bool mIsPrimary;
+2 −4
Original line number Diff line number Diff line
@@ -20,8 +20,6 @@

namespace android {

using RefreshRateType = scheduler::RefreshRateConfigs::RefreshRateType;

RefreshRateOverlay::RefreshRateOverlay(SurfaceFlinger& flinger)
      : mFlinger(flinger), mClient(new Client(&mFlinger)) {
    createLayer();
@@ -51,8 +49,8 @@ bool RefreshRateOverlay::createLayer() {
    return true;
}

void RefreshRateOverlay::changeRefreshRate(RefreshRateType type) {
    const half3& color = (type == RefreshRateType::PERFORMANCE) ? GREEN : RED;
void RefreshRateOverlay::changeRefreshRate(const RefreshRate& refreshRate) {
    const half3& color = (refreshRate.fps > 65.0f) ? GREEN : RED;
    mLayer->setColor(color);
    mFlinger.mTransactionFlags.fetch_or(eTransactionMask);
}
Loading