Remove legacy layer metadata
Flag: EXEMPT (removing old flags)
Bug: 330785038
Test: presubmit
Change-Id: I38d8c533ff15956b493a4f567826e178a5e1b232
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index 0eb6cc3..c6d91dc 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -4313,38 +4313,6 @@
}
}
-void Layer::updateMetadataSnapshot(const LayerMetadata& parentMetadata) {
- mSnapshot->layerMetadata = parentMetadata;
- mSnapshot->layerMetadata.merge(mDrawingState.metadata);
- for (const sp<Layer>& child : mDrawingChildren) {
- child->updateMetadataSnapshot(mSnapshot->layerMetadata);
- }
-}
-
-void Layer::updateRelativeMetadataSnapshot(const LayerMetadata& relativeLayerMetadata,
- std::unordered_set<Layer*>& visited) {
- if (visited.find(this) != visited.end()) {
- ALOGW("Cycle containing layer %s detected in z-order relatives", getDebugName());
- return;
- }
- visited.insert(this);
-
- mSnapshot->relativeLayerMetadata = relativeLayerMetadata;
-
- if (mDrawingState.zOrderRelatives.empty()) {
- return;
- }
- LayerMetadata childRelativeLayerMetadata = mSnapshot->relativeLayerMetadata;
- childRelativeLayerMetadata.merge(mSnapshot->layerMetadata);
- for (wp<Layer> weakRelative : mDrawingState.zOrderRelatives) {
- sp<Layer> relative = weakRelative.promote();
- if (!relative) {
- continue;
- }
- relative->updateRelativeMetadataSnapshot(childRelativeLayerMetadata, visited);
- }
-}
-
bool Layer::setTrustedPresentationInfo(TrustedPresentationThresholds const& thresholds,
TrustedPresentationListener const& listener) {
bool hadTrustedPresentationListener = hasTrustedPresentationListener();
diff --git a/services/surfaceflinger/Layer.h b/services/surfaceflinger/Layer.h
index 52f169e..4694151 100644
--- a/services/surfaceflinger/Layer.h
+++ b/services/surfaceflinger/Layer.h
@@ -899,9 +899,6 @@
// CompositionEngine to create a single path for composing layers.
void updateSnapshot(bool updateGeometry);
void updateChildrenSnapshots(bool updateGeometry);
- void updateMetadataSnapshot(const LayerMetadata& parentMetadata);
- void updateRelativeMetadataSnapshot(const LayerMetadata& relativeLayerMetadata,
- std::unordered_set<Layer*>& visited);
sp<Layer> getClonedFrom() const {
return mClonedFrom != nullptr ? mClonedFrom.promote() : nullptr;
}
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index ed2ad7d..936e894 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -2750,10 +2750,6 @@
const bool updateTaskMetadata = mCompositionEngine->getFeatureFlags().test(
compositionengine::Feature::kSnapshotLayerMetadata);
- if (updateTaskMetadata && (mVisibleRegionsDirty || mLayerMetadataSnapshotNeeded)) {
- updateLayerMetadataSnapshot();
- mLayerMetadataSnapshotNeeded = false;
- }
refreshArgs.bufferIdsToUncache = std::move(mBufferIdsToUncache);
@@ -8486,31 +8482,6 @@
return nullptr;
}
-void SurfaceFlinger::updateLayerMetadataSnapshot() {
- LayerMetadata parentMetadata;
- for (const auto& layer : mDrawingState.layersSortedByZ) {
- layer->updateMetadataSnapshot(parentMetadata);
- }
-
- std::unordered_set<Layer*> visited;
- mDrawingState.traverse([&visited](Layer* layer) {
- if (visited.find(layer) != visited.end()) {
- return;
- }
-
- // If the layer isRelativeOf, then either it's relative metadata will be set
- // recursively when updateRelativeMetadataSnapshot is called on its relative parent or
- // it's relative parent has been deleted. Clear the layer's relativeLayerMetadata to ensure
- // that layers with deleted relative parents don't hold stale relativeLayerMetadata.
- if (layer->getDrawingState().isRelativeOf) {
- layer->editLayerSnapshot()->relativeLayerMetadata = {};
- return;
- }
-
- layer->updateRelativeMetadataSnapshot({}, visited);
- });
-}
-
void SurfaceFlinger::moveSnapshotsFromCompositionArgs(
compositionengine::CompositionRefreshArgs& refreshArgs,
const std::vector<std::pair<Layer*, LayerFE*>>& layers) {
diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
index d15fe6f..147187f 100644
--- a/services/surfaceflinger/SurfaceFlinger.h
+++ b/services/surfaceflinger/SurfaceFlinger.h
@@ -768,7 +768,6 @@
REQUIRES(mStateLock, kMainThreadContext);
void doCommitTransactions() REQUIRES(mStateLock);
- void updateLayerMetadataSnapshot();
std::vector<std::pair<Layer*, LayerFE*>> moveSnapshotsToCompositionArgs(
compositionengine::CompositionRefreshArgs& refreshArgs, bool cursorOnly)
REQUIRES(kMainThreadContext);
@@ -1275,9 +1274,6 @@
bool mForceTransactionDisplayChange = false;
bool mUpdateAttachedChoreographer = false;
- // Set if LayerMetadata has changed since the last LayerMetadata snapshot.
- bool mLayerMetadataSnapshotNeeded = false;
-
// TODO(b/238781169) validate these on composition
// Tracks layers that have pending frames which are candidates for being
// latched.
diff --git a/services/surfaceflinger/tests/unittests/Android.bp b/services/surfaceflinger/tests/unittests/Android.bp
index 5669819..98face9 100644
--- a/services/surfaceflinger/tests/unittests/Android.bp
+++ b/services/surfaceflinger/tests/unittests/Android.bp
@@ -116,7 +116,6 @@
"SurfaceFlinger_SetDisplayStateTest.cpp",
"SurfaceFlinger_SetPowerModeInternalTest.cpp",
"SurfaceFlinger_SetupNewDisplayDeviceInternalTest.cpp",
- "SurfaceFlinger_UpdateLayerMetadataSnapshotTest.cpp",
"SchedulerTest.cpp",
"SetFrameRateTest.cpp",
"RefreshRateSelectorTest.cpp",
diff --git a/services/surfaceflinger/tests/unittests/SurfaceFlinger_UpdateLayerMetadataSnapshotTest.cpp b/services/surfaceflinger/tests/unittests/SurfaceFlinger_UpdateLayerMetadataSnapshotTest.cpp
deleted file mode 100644
index 0e5f1ea..0000000
--- a/services/surfaceflinger/tests/unittests/SurfaceFlinger_UpdateLayerMetadataSnapshotTest.cpp
+++ /dev/null
@@ -1,194 +0,0 @@
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-#include <gui/LayerMetadata.h>
-
-#include "TestableSurfaceFlinger.h"
-
-namespace android {
-
-using testing::_;
-using testing::Return;
-
-class SurfaceFlingerUpdateLayerMetadataSnapshotTest : public testing::Test {
-public:
- SurfaceFlingerUpdateLayerMetadataSnapshotTest() { mFlinger.setupMockScheduler(); }
-
-protected:
- sp<Layer> createLayer(const char* name, LayerMetadata& inOutlayerMetadata) {
- LayerCreationArgs args =
- LayerCreationArgs{mFlinger.flinger(), nullptr, name, 0, inOutlayerMetadata};
- inOutlayerMetadata = args.metadata;
- return sp<Layer>::make(args);
- }
-
- TestableSurfaceFlinger mFlinger;
-};
-
-class LayerMetadataBuilder {
-public:
- LayerMetadataBuilder(LayerMetadata layerMetadata = {}) : mLayerMetadata(layerMetadata) {}
-
- LayerMetadataBuilder& setInt32(uint32_t key, int32_t value) {
- mLayerMetadata.setInt32(key, value);
- return *this;
- }
-
- LayerMetadata build() { return mLayerMetadata; }
-
-private:
- LayerMetadata mLayerMetadata;
-};
-
-bool operator==(const LayerMetadata& lhs, const LayerMetadata& rhs) {
- return lhs.mMap == rhs.mMap;
-}
-
-std::ostream& operator<<(std::ostream& stream, const LayerMetadata& layerMetadata) {
- stream << "LayerMetadata{";
- for (auto it = layerMetadata.mMap.cbegin(); it != layerMetadata.mMap.cend(); it++) {
- if (it != layerMetadata.mMap.cbegin()) {
- stream << ", ";
- }
- stream << layerMetadata.itemToString(it->first, ":");
- }
- return stream << "}";
-}
-
-// Test that the snapshot's layer metadata is set.
-TEST_F(SurfaceFlingerUpdateLayerMetadataSnapshotTest, updatesSnapshotMetadata) {
- auto layerMetadata = LayerMetadataBuilder().setInt32(METADATA_TASK_ID, 1).build();
- auto layer = createLayer("layer", layerMetadata);
- mFlinger.mutableDrawingState().layersSortedByZ.add(layer);
-
- mFlinger.updateLayerMetadataSnapshot();
-
- EXPECT_EQ(layer->getLayerSnapshot()->layerMetadata, layerMetadata);
-}
-
-// Test that snapshot layer metadata is set by merging the child's metadata on top of its
-// parent's metadata.
-TEST_F(SurfaceFlingerUpdateLayerMetadataSnapshotTest, mergesSnapshotMetadata) {
- auto layerAMetadata = LayerMetadataBuilder()
- .setInt32(METADATA_OWNER_UID, 1)
- .setInt32(METADATA_TASK_ID, 2)
- .build();
- auto layerA = createLayer("parent", layerAMetadata);
- auto layerBMetadata = LayerMetadataBuilder().setInt32(METADATA_TASK_ID, 3).build();
- auto layerB = createLayer("child", layerBMetadata);
- layerA->addChild(layerB);
- layerA->commitChildList();
- mFlinger.mutableDrawingState().layersSortedByZ.add(layerA);
-
- mFlinger.updateLayerMetadataSnapshot();
-
- EXPECT_EQ(layerA->getLayerSnapshot()->layerMetadata, layerAMetadata);
- auto expectedChildMetadata =
- LayerMetadataBuilder(layerAMetadata).setInt32(METADATA_TASK_ID, 3).build();
- EXPECT_EQ(layerB->getLayerSnapshot()->layerMetadata, expectedChildMetadata);
-}
-
-// Test that snapshot relative layer metadata is set to the parent's layer metadata merged on top of
-// that parent's relative layer metadata.
-TEST_F(SurfaceFlingerUpdateLayerMetadataSnapshotTest, updatesRelativeMetadata) {
- auto layerAMetadata = LayerMetadataBuilder().setInt32(METADATA_TASK_ID, 1).build();
- auto layerA = createLayer("relative-parent", layerAMetadata);
- auto layerAHandle = layerA->getHandle();
- auto layerBMetadata = LayerMetadataBuilder().setInt32(METADATA_TASK_ID, 2).build();
- auto layerB = createLayer("relative-child", layerBMetadata);
- layerB->setRelativeLayer(layerAHandle, 1);
- mFlinger.mutableDrawingState().layersSortedByZ.add(layerA);
- mFlinger.mutableDrawingState().layersSortedByZ.add(layerB);
-
- mFlinger.updateLayerMetadataSnapshot();
-
- EXPECT_EQ(layerA->getLayerSnapshot()->relativeLayerMetadata, LayerMetadata{});
- EXPECT_EQ(layerB->getLayerSnapshot()->relativeLayerMetadata, layerAMetadata);
-}
-
-// Test that snapshot relative layer metadata is set correctly when a layer is interleaved within
-// two other layers.
-//
-// Layer
-// A
-// / \
-// B D
-// /
-// C
-//
-// Z-order Relatives
-// B <- D <- C
-TEST_F(SurfaceFlingerUpdateLayerMetadataSnapshotTest, updatesRelativeMetadataInterleaved) {
- auto layerAMetadata = LayerMetadataBuilder().setInt32(METADATA_OWNER_UID, 1).build();
- auto layerA = createLayer("layer-a", layerAMetadata);
- auto layerBMetadata = LayerMetadataBuilder()
- .setInt32(METADATA_TASK_ID, 2)
- .setInt32(METADATA_OWNER_PID, 3)
- .build();
- auto layerB = createLayer("layer-b", layerBMetadata);
- auto layerBHandle = layerB->getHandle();
- LayerMetadata layerCMetadata;
- auto layerC = createLayer("layer-c", layerCMetadata);
- auto layerDMetadata = LayerMetadataBuilder().setInt32(METADATA_TASK_ID, 4).build();
- auto layerD = createLayer("layer-d", layerDMetadata);
- auto layerDHandle = layerD->getHandle();
- layerB->addChild(layerC);
- layerA->addChild(layerB);
- layerA->addChild(layerD);
- layerC->setRelativeLayer(layerDHandle, 1);
- layerD->setRelativeLayer(layerBHandle, 1);
- layerA->commitChildList();
- mFlinger.mutableDrawingState().layersSortedByZ.add(layerA);
-
- mFlinger.updateLayerMetadataSnapshot();
-
- auto expectedLayerDRelativeMetadata =
- LayerMetadataBuilder()
- // From layer A, parent of relative parent
- .setInt32(METADATA_OWNER_UID, 1)
- // From layer B, relative parent
- .setInt32(METADATA_TASK_ID, 2)
- .setInt32(METADATA_OWNER_PID, 3)
- // added by layer creation args
- .setInt32(gui::METADATA_CALLING_UID,
- layerDMetadata.getInt32(gui::METADATA_CALLING_UID, 0))
- .build();
- EXPECT_EQ(layerD->getLayerSnapshot()->relativeLayerMetadata, expectedLayerDRelativeMetadata);
- auto expectedLayerCRelativeMetadata =
- LayerMetadataBuilder()
- // From layer A, parent of relative parent
- .setInt32(METADATA_OWNER_UID, 1)
- // From layer B, relative parent of relative parent
- .setInt32(METADATA_OWNER_PID, 3)
- // From layer D, relative parent
- .setInt32(METADATA_TASK_ID, 4)
- // added by layer creation args
- .setInt32(gui::METADATA_CALLING_UID,
- layerDMetadata.getInt32(gui::METADATA_CALLING_UID, 0))
- .build();
- EXPECT_EQ(layerC->getLayerSnapshot()->relativeLayerMetadata, expectedLayerCRelativeMetadata);
-}
-
-TEST_F(SurfaceFlingerUpdateLayerMetadataSnapshotTest,
- updatesRelativeMetadataMultipleRelativeChildren) {
- auto layerAMetadata = LayerMetadataBuilder().setInt32(METADATA_OWNER_UID, 1).build();
- auto layerA = createLayer("layer-a", layerAMetadata);
- auto layerAHandle = layerA->getHandle();
- LayerMetadata layerBMetadata;
- auto layerB = createLayer("layer-b", layerBMetadata);
- LayerMetadata layerCMetadata;
- auto layerC = createLayer("layer-c", layerCMetadata);
- layerB->setRelativeLayer(layerAHandle, 1);
- layerC->setRelativeLayer(layerAHandle, 2);
- layerA->commitChildList();
- mFlinger.mutableDrawingState().layersSortedByZ.add(layerA);
- mFlinger.mutableDrawingState().layersSortedByZ.add(layerB);
- mFlinger.mutableDrawingState().layersSortedByZ.add(layerC);
-
- mFlinger.updateLayerMetadataSnapshot();
-
- EXPECT_EQ(layerA->getLayerSnapshot()->relativeLayerMetadata, LayerMetadata{});
- EXPECT_EQ(layerB->getLayerSnapshot()->relativeLayerMetadata, layerAMetadata);
- EXPECT_EQ(layerC->getLayerSnapshot()->relativeLayerMetadata, layerAMetadata);
-}
-
-} // namespace android
diff --git a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
index 5e81b35..a6a2758 100644
--- a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
+++ b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
@@ -584,8 +584,6 @@
return mFlinger->mirrorLayer(args, mirrorFromHandle, outResult);
}
- void updateLayerMetadataSnapshot() { mFlinger->updateLayerMetadataSnapshot(); }
-
void getDynamicDisplayInfoFromToken(const sp<IBinder>& displayToken,
ui::DynamicDisplayInfo* dynamicDisplayInfo) {
mFlinger->getDynamicDisplayInfoFromToken(displayToken, dynamicDisplayInfo);