Loading services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -844,10 +844,16 @@ void OutputLayer::applyDeviceLayerRequest(hal::LayerRequest request) { bool OutputLayer::needsFiltering() const { const auto& state = getState(); const auto& displayFrame = state.displayFrame; const auto& sourceCrop = state.sourceCrop; return sourceCrop.getHeight() != displayFrame.getHeight() || sourceCrop.getWidth() != displayFrame.getWidth(); auto displayFrameWidth = static_cast<float>(state.displayFrame.getWidth()); auto displayFrameHeight = static_cast<float>(state.displayFrame.getHeight()); if (state.bufferTransform & HAL_TRANSFORM_ROT_90) { std::swap(displayFrameWidth, displayFrameHeight); } return sourceCrop.getHeight() != displayFrameHeight || sourceCrop.getWidth() != displayFrameWidth; } std::optional<LayerFE::LayerSettings> OutputLayer::getOverrideCompositionSettings() const { Loading services/surfaceflinger/CompositionEngine/tests/OutputLayerTest.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -1614,5 +1614,20 @@ TEST_F(OutputLayerTest, needsFilteringReturnsTrueIfDisplaySizeDifferentFromSourc EXPECT_TRUE(mOutputLayer.needsFiltering()); } TEST_F(OutputLayerTest, needsFilteringReturnsFalseIfRotatedDisplaySizeSameAsSourceSize) { mOutputLayer.editState().displayFrame = Rect(100, 100, 300, 200); mOutputLayer.editState().sourceCrop = FloatRect{0.f, 0.f, 100.f, 200.f}; mOutputLayer.editState().bufferTransform = Hwc2::Transform::ROT_90; EXPECT_FALSE(mOutputLayer.needsFiltering()); } TEST_F(OutputLayerTest, needsFilteringReturnsTrueIfRotatedDisplaySizeDiffersFromSourceSize) { mOutputLayer.editState().displayFrame = Rect(100, 100, 300, 200); mOutputLayer.editState().sourceCrop = FloatRect{0.f, 0.f, 100.f, 200.f}; EXPECT_TRUE(mOutputLayer.needsFiltering()); } } // namespace } // namespace android::compositionengine Loading
services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -844,10 +844,16 @@ void OutputLayer::applyDeviceLayerRequest(hal::LayerRequest request) { bool OutputLayer::needsFiltering() const { const auto& state = getState(); const auto& displayFrame = state.displayFrame; const auto& sourceCrop = state.sourceCrop; return sourceCrop.getHeight() != displayFrame.getHeight() || sourceCrop.getWidth() != displayFrame.getWidth(); auto displayFrameWidth = static_cast<float>(state.displayFrame.getWidth()); auto displayFrameHeight = static_cast<float>(state.displayFrame.getHeight()); if (state.bufferTransform & HAL_TRANSFORM_ROT_90) { std::swap(displayFrameWidth, displayFrameHeight); } return sourceCrop.getHeight() != displayFrameHeight || sourceCrop.getWidth() != displayFrameWidth; } std::optional<LayerFE::LayerSettings> OutputLayer::getOverrideCompositionSettings() const { Loading
services/surfaceflinger/CompositionEngine/tests/OutputLayerTest.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -1614,5 +1614,20 @@ TEST_F(OutputLayerTest, needsFilteringReturnsTrueIfDisplaySizeDifferentFromSourc EXPECT_TRUE(mOutputLayer.needsFiltering()); } TEST_F(OutputLayerTest, needsFilteringReturnsFalseIfRotatedDisplaySizeSameAsSourceSize) { mOutputLayer.editState().displayFrame = Rect(100, 100, 300, 200); mOutputLayer.editState().sourceCrop = FloatRect{0.f, 0.f, 100.f, 200.f}; mOutputLayer.editState().bufferTransform = Hwc2::Transform::ROT_90; EXPECT_FALSE(mOutputLayer.needsFiltering()); } TEST_F(OutputLayerTest, needsFilteringReturnsTrueIfRotatedDisplaySizeDiffersFromSourceSize) { mOutputLayer.editState().displayFrame = Rect(100, 100, 300, 200); mOutputLayer.editState().sourceCrop = FloatRect{0.f, 0.f, 100.f, 200.f}; EXPECT_TRUE(mOutputLayer.needsFiltering()); } } // namespace } // namespace android::compositionengine