Re-introduce debug.sf.latch_unsignaled
This pretty much reverts this commit: Ia453eaf895554adbb2fa9c11c2bc8609e1037ea5.
Some devices may find this helpful to improve performance, but there is a risk of pipeline stall from misbehaving apps.
Bug: 173694115
Test: manual
Merged-In: I48c3095061dc106fa08d36b8ef17eccb04fb6eb1
Change-Id: I48c3095061dc106fa08d36b8ef17eccb04fb6eb1
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index e2f3ebb..7f55cc2 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -310,6 +310,7 @@
ui::PixelFormat SurfaceFlinger::wideColorGamutCompositionPixelFormat = ui::PixelFormat::RGBA_8888;
bool SurfaceFlinger::useFrameRateApi;
bool SurfaceFlinger::enableSdrDimming;
+bool SurfaceFlinger::enableLatchUnsignaled;
std::string decodeDisplayColorSetting(DisplayColorSetting displayColorSetting) {
switch(displayColorSetting) {
@@ -479,6 +480,8 @@
// Debug property overrides ro. property
enableSdrDimming = property_get_bool("debug.sf.enable_sdr_dimming", enable_sdr_dimming(false));
+
+ enableLatchUnsignaled = base::GetBoolProperty("debug.sf.latch_unsignaled"s, false);
}
SurfaceFlinger::~SurfaceFlinger() = default;
@@ -3571,7 +3574,7 @@
for (const ComposerState& state : states) {
const layer_state_t& s = state.state;
const bool acquireFenceChanged = (s.what & layer_state_t::eAcquireFenceChanged);
- if (acquireFenceChanged && s.acquireFence &&
+ if (acquireFenceChanged && s.acquireFence && !enableLatchUnsignaled &&
s.acquireFence->getStatus() == Fence::Status::Unsignaled) {
ATRACE_NAME("fence unsignaled");
return false;