diff options
| author | 2019-09-19 18:46:55 -0700 | |
|---|---|---|
| committer | 2019-09-19 18:46:55 -0700 | |
| commit | 1969a57087308a89bc05231f67fb6f9ff507f401 (patch) | |
| tree | 90dd5a5f75b18d39014a202c0dce8e29989d917a | |
| parent | 5200af9cf171f47326f117fa2ed799f39a4bbb72 (diff) | |
| parent | 13de058b6f9451e989f0bf0b84d66892df69f8b8 (diff) | |
Merge "Revert "Revert "SurfaceFlinger: add a sysprop for GL backpressure""" into qt-dev am: 3f646b05fc
am: 13de058b6f
Change-Id: I3e398c08e10b9d144dba67baa3fa2d7e7c1d3e07
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 11 | ||||
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.h | 1 |
2 files changed, 9 insertions, 3 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index d51702b66f..997234f038 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -337,6 +337,11 @@ SurfaceFlinger::SurfaceFlinger(Factory& factory) : SurfaceFlinger(factory, SkipI mPropagateBackpressure = !atoi(value); ALOGI_IF(!mPropagateBackpressure, "Disabling backpressure propagation"); + property_get("debug.sf.enable_gl_backpressure", value, "0"); + mPropagateBackpressureClientComposition = atoi(value); + ALOGI_IF(mPropagateBackpressureClientComposition, + "Enabling backpressure propagation for Client Composition"); + property_get("debug.sf.enable_hwc_vds", value, "0"); mUseHwcVirtualDisplays = atoi(value); ALOGI_IF(mUseHwcVirtualDisplays, "Enabling HWC virtual displays"); @@ -1644,9 +1649,9 @@ void SurfaceFlinger::onMessageReceived(int32_t what) NO_THREAD_SAFETY_ANALYSIS { break; } - // For now, only propagate backpressure when missing a hwc frame. - if (hwcFrameMissed && !gpuFrameMissed) { - if (mPropagateBackpressure) { + if (frameMissed && mPropagateBackpressure) { + if ((hwcFrameMissed && !gpuFrameMissed) || + mPropagateBackpressureClientComposition) { signalLayerUpdate(); break; } diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index 511f972886..2a6836e73f 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -982,6 +982,7 @@ private: volatile nsecs_t mDebugInTransaction = 0; bool mForceFullDamage = false; bool mPropagateBackpressure = true; + bool mPropagateBackpressureClientComposition = false; std::unique_ptr<SurfaceInterceptor> mInterceptor; SurfaceTracing mTracing{*this}; bool mTracingEnabled = false; |