SF: Make message refresh loop over displays
Update message refresh handling to loop over the displays
at the top level and have each sub-function operate on the
passed in display. This will facilitate later updates that
allow for an SFBE per display.
Bug: 112259502
Test: cts -m CtsViewTestCases
SurfaceFlinger_test
vrflinger_test
Change-Id: I0284540563e532aa33a635c1642212eeb3f78bf4
diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
index f5d8eb4..ff8dfa8 100644
--- a/services/surfaceflinger/SurfaceFlinger.h
+++ b/services/surfaceflinger/SurfaceFlinger.h
@@ -673,14 +673,14 @@
* prior to any CompositionInfo handling and is not dependent on data in
* CompositionInfo
*/
- void beginFrame();
+ void beginFrame(const sp<DisplayDevice>& display);
/* prepareFrame - This function will call into the DisplayDevice to prepare a
* frame after CompositionInfo has been programmed. This provides a mechanism
* to prepare the hardware composer
*/
- void prepareFrame();
- void doComposition();
- void doDebugFlashRegions();
+ void prepareFrame(const sp<DisplayDevice>& display);
+ void doComposition(const sp<DisplayDevice>& display, bool repainEverything);
+ void doDebugFlashRegions(const sp<DisplayDevice>& display, bool repaintEverything);
void doTracing(const char* where);
void logLayerStats();
void doDisplayComposition(const sp<const DisplayDevice>& display, const Region& dirtyRegion);
@@ -688,7 +688,8 @@
// This fails if using GL and the surface has been destroyed.
bool doComposeSurfaces(const sp<const DisplayDevice>& display);
- void postFramebuffer();
+ void postFramebuffer(const sp<DisplayDevice>& display);
+ void postFrame();
void drawWormhole(const sp<const DisplayDevice>& display, const Region& region) const;
/* ------------------------------------------------------------------------
@@ -844,9 +845,9 @@
int mDebugDisableHWC;
int mDebugDisableTransformHint;
volatile nsecs_t mDebugInSwapBuffers;
- nsecs_t mLastSwapBufferTime;
volatile nsecs_t mDebugInTransaction;
nsecs_t mLastTransactionTime;
+ nsecs_t mPostFramebufferTime;
bool mForceFullDamage;
bool mPropagateBackpressure = true;
std::unique_ptr<SurfaceInterceptor> mInterceptor =