Loading services/surfaceflinger/FrontEnd/LayerSnapshot.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #define LOG_TAG "SurfaceFlinger" #include "LayerSnapshot.h" #include "Layer.h" namespace android::surfaceflinger::frontend { Loading Loading @@ -363,7 +364,7 @@ void LayerSnapshot::merge(const RequestedLayerState& requested, bool forceUpdate geomBufferUsesDisplayInverseTransform = requested.transformToDisplayInverse; } if (forceUpdate || requested.what & layer_state_t::eDataspaceChanged) { dataspace = requested.dataspace; dataspace = Layer::translateDataspace(requested.dataspace); } if (forceUpdate || requested.what & layer_state_t::eExtendedRangeBrightnessChanged) { currentHdrSdrRatio = requested.currentHdrSdrRatio; Loading services/surfaceflinger/Layer.h +1 −1 Original line number Diff line number Diff line Loading @@ -427,7 +427,7 @@ public: bool needsFilteringForScreenshots(const DisplayDevice*, const ui::Transform&) const; // from graphics API ui::Dataspace translateDataspace(ui::Dataspace dataspace); static ui::Dataspace translateDataspace(ui::Dataspace dataspace); void updateCloneBufferInfo(); uint64_t mPreviousFrameNumber = 0; Loading services/surfaceflinger/SurfaceFlinger.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -2322,7 +2322,7 @@ bool SurfaceFlinger::updateLayerSnapshots(VsyncId vsyncId, nsecs_t frameTimeNs, mUpdateInputInfo = true; } if (mLayerLifecycleManager.getGlobalChanges().any(Changes::VisibleRegion | Changes::Hierarchy | Changes::Visibility)) { Changes::Visibility | Changes::Geometry)) { mVisibleRegionsDirty = true; } if (mLayerLifecycleManager.getGlobalChanges().any(Changes::Hierarchy | Changes::FrameRate)) { Loading Loading @@ -2363,6 +2363,7 @@ bool SurfaceFlinger::updateLayerSnapshots(VsyncId vsyncId, nsecs_t frameTimeNs, } it->second->latchBufferImpl(unused, latchTime, bgColorOnly); newDataLatched = true; mLayersWithQueuedFrames.emplace(it->second); mLayersIdsWithQueuedFrames.emplace(it->second->sequence); } Loading Loading @@ -5394,6 +5395,9 @@ uint32_t SurfaceFlinger::updateLayerCallbacksAndStats(const FrameTimelineInfo& f if (what & layer_state_t::eSidebandStreamChanged) { if (layer->setSidebandStream(s.sidebandStream)) flags |= eTraversalNeeded; } if (what & layer_state_t::eDataspaceChanged) { if (layer->setDataspace(s.dataspace)) flags |= eTraversalNeeded; } if (what & layer_state_t::eBufferChanged) { std::optional<ui::Transform::RotationFlags> transformHint = std::nullopt; frontend::LayerSnapshot* snapshot = mLayerSnapshotBuilder.getSnapshot(layer->sequence); Loading services/surfaceflinger/tests/unittests/LayerHierarchyTest.h +11 −0 Original line number Diff line number Diff line Loading @@ -361,6 +361,17 @@ protected: mLifecycleManager.applyTransactions(transactions); } void setDataspace(uint32_t id, ui::Dataspace dataspace) { std::vector<TransactionState> transactions; transactions.emplace_back(); transactions.back().states.push_back({}); transactions.back().states.front().state.what = layer_state_t::eDataspaceChanged; transactions.back().states.front().layerId = id; transactions.back().states.front().state.dataspace = dataspace; mLifecycleManager.applyTransactions(transactions); } LayerLifecycleManager mLifecycleManager; }; Loading services/surfaceflinger/tests/unittests/LayerSnapshotTest.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include "FrontEnd/LayerSnapshotBuilder.h" #include "Layer.h" #include "LayerHierarchyTest.h" #include "ui/GraphicTypes.h" #define UPDATE_AND_VERIFY(BUILDER, ...) \ ({ \ Loading Loading @@ -603,6 +604,12 @@ TEST_F(LayerSnapshotTest, framerate) { scheduler::LayerInfo::FrameRateCompatibility::Default); } TEST_F(LayerSnapshotTest, translateDataspace) { setDataspace(1, ui::Dataspace::UNKNOWN); UPDATE_AND_VERIFY(mSnapshotBuilder, STARTING_ZORDER); EXPECT_EQ(getSnapshot({.id = 1})->dataspace, ui::Dataspace::V0_SRGB); } TEST_F(LayerSnapshotTest, skipRoundCornersWhenProtected) { setRoundedCorners(1, 42.f); setRoundedCorners(2, 42.f); Loading Loading
services/surfaceflinger/FrontEnd/LayerSnapshot.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #define LOG_TAG "SurfaceFlinger" #include "LayerSnapshot.h" #include "Layer.h" namespace android::surfaceflinger::frontend { Loading Loading @@ -363,7 +364,7 @@ void LayerSnapshot::merge(const RequestedLayerState& requested, bool forceUpdate geomBufferUsesDisplayInverseTransform = requested.transformToDisplayInverse; } if (forceUpdate || requested.what & layer_state_t::eDataspaceChanged) { dataspace = requested.dataspace; dataspace = Layer::translateDataspace(requested.dataspace); } if (forceUpdate || requested.what & layer_state_t::eExtendedRangeBrightnessChanged) { currentHdrSdrRatio = requested.currentHdrSdrRatio; Loading
services/surfaceflinger/Layer.h +1 −1 Original line number Diff line number Diff line Loading @@ -427,7 +427,7 @@ public: bool needsFilteringForScreenshots(const DisplayDevice*, const ui::Transform&) const; // from graphics API ui::Dataspace translateDataspace(ui::Dataspace dataspace); static ui::Dataspace translateDataspace(ui::Dataspace dataspace); void updateCloneBufferInfo(); uint64_t mPreviousFrameNumber = 0; Loading
services/surfaceflinger/SurfaceFlinger.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -2322,7 +2322,7 @@ bool SurfaceFlinger::updateLayerSnapshots(VsyncId vsyncId, nsecs_t frameTimeNs, mUpdateInputInfo = true; } if (mLayerLifecycleManager.getGlobalChanges().any(Changes::VisibleRegion | Changes::Hierarchy | Changes::Visibility)) { Changes::Visibility | Changes::Geometry)) { mVisibleRegionsDirty = true; } if (mLayerLifecycleManager.getGlobalChanges().any(Changes::Hierarchy | Changes::FrameRate)) { Loading Loading @@ -2363,6 +2363,7 @@ bool SurfaceFlinger::updateLayerSnapshots(VsyncId vsyncId, nsecs_t frameTimeNs, } it->second->latchBufferImpl(unused, latchTime, bgColorOnly); newDataLatched = true; mLayersWithQueuedFrames.emplace(it->second); mLayersIdsWithQueuedFrames.emplace(it->second->sequence); } Loading Loading @@ -5394,6 +5395,9 @@ uint32_t SurfaceFlinger::updateLayerCallbacksAndStats(const FrameTimelineInfo& f if (what & layer_state_t::eSidebandStreamChanged) { if (layer->setSidebandStream(s.sidebandStream)) flags |= eTraversalNeeded; } if (what & layer_state_t::eDataspaceChanged) { if (layer->setDataspace(s.dataspace)) flags |= eTraversalNeeded; } if (what & layer_state_t::eBufferChanged) { std::optional<ui::Transform::RotationFlags> transformHint = std::nullopt; frontend::LayerSnapshot* snapshot = mLayerSnapshotBuilder.getSnapshot(layer->sequence); Loading
services/surfaceflinger/tests/unittests/LayerHierarchyTest.h +11 −0 Original line number Diff line number Diff line Loading @@ -361,6 +361,17 @@ protected: mLifecycleManager.applyTransactions(transactions); } void setDataspace(uint32_t id, ui::Dataspace dataspace) { std::vector<TransactionState> transactions; transactions.emplace_back(); transactions.back().states.push_back({}); transactions.back().states.front().state.what = layer_state_t::eDataspaceChanged; transactions.back().states.front().layerId = id; transactions.back().states.front().state.dataspace = dataspace; mLifecycleManager.applyTransactions(transactions); } LayerLifecycleManager mLifecycleManager; }; Loading
services/surfaceflinger/tests/unittests/LayerSnapshotTest.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include "FrontEnd/LayerSnapshotBuilder.h" #include "Layer.h" #include "LayerHierarchyTest.h" #include "ui/GraphicTypes.h" #define UPDATE_AND_VERIFY(BUILDER, ...) \ ({ \ Loading Loading @@ -603,6 +604,12 @@ TEST_F(LayerSnapshotTest, framerate) { scheduler::LayerInfo::FrameRateCompatibility::Default); } TEST_F(LayerSnapshotTest, translateDataspace) { setDataspace(1, ui::Dataspace::UNKNOWN); UPDATE_AND_VERIFY(mSnapshotBuilder, STARTING_ZORDER); EXPECT_EQ(getSnapshot({.id = 1})->dataspace, ui::Dataspace::V0_SRGB); } TEST_F(LayerSnapshotTest, skipRoundCornersWhenProtected) { setRoundedCorners(1, 42.f); setRoundedCorners(2, 42.f); Loading