summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/SurfaceFlinger.cpp
diff options
context:
space:
mode:
author Sally Qi <sallyqi@google.com> 2024-12-03 22:10:45 -0800
committer Sally Qi <sallyqi@google.com> 2025-01-06 10:53:26 -0800
commit10fc8990be2c0b81d29b3241eff3cb7994397e92 (patch)
tree9dc4ffc9d50f689c3440ad5934d047278ceec73f /services/surfaceflinger/SurfaceFlinger.cpp
parentedc714653a4f690c34ff6897e3ae4d1e79d1d38e (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.cpp4
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());