diff options
author | 2024-12-03 22:10:45 -0800 | |
---|---|---|
committer | 2025-01-06 10:53:26 -0800 | |
commit | 10fc8990be2c0b81d29b3241eff3cb7994397e92 (patch) | |
tree | 9dc4ffc9d50f689c3440ad5934d047278ceec73f /services/surfaceflinger/SurfaceFlinger.cpp | |
parent | edc714653a4f690c34ff6897e3ae4d1e79d1d38e (diff) |
[Lut screenshot] backend implementation v2
Relnote: real implementation to call getLuts() binder in screenshot.
1. screenshot compositionengine doesn't have valid hwc composer object,
we modify `setHwComposer` function to allow hwcomposer object to be
used in multiple places. and set hwcomposer to screenshot
compositionengine.
2. extend compositionengine::LayerFE::LayerSettings to include layer
sequence number, and we use this unique value to identify which Luts
should be used for which layer.
Bug: 352585077
Test: libcompositionengine_test; libsurfaceflinger_unittest
Flag: android.hardware.flags.luts_api
Change-Id: I4ef43bfd515541d23a8de8785f04e3a21c46b410
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index dd1119a5d1..1c185b1dd1 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -920,7 +920,8 @@ void SurfaceFlinger::init() FTL_FAKE_GUARD(kMainThreadContext) { mCompositionEngine->setTimeStats(mTimeStats); - mCompositionEngine->setHwComposer(getFactory().createHWComposer(mHwcServiceName)); + mHWComposer = getFactory().createHWComposer(mHwcServiceName); + mCompositionEngine->setHwComposer(mHWComposer.get()); auto& composer = mCompositionEngine->getHwComposer(); composer.setCallback(*this); mDisplayModeController.setHwComposer(&composer); @@ -7697,6 +7698,7 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl( std::unique_ptr<compositionengine::CompositionEngine> compositionEngine = mFactory.createCompositionEngine(); compositionEngine->setRenderEngine(mRenderEngine.get()); + compositionEngine->setHwComposer(mHWComposer.get()); std::vector<sp<compositionengine::LayerFE>> layerFEs; layerFEs.reserve(layers.size()); |