Loading libs/gui/include/gui/LayerState.h +0 −3 Original line number Diff line number Diff line Loading @@ -279,9 +279,6 @@ struct layer_state_t { layer_state_t::eDropInputModeChanged | layer_state_t::eTrustedOverlayChanged | layer_state_t::eLayerStackChanged; // Changes requiring a composition pass. static constexpr uint64_t REQUIRES_COMPOSITION = layer_state_t::CONTENT_DIRTY; // Changes that affect the visible region on a display. static constexpr uint64_t VISIBLE_REGION_CHANGES = layer_state_t::GEOMETRY_CHANGES | layer_state_t::HIERARCHY_CHANGES | layer_state_t::eAlphaChanged; Loading services/surfaceflinger/FrontEnd/LayerLifecycleManager.cpp +6 −12 Original line number Diff line number Diff line Loading @@ -41,8 +41,7 @@ void LayerLifecycleManager::addLayers(std::vector<std::unique_ptr<RequestedLayer return; } mGlobalChanges |= RequestedLayerState::Changes::Hierarchy | RequestedLayerState::Changes::RequiresComposition; mGlobalChanges |= RequestedLayerState::Changes::Hierarchy; for (auto& newLayer : newLayers) { RequestedLayerState& layer = *newLayer.get(); auto [it, inserted] = mIdToLayer.try_emplace(layer.id, References{.owner = layer}); Loading Loading @@ -105,8 +104,7 @@ void LayerLifecycleManager::onHandlesDestroyed( if (!layer.canBeDestroyed()) { continue; } layer.changes |= RequestedLayerState::Changes::Destroyed | RequestedLayerState::Changes::RequiresComposition; layer.changes |= RequestedLayerState::Changes::Destroyed; layersToBeDestroyed.emplace_back(layerId); } Loading @@ -114,8 +112,7 @@ void LayerLifecycleManager::onHandlesDestroyed( return; } mGlobalChanges |= RequestedLayerState::Changes::Hierarchy | RequestedLayerState::Changes::RequiresComposition; mGlobalChanges |= RequestedLayerState::Changes::Hierarchy; for (size_t i = 0; i < layersToBeDestroyed.size(); i++) { uint32_t layerId = layersToBeDestroyed[i]; auto it = mIdToLayer.find(layerId); Loading Loading @@ -145,8 +142,7 @@ void LayerLifecycleManager::onHandlesDestroyed( if (linkedLayer->parentId == layer.id) { linkedLayer->parentId = UNASSIGNED_LAYER_ID; if (linkedLayer->canBeDestroyed()) { linkedLayer->changes |= RequestedLayerState::Changes::Destroyed | RequestedLayerState::Changes::RequiresComposition; linkedLayer->changes |= RequestedLayerState::Changes::Destroyed; layersToBeDestroyed.emplace_back(linkedLayer->id); } } Loading Loading @@ -253,8 +249,7 @@ void LayerLifecycleManager::applyTransactions(const std::vector<TransactionState layer_state_t::eDataspaceChanged | layer_state_t::eAlphaChanged; bgColorLayer->changes |= RequestedLayerState::Changes::Content; mChangedLayers.push_back(bgColorLayer); mGlobalChanges |= RequestedLayerState::Changes::Content | RequestedLayerState::Changes::RequiresComposition; mGlobalChanges |= RequestedLayerState::Changes::Content; } } Loading Loading @@ -412,8 +407,7 @@ void LayerLifecycleManager::fixRelativeZLoop(uint32_t relativeRootId) { layer.relativeParentId = unlinkLayer(layer.relativeParentId, layer.id); layer.changes |= RequestedLayerState::Changes::Hierarchy | RequestedLayerState::Changes::RelativeParent; mGlobalChanges |= RequestedLayerState::Changes::Hierarchy | RequestedLayerState::Changes::RequiresComposition; mGlobalChanges |= RequestedLayerState::Changes::Hierarchy; } // Some layers mirror the entire display stack. Since we don't have a single root layer per display Loading services/surfaceflinger/FrontEnd/RequestedLayerState.cpp +2 −6 Original line number Diff line number Diff line Loading @@ -58,8 +58,7 @@ RequestedLayerState::RequestedLayerState(const LayerCreationArgs& args) parentId(args.parentId), layerIdToMirror(args.layerIdToMirror) { layerId = static_cast<int32_t>(args.sequence); changes |= RequestedLayerState::Changes::Created | RequestedLayerState::Changes::RequiresComposition; changes |= RequestedLayerState::Changes::Created; metadata.merge(args.metadata); changes |= RequestedLayerState::Changes::Metadata; handleAlive = true; Loading Loading @@ -249,8 +248,7 @@ void RequestedLayerState::merge(const ResolvedComposerState& resolvedComposerSta if (hadSomethingToDraw != hasSomethingToDraw()) { changes |= RequestedLayerState::Changes::Visibility | RequestedLayerState::Changes::VisibleRegion | RequestedLayerState::Changes::RequiresComposition; RequestedLayerState::Changes::VisibleRegion; } if (clientChanges & layer_state_t::HIERARCHY_CHANGES) changes |= RequestedLayerState::Changes::Hierarchy; Loading @@ -260,8 +258,6 @@ void RequestedLayerState::merge(const ResolvedComposerState& resolvedComposerSta changes |= RequestedLayerState::Changes::Geometry; if (clientChanges & layer_state_t::AFFECTS_CHILDREN) changes |= RequestedLayerState::Changes::AffectsChildren; if (clientChanges & layer_state_t::REQUIRES_COMPOSITION) changes |= RequestedLayerState::Changes::RequiresComposition; if (clientChanges & layer_state_t::INPUT_CHANGES) changes |= RequestedLayerState::Changes::Input; if (clientChanges & layer_state_t::VISIBLE_REGION_CHANGES) Loading services/surfaceflinger/FrontEnd/RequestedLayerState.h +8 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include "TransactionState.h" namespace android::surfaceflinger::frontend { using namespace ftl::flag_operators; // Stores client requested states for a layer. // This struct does not store any other states or states pertaining to Loading Loading @@ -57,8 +58,14 @@ struct RequestedLayerState : layer_state_t { BufferSize = 1u << 18, GameMode = 1u << 19, BufferUsageFlags = 1u << 20, RequiresComposition = 1u << 21, }; static constexpr ftl::Flags<Changes> kMustComposite = Changes::Created | Changes::Destroyed | Changes::Hierarchy | Changes::Geometry | Changes::Content | Changes::Input | Changes::Z | Changes::Mirror | Changes::Parent | Changes::RelativeParent | Changes::Metadata | Changes::Visibility | Changes::VisibleRegion | Changes::Buffer | Changes::SidebandStream | Changes::Animation | Changes::BufferSize | Changes::GameMode | Changes::BufferUsageFlags; static Rect reduce(const Rect& win, const Region& exclude); RequestedLayerState(const LayerCreationArgs&); void merge(const ResolvedComposerState&); Loading services/surfaceflinger/SurfaceFlinger.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -2442,8 +2442,8 @@ bool SurfaceFlinger::updateLayerSnapshots(VsyncId vsyncId, nsecs_t frameTimeNs, } outTransactionsAreEmpty = mLayerLifecycleManager.getGlobalChanges().get() == 0; if (FlagManager::getInstance().vrr_bugfix_24q4()) { mustComposite |= mLayerLifecycleManager.getGlobalChanges().test( frontend::RequestedLayerState::Changes::RequiresComposition); mustComposite |= mLayerLifecycleManager.getGlobalChanges().any( frontend::RequestedLayerState::kMustComposite); } else { mustComposite |= mLayerLifecycleManager.getGlobalChanges().get() != 0; } Loading Loading
libs/gui/include/gui/LayerState.h +0 −3 Original line number Diff line number Diff line Loading @@ -279,9 +279,6 @@ struct layer_state_t { layer_state_t::eDropInputModeChanged | layer_state_t::eTrustedOverlayChanged | layer_state_t::eLayerStackChanged; // Changes requiring a composition pass. static constexpr uint64_t REQUIRES_COMPOSITION = layer_state_t::CONTENT_DIRTY; // Changes that affect the visible region on a display. static constexpr uint64_t VISIBLE_REGION_CHANGES = layer_state_t::GEOMETRY_CHANGES | layer_state_t::HIERARCHY_CHANGES | layer_state_t::eAlphaChanged; Loading
services/surfaceflinger/FrontEnd/LayerLifecycleManager.cpp +6 −12 Original line number Diff line number Diff line Loading @@ -41,8 +41,7 @@ void LayerLifecycleManager::addLayers(std::vector<std::unique_ptr<RequestedLayer return; } mGlobalChanges |= RequestedLayerState::Changes::Hierarchy | RequestedLayerState::Changes::RequiresComposition; mGlobalChanges |= RequestedLayerState::Changes::Hierarchy; for (auto& newLayer : newLayers) { RequestedLayerState& layer = *newLayer.get(); auto [it, inserted] = mIdToLayer.try_emplace(layer.id, References{.owner = layer}); Loading Loading @@ -105,8 +104,7 @@ void LayerLifecycleManager::onHandlesDestroyed( if (!layer.canBeDestroyed()) { continue; } layer.changes |= RequestedLayerState::Changes::Destroyed | RequestedLayerState::Changes::RequiresComposition; layer.changes |= RequestedLayerState::Changes::Destroyed; layersToBeDestroyed.emplace_back(layerId); } Loading @@ -114,8 +112,7 @@ void LayerLifecycleManager::onHandlesDestroyed( return; } mGlobalChanges |= RequestedLayerState::Changes::Hierarchy | RequestedLayerState::Changes::RequiresComposition; mGlobalChanges |= RequestedLayerState::Changes::Hierarchy; for (size_t i = 0; i < layersToBeDestroyed.size(); i++) { uint32_t layerId = layersToBeDestroyed[i]; auto it = mIdToLayer.find(layerId); Loading Loading @@ -145,8 +142,7 @@ void LayerLifecycleManager::onHandlesDestroyed( if (linkedLayer->parentId == layer.id) { linkedLayer->parentId = UNASSIGNED_LAYER_ID; if (linkedLayer->canBeDestroyed()) { linkedLayer->changes |= RequestedLayerState::Changes::Destroyed | RequestedLayerState::Changes::RequiresComposition; linkedLayer->changes |= RequestedLayerState::Changes::Destroyed; layersToBeDestroyed.emplace_back(linkedLayer->id); } } Loading Loading @@ -253,8 +249,7 @@ void LayerLifecycleManager::applyTransactions(const std::vector<TransactionState layer_state_t::eDataspaceChanged | layer_state_t::eAlphaChanged; bgColorLayer->changes |= RequestedLayerState::Changes::Content; mChangedLayers.push_back(bgColorLayer); mGlobalChanges |= RequestedLayerState::Changes::Content | RequestedLayerState::Changes::RequiresComposition; mGlobalChanges |= RequestedLayerState::Changes::Content; } } Loading Loading @@ -412,8 +407,7 @@ void LayerLifecycleManager::fixRelativeZLoop(uint32_t relativeRootId) { layer.relativeParentId = unlinkLayer(layer.relativeParentId, layer.id); layer.changes |= RequestedLayerState::Changes::Hierarchy | RequestedLayerState::Changes::RelativeParent; mGlobalChanges |= RequestedLayerState::Changes::Hierarchy | RequestedLayerState::Changes::RequiresComposition; mGlobalChanges |= RequestedLayerState::Changes::Hierarchy; } // Some layers mirror the entire display stack. Since we don't have a single root layer per display Loading
services/surfaceflinger/FrontEnd/RequestedLayerState.cpp +2 −6 Original line number Diff line number Diff line Loading @@ -58,8 +58,7 @@ RequestedLayerState::RequestedLayerState(const LayerCreationArgs& args) parentId(args.parentId), layerIdToMirror(args.layerIdToMirror) { layerId = static_cast<int32_t>(args.sequence); changes |= RequestedLayerState::Changes::Created | RequestedLayerState::Changes::RequiresComposition; changes |= RequestedLayerState::Changes::Created; metadata.merge(args.metadata); changes |= RequestedLayerState::Changes::Metadata; handleAlive = true; Loading Loading @@ -249,8 +248,7 @@ void RequestedLayerState::merge(const ResolvedComposerState& resolvedComposerSta if (hadSomethingToDraw != hasSomethingToDraw()) { changes |= RequestedLayerState::Changes::Visibility | RequestedLayerState::Changes::VisibleRegion | RequestedLayerState::Changes::RequiresComposition; RequestedLayerState::Changes::VisibleRegion; } if (clientChanges & layer_state_t::HIERARCHY_CHANGES) changes |= RequestedLayerState::Changes::Hierarchy; Loading @@ -260,8 +258,6 @@ void RequestedLayerState::merge(const ResolvedComposerState& resolvedComposerSta changes |= RequestedLayerState::Changes::Geometry; if (clientChanges & layer_state_t::AFFECTS_CHILDREN) changes |= RequestedLayerState::Changes::AffectsChildren; if (clientChanges & layer_state_t::REQUIRES_COMPOSITION) changes |= RequestedLayerState::Changes::RequiresComposition; if (clientChanges & layer_state_t::INPUT_CHANGES) changes |= RequestedLayerState::Changes::Input; if (clientChanges & layer_state_t::VISIBLE_REGION_CHANGES) Loading
services/surfaceflinger/FrontEnd/RequestedLayerState.h +8 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include "TransactionState.h" namespace android::surfaceflinger::frontend { using namespace ftl::flag_operators; // Stores client requested states for a layer. // This struct does not store any other states or states pertaining to Loading Loading @@ -57,8 +58,14 @@ struct RequestedLayerState : layer_state_t { BufferSize = 1u << 18, GameMode = 1u << 19, BufferUsageFlags = 1u << 20, RequiresComposition = 1u << 21, }; static constexpr ftl::Flags<Changes> kMustComposite = Changes::Created | Changes::Destroyed | Changes::Hierarchy | Changes::Geometry | Changes::Content | Changes::Input | Changes::Z | Changes::Mirror | Changes::Parent | Changes::RelativeParent | Changes::Metadata | Changes::Visibility | Changes::VisibleRegion | Changes::Buffer | Changes::SidebandStream | Changes::Animation | Changes::BufferSize | Changes::GameMode | Changes::BufferUsageFlags; static Rect reduce(const Rect& win, const Region& exclude); RequestedLayerState(const LayerCreationArgs&); void merge(const ResolvedComposerState&); Loading
services/surfaceflinger/SurfaceFlinger.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -2442,8 +2442,8 @@ bool SurfaceFlinger::updateLayerSnapshots(VsyncId vsyncId, nsecs_t frameTimeNs, } outTransactionsAreEmpty = mLayerLifecycleManager.getGlobalChanges().get() == 0; if (FlagManager::getInstance().vrr_bugfix_24q4()) { mustComposite |= mLayerLifecycleManager.getGlobalChanges().test( frontend::RequestedLayerState::Changes::RequiresComposition); mustComposite |= mLayerLifecycleManager.getGlobalChanges().any( frontend::RequestedLayerState::kMustComposite); } else { mustComposite |= mLayerLifecycleManager.getGlobalChanges().get() != 0; } Loading