Merge "Store a wp GraphicBuffer pointer instead of an sp on LayerState" into sc-dev
diff --git a/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/CachedSet.h b/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/CachedSet.h
index fae17d9..056408e 100644
--- a/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/CachedSet.h
+++ b/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/CachedSet.h
@@ -40,7 +40,9 @@
const LayerState* getState() const { return mState; }
const std::string& getName() const { return mState->getName(); }
Rect getDisplayFrame() const { return mState->getDisplayFrame(); }
- const sp<GraphicBuffer>& getBuffer() const { return mState->getBuffer(); }
+ const sp<GraphicBuffer>& getBuffer() const {
+ return mState->getOutputLayer()->getLayerFE().getCompositionState()->buffer;
+ }
int64_t getFramesSinceBufferUpdate() const { return mState->getFramesSinceBufferUpdate(); }
NonBufferHash getHash() const { return mHash; }
std::chrono::steady_clock::time_point getLastUpdate() const { return mLastUpdate; }
diff --git a/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/LayerState.h b/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/LayerState.h
index a3beadc..d005ca3 100644
--- a/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/LayerState.h
+++ b/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/LayerState.h
@@ -32,6 +32,14 @@
struct hash<android::sp<T>> {
size_t operator()(const android::sp<T>& p) { return std::hash<void*>()(p.get()); }
};
+
+template <typename T>
+struct hash<android::wp<T>> {
+ size_t operator()(const android::wp<T>& p) {
+ android::sp<T> promoted = p.promote();
+ return std::hash<void*>()(promoted ? promoted.get() : nullptr);
+ }
+};
} // namespace std
namespace android::compositionengine::impl::planner {
@@ -70,7 +78,7 @@
virtual Flags<LayerStateField> update(const compositionengine::OutputLayer* layer) = 0;
- virtual size_t getHash(Flags<LayerStateField> skipFields) const = 0;
+ virtual size_t getHash() const = 0;
virtual LayerStateField getField() const = 0;
@@ -113,6 +121,10 @@
// Returns this member's field flag if it was changed
Flags<LayerStateField> update(const compositionengine::OutputLayer* layer) override {
T newValue = mReader(layer);
+ return update(newValue);
+ }
+
+ Flags<LayerStateField> update(const T& newValue) {
if (!mEquals(mValue, newValue)) {
mValue = newValue;
mHash = {};
@@ -124,10 +136,7 @@
LayerStateField getField() const override { return FIELD; }
const T& get() const { return mValue; }
- size_t getHash(Flags<LayerStateField> skipFields) const override {
- if (skipFields.test(FIELD)) {
- return 0;
- }
+ size_t getHash() const override {
if (!mHash) {
mHash = std::hash<T>{}(mValue);
}
@@ -175,13 +184,13 @@
Flags<LayerStateField> update(compositionengine::OutputLayer*);
// Computes a hash for this LayerState.
- // The hash is only computed from NonUniqueFields.
- size_t getHash(Flags<LayerStateField> skipFields) const;
+ // The hash is only computed from NonUniqueFields, and excludes GraphicBuffers since they are
+ // not guaranteed to live longer than the LayerState object.
+ size_t getHash() const;
// Returns the bit-set of differing fields between this LayerState and another LayerState.
- // This bit-set is based on NonUniqueFields only
- Flags<LayerStateField> getDifferingFields(const LayerState& other,
- Flags<LayerStateField> skipFields) const;
+ // This bit-set is based on NonUniqueFields only, and excludes GraphicBuffers.
+ Flags<LayerStateField> getDifferingFields(const LayerState& other) const;
compositionengine::OutputLayer* getOutputLayer() const { return mOutputLayer; }
int32_t getId() const { return mId.get(); }
@@ -190,7 +199,6 @@
hardware::graphics::composer::hal::Composition getCompositionType() const {
return mCompositionType.get();
}
- const sp<GraphicBuffer>& getBuffer() const { return mBuffer.get(); }
void incrementFramesSinceBufferUpdate() { ++mFramesSinceBufferUpdate; }
void resetFramesSinceBufferUpdate() { mFramesSinceBufferUpdate = 0; }
@@ -311,10 +319,14 @@
return std::vector<std::string>{base::StringPrintf("%p", p)};
}};
- OutputLayerState<sp<GraphicBuffer>, LayerStateField::Buffer>
+ OutputLayerState<wp<GraphicBuffer>, LayerStateField::Buffer>
mBuffer{[](auto layer) { return layer->getLayerFE().getCompositionState()->buffer; },
- [](const sp<GraphicBuffer>& buffer) {
- return std::vector<std::string>{base::StringPrintf("%p", buffer.get())};
+ [](const wp<GraphicBuffer>& buffer) {
+ sp<GraphicBuffer> promotedBuffer = buffer.promote();
+ return std::vector<std::string>{
+ base::StringPrintf("%p",
+ promotedBuffer ? promotedBuffer.get()
+ : nullptr)};
}};
int64_t mFramesSinceBufferUpdate = 0;
diff --git a/services/surfaceflinger/CompositionEngine/src/planner/CachedSet.cpp b/services/surfaceflinger/CompositionEngine/src/planner/CachedSet.cpp
index b95a3db..f58addb 100644
--- a/services/surfaceflinger/CompositionEngine/src/planner/CachedSet.cpp
+++ b/services/surfaceflinger/CompositionEngine/src/planner/CachedSet.cpp
@@ -51,10 +51,10 @@
}
CachedSet::Layer::Layer(const LayerState* state, std::chrono::steady_clock::time_point lastUpdate)
- : mState(state), mHash(state->getHash(LayerStateField::Buffer)), mLastUpdate(lastUpdate) {}
+ : mState(state), mHash(state->getHash()), mLastUpdate(lastUpdate) {}
CachedSet::CachedSet(const LayerState* layer, std::chrono::steady_clock::time_point lastUpdate)
- : mFingerprint(layer->getHash(LayerStateField::Buffer)), mLastUpdate(lastUpdate) {
+ : mFingerprint(layer->getHash()), mLastUpdate(lastUpdate) {
addLayer(layer, lastUpdate);
}
diff --git a/services/surfaceflinger/CompositionEngine/src/planner/Flattener.cpp b/services/surfaceflinger/CompositionEngine/src/planner/Flattener.cpp
index 439cfb3..aae49de 100644
--- a/services/surfaceflinger/CompositionEngine/src/planner/Flattener.cpp
+++ b/services/surfaceflinger/CompositionEngine/src/planner/Flattener.cpp
@@ -193,9 +193,7 @@
auto currentLayerIter = mLayers.begin();
auto incomingLayerIter = layers.begin();
while (incomingLayerIter != layers.end()) {
- if (mNewCachedSet &&
- mNewCachedSet->getFingerprint() ==
- (*incomingLayerIter)->getHash(LayerStateField::Buffer)) {
+ if (mNewCachedSet && mNewCachedSet->getFingerprint() == (*incomingLayerIter)->getHash()) {
if (mNewCachedSet->hasBufferUpdate()) {
ALOGV("[%s] Dropping new cached set", __func__);
++mInvalidatedCachedSetAges[0];
diff --git a/services/surfaceflinger/CompositionEngine/src/planner/LayerState.cpp b/services/surfaceflinger/CompositionEngine/src/planner/LayerState.cpp
index 222b2be..e976c9b 100644
--- a/services/surfaceflinger/CompositionEngine/src/planner/LayerState.cpp
+++ b/services/surfaceflinger/CompositionEngine/src/planner/LayerState.cpp
@@ -58,24 +58,24 @@
return differences;
}
-size_t LayerState::getHash(
- Flags<LayerStateField> skipFields = static_cast<LayerStateField>(0)) const {
+size_t LayerState::getHash() const {
size_t hash = 0;
for (const StateInterface* field : getNonUniqueFields()) {
- android::hashCombineSingleHashed(hash, field->getHash(skipFields));
+ if (field->getField() == LayerStateField::Buffer) {
+ continue;
+ }
+ android::hashCombineSingleHashed(hash, field->getHash());
}
return hash;
}
-Flags<LayerStateField> LayerState::getDifferingFields(
- const LayerState& other,
- Flags<LayerStateField> skipFields = static_cast<LayerStateField>(0)) const {
+Flags<LayerStateField> LayerState::getDifferingFields(const LayerState& other) const {
Flags<LayerStateField> differences;
auto myFields = getNonUniqueFields();
auto otherFields = other.getNonUniqueFields();
for (size_t i = 0; i < myFields.size(); ++i) {
- if (skipFields.test(myFields[i]->getField())) {
+ if (myFields[i]->getField() == LayerStateField::Buffer) {
continue;
}
@@ -169,7 +169,7 @@
NonBufferHash getNonBufferHash(const std::vector<const LayerState*>& layers) {
size_t hash = 0;
for (const auto layer : layers) {
- android::hashCombineSingleHashed(hash, layer->getHash(LayerStateField::Buffer));
+ android::hashCombineSingleHashed(hash, layer->getHash());
}
return hash;
diff --git a/services/surfaceflinger/CompositionEngine/src/planner/Predictor.cpp b/services/surfaceflinger/CompositionEngine/src/planner/Predictor.cpp
index 07920b8..8226ef7 100644
--- a/services/surfaceflinger/CompositionEngine/src/planner/Predictor.cpp
+++ b/services/surfaceflinger/CompositionEngine/src/planner/Predictor.cpp
@@ -33,8 +33,7 @@
std::optional<ApproximateMatch> approximateMatch = {};
for (size_t i = 0; i < mLayers.size(); ++i) {
// Skip identical layers
- if (mLayers[i].getHash(LayerStateField::Buffer) ==
- other[i]->getHash(LayerStateField::Buffer)) {
+ if (mLayers[i].getHash() == other[i]->getHash()) {
continue;
}
@@ -56,8 +55,7 @@
return std::nullopt;
}
- Flags<LayerStateField> differingFields =
- mLayers[i].getDifferingFields(*other[i], LayerStateField::Buffer);
+ Flags<LayerStateField> differingFields = mLayers[i].getDifferingFields(*other[i]);
// If we don't find an approximate match on this layer, then the LayerStacks differ
// by too much, so return nothing
diff --git a/services/surfaceflinger/CompositionEngine/tests/planner/LayerStateTest.cpp b/services/surfaceflinger/CompositionEngine/tests/planner/LayerStateTest.cpp
index 8f235ab..d5a7234 100644
--- a/services/surfaceflinger/CompositionEngine/tests/planner/LayerStateTest.cpp
+++ b/services/surfaceflinger/CompositionEngine/tests/planner/LayerStateTest.cpp
@@ -129,20 +129,13 @@
EXPECT_NE(mLayerState->getId(), otherLayerState->getId());
// Id is a unique field, so it's not computed in the hash for a layer state.
- EXPECT_EQ(mLayerState->getHash(LayerStateField::None),
- otherLayerState->getHash(LayerStateField::None));
- EXPECT_EQ(mLayerState->getHash(LayerStateField::Id),
- otherLayerState->getHash(LayerStateField::Id));
+ EXPECT_EQ(mLayerState->getHash(), otherLayerState->getHash());
// Similarly, Id cannot be included in differing fields.
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::None));
+ mLayerState->getDifferingFields(*otherLayerState));
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::Id));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::Id));
+ otherLayerState->getDifferingFields(*mLayerState));
EXPECT_FALSE(mLayerState->compare(*otherLayerState));
EXPECT_FALSE(otherLayerState->compare(*mLayerState));
@@ -188,20 +181,13 @@
EXPECT_NE(mLayerState->getName(), otherLayerState->getName());
// Name is a unique field, so it's not computed in the hash for a layer state.
- EXPECT_EQ(mLayerState->getHash(LayerStateField::None),
- otherLayerState->getHash(LayerStateField::None));
- EXPECT_EQ(mLayerState->getHash(LayerStateField::Name),
- otherLayerState->getHash(LayerStateField::Name));
+ EXPECT_EQ(mLayerState->getHash(), otherLayerState->getHash());
// Similarly, Name cannot be included in differing fields.
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::None));
+ mLayerState->getDifferingFields(*otherLayerState));
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::Name));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::Name));
+ otherLayerState->getDifferingFields(*mLayerState));
EXPECT_FALSE(mLayerState->compare(*otherLayerState));
EXPECT_FALSE(otherLayerState->compare(*mLayerState));
@@ -253,19 +239,12 @@
EXPECT_NE(mLayerState->getDisplayFrame(), otherLayerState->getDisplayFrame());
- EXPECT_NE(mLayerState->getHash(LayerStateField::None),
- otherLayerState->getHash(LayerStateField::None));
- EXPECT_EQ(mLayerState->getHash(LayerStateField::DisplayFrame),
- otherLayerState->getHash(LayerStateField::DisplayFrame));
+ EXPECT_NE(mLayerState->getHash(), otherLayerState->getHash());
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::DisplayFrame),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::DisplayFrame));
+ mLayerState->getDifferingFields(*otherLayerState));
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::DisplayFrame),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::DisplayFrame));
+ otherLayerState->getDifferingFields(*mLayerState));
EXPECT_TRUE(mLayerState->compare(*otherLayerState));
EXPECT_TRUE(otherLayerState->compare(*mLayerState));
@@ -337,34 +316,17 @@
EXPECT_NE(mLayerState->getCompositionType(), otherLayerState->getCompositionType());
- EXPECT_NE(mLayerState->getHash(LayerStateField::None),
- otherLayerState->getHash(LayerStateField::None));
- EXPECT_EQ(mLayerState->getHash(LayerStateField::CompositionType),
- otherLayerState->getHash(LayerStateField::CompositionType));
+ EXPECT_NE(mLayerState->getHash(), otherLayerState->getHash());
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::CompositionType),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::CompositionType));
+ mLayerState->getDifferingFields(*otherLayerState));
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::CompositionType),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::CompositionType));
+ otherLayerState->getDifferingFields(*mLayerState));
EXPECT_TRUE(mLayerState->compare(*otherLayerState));
EXPECT_TRUE(otherLayerState->compare(*mLayerState));
}
-TEST_F(LayerStateTest, getBuffer) {
- OutputLayerCompositionState outputLayerCompositionState;
- LayerFECompositionState layerFECompositionState;
- layerFECompositionState.buffer = new GraphicBuffer();
- setupMocksForLayer(mOutputLayer, mLayerFE, outputLayerCompositionState,
- layerFECompositionState);
- mLayerState = std::make_unique<LayerState>(&mOutputLayer);
- EXPECT_EQ(layerFECompositionState.buffer, mLayerState->getBuffer());
-}
-
TEST_F(LayerStateTest, updateBuffer) {
OutputLayerCompositionState outputLayerCompositionState;
LayerFECompositionState layerFECompositionState;
@@ -380,7 +342,6 @@
setupMocksForLayer(newOutputLayer, newLayerFE, outputLayerCompositionState,
layerFECompositionStateTwo);
Flags<LayerStateField> updates = mLayerState->update(&newOutputLayer);
- EXPECT_EQ(layerFECompositionStateTwo.buffer, mLayerState->getBuffer());
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::Buffer), updates);
}
@@ -399,21 +360,12 @@
layerFECompositionStateTwo);
auto otherLayerState = std::make_unique<LayerState>(&newOutputLayer);
- EXPECT_NE(mLayerState->getBuffer(), otherLayerState->getBuffer());
-
- EXPECT_NE(mLayerState->getHash(LayerStateField::None),
- otherLayerState->getHash(LayerStateField::None));
- EXPECT_EQ(mLayerState->getHash(LayerStateField::Buffer),
- otherLayerState->getHash(LayerStateField::Buffer));
-
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::Buffer),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::None));
+ // Buffers are not included in differing fields or in hashes.
+ EXPECT_EQ(mLayerState->getHash(), otherLayerState->getHash());
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::Buffer));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::Buffer),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::None));
+ mLayerState->getDifferingFields(*otherLayerState));
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::Buffer));
+ otherLayerState->getDifferingFields(*mLayerState));
// Buffers are explicitly excluded from comparison
EXPECT_FALSE(mLayerState->compare(*otherLayerState));
@@ -453,19 +405,12 @@
layerFECompositionState);
auto otherLayerState = std::make_unique<LayerState>(&newOutputLayer);
- EXPECT_NE(mLayerState->getHash(LayerStateField::None),
- otherLayerState->getHash(LayerStateField::None));
- EXPECT_EQ(mLayerState->getHash(LayerStateField::SourceCrop),
- otherLayerState->getHash(LayerStateField::SourceCrop));
+ EXPECT_NE(mLayerState->getHash(), otherLayerState->getHash());
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::SourceCrop),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::SourceCrop));
+ mLayerState->getDifferingFields(*otherLayerState));
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::SourceCrop),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::SourceCrop));
+ otherLayerState->getDifferingFields(*mLayerState));
EXPECT_TRUE(mLayerState->compare(*otherLayerState));
EXPECT_TRUE(otherLayerState->compare(*mLayerState));
@@ -504,19 +449,12 @@
layerFECompositionState);
auto otherLayerState = std::make_unique<LayerState>(&newOutputLayer);
- EXPECT_NE(mLayerState->getHash(LayerStateField::None),
- otherLayerState->getHash(LayerStateField::None));
- EXPECT_EQ(mLayerState->getHash(LayerStateField::ZOrder),
- otherLayerState->getHash(LayerStateField::ZOrder));
+ EXPECT_NE(mLayerState->getHash(), otherLayerState->getHash());
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::ZOrder),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::ZOrder));
+ mLayerState->getDifferingFields(*otherLayerState));
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::ZOrder),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::ZOrder));
+ otherLayerState->getDifferingFields(*mLayerState));
EXPECT_TRUE(mLayerState->compare(*otherLayerState));
EXPECT_TRUE(otherLayerState->compare(*mLayerState));
@@ -555,19 +493,12 @@
layerFECompositionState);
auto otherLayerState = std::make_unique<LayerState>(&newOutputLayer);
- EXPECT_NE(mLayerState->getHash(LayerStateField::None),
- otherLayerState->getHash(LayerStateField::None));
- EXPECT_EQ(mLayerState->getHash(LayerStateField::BufferTransform),
- otherLayerState->getHash(LayerStateField::BufferTransform));
+ EXPECT_NE(mLayerState->getHash(), otherLayerState->getHash());
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::BufferTransform),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::BufferTransform));
+ mLayerState->getDifferingFields(*otherLayerState));
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::BufferTransform),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::BufferTransform));
+ otherLayerState->getDifferingFields(*mLayerState));
EXPECT_TRUE(mLayerState->compare(*otherLayerState));
EXPECT_TRUE(otherLayerState->compare(*mLayerState));
@@ -606,19 +537,12 @@
layerFECompositionStateTwo);
auto otherLayerState = std::make_unique<LayerState>(&newOutputLayer);
- EXPECT_NE(mLayerState->getHash(LayerStateField::None),
- otherLayerState->getHash(LayerStateField::None));
- EXPECT_EQ(mLayerState->getHash(LayerStateField::BlendMode),
- otherLayerState->getHash(LayerStateField::BlendMode));
+ EXPECT_NE(mLayerState->getHash(), otherLayerState->getHash());
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::BlendMode),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::BlendMode));
+ mLayerState->getDifferingFields(*otherLayerState));
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::BlendMode),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::BlendMode));
+ otherLayerState->getDifferingFields(*mLayerState));
EXPECT_TRUE(mLayerState->compare(*otherLayerState));
EXPECT_TRUE(otherLayerState->compare(*mLayerState));
@@ -657,19 +581,12 @@
layerFECompositionStateTwo);
auto otherLayerState = std::make_unique<LayerState>(&newOutputLayer);
- EXPECT_NE(mLayerState->getHash(LayerStateField::None),
- otherLayerState->getHash(LayerStateField::None));
- EXPECT_EQ(mLayerState->getHash(LayerStateField::Alpha),
- otherLayerState->getHash(LayerStateField::Alpha));
+ EXPECT_NE(mLayerState->getHash(), otherLayerState->getHash());
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::Alpha),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::Alpha));
+ mLayerState->getDifferingFields(*otherLayerState));
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::Alpha),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::Alpha));
+ otherLayerState->getDifferingFields(*mLayerState));
EXPECT_TRUE(mLayerState->compare(*otherLayerState));
EXPECT_TRUE(otherLayerState->compare(*mLayerState));
@@ -708,19 +625,12 @@
layerFECompositionState);
auto otherLayerState = std::make_unique<LayerState>(&newOutputLayer);
- EXPECT_NE(mLayerState->getHash(LayerStateField::None),
- otherLayerState->getHash(LayerStateField::None));
- EXPECT_EQ(mLayerState->getHash(LayerStateField::VisibleRegion),
- otherLayerState->getHash(LayerStateField::VisibleRegion));
+ EXPECT_NE(mLayerState->getHash(), otherLayerState->getHash());
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::VisibleRegion),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::VisibleRegion));
+ mLayerState->getDifferingFields(*otherLayerState));
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::VisibleRegion),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::VisibleRegion));
+ otherLayerState->getDifferingFields(*mLayerState));
EXPECT_TRUE(mLayerState->compare(*otherLayerState));
EXPECT_TRUE(otherLayerState->compare(*mLayerState));
@@ -759,19 +669,12 @@
layerFECompositionState);
auto otherLayerState = std::make_unique<LayerState>(&newOutputLayer);
- EXPECT_NE(mLayerState->getHash(LayerStateField::None),
- otherLayerState->getHash(LayerStateField::None));
- EXPECT_EQ(mLayerState->getHash(LayerStateField::Dataspace),
- otherLayerState->getHash(LayerStateField::Dataspace));
+ EXPECT_NE(mLayerState->getHash(), otherLayerState->getHash());
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::Dataspace),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::Dataspace));
+ mLayerState->getDifferingFields(*otherLayerState));
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::Dataspace),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::Dataspace));
+ otherLayerState->getDifferingFields(*mLayerState));
EXPECT_TRUE(mLayerState->compare(*otherLayerState));
EXPECT_TRUE(otherLayerState->compare(*mLayerState));
@@ -814,19 +717,12 @@
layerFECompositionStateTwo);
auto otherLayerState = std::make_unique<LayerState>(&newOutputLayer);
- EXPECT_NE(mLayerState->getHash(LayerStateField::None),
- otherLayerState->getHash(LayerStateField::None));
- EXPECT_EQ(mLayerState->getHash(LayerStateField::ColorTransform),
- otherLayerState->getHash(LayerStateField::ColorTransform));
+ EXPECT_NE(mLayerState->getHash(), otherLayerState->getHash());
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::ColorTransform),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::ColorTransform));
+ mLayerState->getDifferingFields(*otherLayerState));
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::ColorTransform),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::ColorTransform));
+ otherLayerState->getDifferingFields(*mLayerState));
EXPECT_TRUE(mLayerState->compare(*otherLayerState));
EXPECT_TRUE(otherLayerState->compare(*mLayerState));
@@ -865,19 +761,12 @@
layerFECompositionStateTwo);
auto otherLayerState = std::make_unique<LayerState>(&newOutputLayer);
- EXPECT_NE(mLayerState->getHash(LayerStateField::None),
- otherLayerState->getHash(LayerStateField::None));
- EXPECT_EQ(mLayerState->getHash(LayerStateField::SidebandStream),
- otherLayerState->getHash(LayerStateField::SidebandStream));
+ EXPECT_NE(mLayerState->getHash(), otherLayerState->getHash());
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::SidebandStream),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::SidebandStream));
+ mLayerState->getDifferingFields(*otherLayerState));
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::SidebandStream),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::SidebandStream));
+ otherLayerState->getDifferingFields(*mLayerState));
EXPECT_TRUE(mLayerState->compare(*otherLayerState));
EXPECT_TRUE(otherLayerState->compare(*mLayerState));
@@ -916,19 +805,12 @@
layerFECompositionStateTwo);
auto otherLayerState = std::make_unique<LayerState>(&newOutputLayer);
- EXPECT_NE(mLayerState->getHash(LayerStateField::None),
- otherLayerState->getHash(LayerStateField::None));
- EXPECT_EQ(mLayerState->getHash(LayerStateField::SolidColor),
- otherLayerState->getHash(LayerStateField::SolidColor));
+ EXPECT_NE(mLayerState->getHash(), otherLayerState->getHash());
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::SolidColor),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- mLayerState->getDifferingFields(*otherLayerState, LayerStateField::SolidColor));
+ mLayerState->getDifferingFields(*otherLayerState));
EXPECT_EQ(Flags<LayerStateField>(LayerStateField::SolidColor),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::None));
- EXPECT_EQ(Flags<LayerStateField>(LayerStateField::None),
- otherLayerState->getDifferingFields(*mLayerState, LayerStateField::SolidColor));
+ otherLayerState->getDifferingFields(*mLayerState));
EXPECT_TRUE(mLayerState->compare(*otherLayerState));
EXPECT_TRUE(otherLayerState->compare(*mLayerState));