diff options
| -rw-r--r-- | services/surfaceflinger/tests/unittests/CompositionTest.cpp | 38 | ||||
| -rw-r--r-- | services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h | 1 |
2 files changed, 39 insertions, 0 deletions
diff --git a/services/surfaceflinger/tests/unittests/CompositionTest.cpp b/services/surfaceflinger/tests/unittests/CompositionTest.cpp index b6fa2a6403..8aff096d5e 100644 --- a/services/surfaceflinger/tests/unittests/CompositionTest.cpp +++ b/services/surfaceflinger/tests/unittests/CompositionTest.cpp @@ -1039,6 +1039,26 @@ struct ForcedClientCompositionResultVariant : public CompositionResultBaseVarian static void setupCallExpectationsForDirtyFrame(CompositionTest*) {} }; +struct ForcedClientCompositionViaDebugOptionResultVariant : public CompositionResultBaseVariant { + static void setupLayerState(CompositionTest* test, sp<Layer>) { + test->mFlinger.mutableDebugDisableHWC() = true; + } + + template <typename Case> + static void setupCallExpectations(CompositionTest* test) { + Case::Display::setupNonEmptyFrameCompositionCallExpectations(test); + Case::Display::setupHwcForcedClientCompositionCallExpectations(test); + Case::Display::setupRECompositionCallExpectations(test); + Case::Display::template setupRELayerCompositionCallExpectations<Case>(test); + } + + template <typename Case> + static void setupCallExpectationsForDirtyGeometry(CompositionTest*) {} + + template <typename Case> + static void setupCallExpectationsForDirtyFrame(CompositionTest*) {} +}; + struct EmptyScreenshotResultVariant { static void setupLayerState(CompositionTest*, sp<Layer>) {} @@ -1350,5 +1370,23 @@ TEST_F(CompositionTest, captureScreenNormalBufferLayerOnPoweredOffDisplay) { NoCompositionTypeVariant, REScreenshotResultVariant>>(); } +/* ------------------------------------------------------------------------ + * Client composition forced through debug/developer settings + */ + +TEST_F(CompositionTest, DebugOptionForcingClientCompositionOfBufferLayerWithDirtyGeometry) { + displayRefreshCompositionDirtyGeometry< + CompositionCase<DefaultDisplaySetupVariant, BufferLayerVariant<DefaultLayerProperties>, + KeepCompositionTypeVariant<IComposerClient::Composition::CLIENT>, + ForcedClientCompositionViaDebugOptionResultVariant>>(); +} + +TEST_F(CompositionTest, DebugOptionForcingClientCompositionOfBufferLayerWithDirtyFrame) { + displayRefreshCompositionDirtyFrame< + CompositionCase<DefaultDisplaySetupVariant, BufferLayerVariant<DefaultLayerProperties>, + KeepCompositionTypeVariant<IComposerClient::Composition::CLIENT>, + ForcedClientCompositionViaDebugOptionResultVariant>>(); +} + } // namespace } // namespace android diff --git a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h index b77f82a7f8..926b8ac623 100644 --- a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h +++ b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h @@ -356,6 +356,7 @@ public: auto& mutableTransactionFlags() { return mFlinger->mTransactionFlags; } auto& mutableUseHwcVirtualDisplays() { return mFlinger->mUseHwcVirtualDisplays; } auto& mutablePowerAdvisor() { return mFlinger->mPowerAdvisor; } + auto& mutableDebugDisableHWC() { return mFlinger->mDebugDisableHWC; } auto& mutableComposerSequenceId() { return mFlinger->getBE().mComposerSequenceId; } auto& mutableHwcDisplayData() { return getHwComposer().mDisplayData; } |