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

Commit d16f6ae2 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "HWC2: Add properties to revert latching changes" into nyc-mr1-dev

parents f42ca4da c5da271e
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -51,6 +51,8 @@

#include "RenderEngine/RenderEngine.h"

#include <mutex>

#define DEBUG_RESIZE    0

namespace android {
@@ -1091,6 +1093,20 @@ uint32_t Layer::getProducerStickyTransform() const {
    return static_cast<uint32_t>(producerStickyTransform);
}

bool Layer::latchUnsignaledBuffers() {
    static bool propertyLoaded = false;
    static bool latch = false;
    static std::mutex mutex;
    std::lock_guard<std::mutex> lock(mutex);
    if (!propertyLoaded) {
        char value[PROPERTY_VALUE_MAX] = {};
        property_get("debug.sf.latch_unsignaled", value, "0");
        latch = atoi(value);
        propertyLoaded = true;
    }
    return latch;
}

uint64_t Layer::getHeadFrameNumber() const {
    Mutex::Autolock lock(mQueueItemLock);
    if (!mQueueItems.empty()) {
@@ -1102,6 +1118,10 @@ uint64_t Layer::getHeadFrameNumber() const {

bool Layer::headFenceHasSignaled() const {
#ifdef USE_HWC2
    if (latchUnsignaledBuffers()) {
        return true;
    }

    Mutex::Autolock lock(mQueueItemLock);
    if (mQueueItems.empty()) {
        return true;
+3 −0
Original line number Diff line number Diff line
@@ -465,6 +465,9 @@ private:
    // Temporary - Used only for LEGACY camera mode.
    uint32_t getProducerStickyTransform() const;

    // Loads the corresponding system property once per process
    static bool latchUnsignaledBuffers();

    // -----------------------------------------------------------------------

    class SyncPoint
+5 −1
Original line number Diff line number Diff line
@@ -179,6 +179,10 @@ SurfaceFlinger::SurfaceFlinger()
    }
    ALOGI_IF(mDebugRegion, "showupdates enabled");
    ALOGI_IF(mDebugDDMS, "DDMS debugging enabled");

    property_get("debug.sf.disable_backpressure", value, "0");
    mPropagateBackpressure = !atoi(value);
    ALOGI_IF(!mPropagateBackpressure, "Disabling backpressure propagation");
}

void SurfaceFlinger::onFirstRef()
@@ -1009,7 +1013,7 @@ void SurfaceFlinger::onMessageReceived(int32_t what) {
                    mPreviousPresentFence != Fence::NO_FENCE &&
                    mPreviousPresentFence->getSignalTime() == INT64_MAX;
            ATRACE_INT("FrameMissed", static_cast<int>(frameMissed));
            if (frameMissed) {
            if (mPropagateBackpressure && frameMissed) {
                signalLayerUpdate();
                break;
            }
+3 −0
Original line number Diff line number Diff line
@@ -526,6 +526,9 @@ private:
    bool mBootFinished;
    bool mForceFullDamage;
    FenceTracker mFenceTracker;
#ifdef USE_HWC2
    bool mPropagateBackpressure = true;
#endif

    // these are thread safe
    mutable MessageQueue mEventQueue;