Loading services/surfaceflinger/CompositionEngine/src/Display.cpp +3 −6 Original line number Diff line number Diff line Loading @@ -268,12 +268,9 @@ void Display::chooseCompositionStrategy() { } bool Display::getSkipColorTransform() const { if (!mId) { return false; } auto& hwc = getCompositionEngine().getHwComposer(); return hwc.hasDisplayCapability(*mId, HWC2::DisplayCapability::SkipClientColorTransform); const auto& hwc = getCompositionEngine().getHwComposer(); return mId ? hwc.hasDisplayCapability(*mId, HWC2::DisplayCapability::SkipClientColorTransform) : hwc.hasCapability(HWC2::Capability::SkipClientColorTransform); } bool Display::anyLayersRequireClientComposition() const { Loading services/surfaceflinger/CompositionEngine/tests/DisplayTest.cpp +6 −4 Original line number Diff line number Diff line Loading @@ -681,15 +681,17 @@ TEST_F(DisplayChooseCompositionStrategyTest, normalOperationWithChanges) { using DisplayGetSkipColorTransformTest = DisplayWithLayersTestCommon; TEST_F(DisplayGetSkipColorTransformTest, doesNothingIfNonHwcDisplay) { TEST_F(DisplayGetSkipColorTransformTest, checksCapabilityIfNonHwcDisplay) { EXPECT_CALL(mHwComposer, hasCapability(HWC2::Capability::SkipClientColorTransform)) .WillOnce(Return(true)); auto args = getDisplayCreationArgsForNonHWCVirtualDisplay(); auto nonHwcDisplay{impl::createDisplay(mCompositionEngine, args)}; EXPECT_FALSE(nonHwcDisplay->getSkipColorTransform()); EXPECT_TRUE(nonHwcDisplay->getSkipColorTransform()); } TEST_F(DisplayGetSkipColorTransformTest, checksHwcCapability) { TEST_F(DisplayGetSkipColorTransformTest, checksDisplayCapability) { EXPECT_CALL(mHwComposer, hasDisplayCapability(std::make_optional(DEFAULT_DISPLAY_ID), hasDisplayCapability(DEFAULT_DISPLAY_ID, HWC2::DisplayCapability::SkipClientColorTransform)) .WillOnce(Return(true)); EXPECT_TRUE(mDisplay->getSkipColorTransform()); Loading services/surfaceflinger/CompositionEngine/tests/MockHWComposer.h +1 −2 Original line number Diff line number Diff line Loading @@ -40,8 +40,7 @@ public: MOCK_CONST_METHOD3(getDisplayIdentificationData, bool(hwc2_display_t, uint8_t*, DisplayIdentificationData*)); MOCK_CONST_METHOD1(hasCapability, bool(HWC2::Capability)); MOCK_CONST_METHOD2(hasDisplayCapability, bool(const std::optional<DisplayId>&, HWC2::DisplayCapability)); MOCK_CONST_METHOD2(hasDisplayCapability, bool(DisplayId, HWC2::DisplayCapability)); MOCK_METHOD3(allocateVirtualDisplay, std::optional<DisplayId>(uint32_t, uint32_t, ui::PixelFormat*)); Loading services/surfaceflinger/DisplayHardware/HWComposer.cpp +3 −10 Original line number Diff line number Diff line Loading @@ -190,17 +190,10 @@ bool HWComposer::hasCapability(HWC2::Capability capability) const { return mCapabilities.count(capability) > 0; } bool HWComposer::hasDisplayCapability(const std::optional<DisplayId>& displayId, bool HWComposer::hasDisplayCapability(DisplayId displayId, HWC2::DisplayCapability capability) const { if (!displayId) { // Checkout global capabilities for displays without a corresponding HWC display. if (capability == HWC2::DisplayCapability::SkipClientColorTransform) { return hasCapability(HWC2::Capability::SkipClientColorTransform); } return false; } RETURN_IF_INVALID_DISPLAY(*displayId, false); return mDisplayData.at(*displayId).hwcDisplay->getCapabilities().count(capability) > 0; RETURN_IF_INVALID_DISPLAY(displayId, false); return mDisplayData.at(displayId).hwcDisplay->getCapabilities().count(capability) > 0; } std::optional<DisplayIdentificationInfo> HWComposer::onHotplug(hwc2_display_t hwcDisplayId, Loading services/surfaceflinger/DisplayHardware/HWComposer.h +2 −2 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ public: DisplayIdentificationData* outData) const = 0; virtual bool hasCapability(HWC2::Capability capability) const = 0; virtual bool hasDisplayCapability(const std::optional<DisplayId>& displayId, virtual bool hasDisplayCapability(DisplayId displayId, HWC2::DisplayCapability capability) const = 0; // Attempts to allocate a virtual display and returns its ID if created on the HWC device. Loading Loading @@ -234,7 +234,7 @@ public: DisplayIdentificationData* outData) const override; bool hasCapability(HWC2::Capability capability) const override; bool hasDisplayCapability(const std::optional<DisplayId>& displayId, bool hasDisplayCapability(DisplayId displayId, HWC2::DisplayCapability capability) const override; // Attempts to allocate a virtual display and returns its ID if created on the HWC device. Loading Loading
services/surfaceflinger/CompositionEngine/src/Display.cpp +3 −6 Original line number Diff line number Diff line Loading @@ -268,12 +268,9 @@ void Display::chooseCompositionStrategy() { } bool Display::getSkipColorTransform() const { if (!mId) { return false; } auto& hwc = getCompositionEngine().getHwComposer(); return hwc.hasDisplayCapability(*mId, HWC2::DisplayCapability::SkipClientColorTransform); const auto& hwc = getCompositionEngine().getHwComposer(); return mId ? hwc.hasDisplayCapability(*mId, HWC2::DisplayCapability::SkipClientColorTransform) : hwc.hasCapability(HWC2::Capability::SkipClientColorTransform); } bool Display::anyLayersRequireClientComposition() const { Loading
services/surfaceflinger/CompositionEngine/tests/DisplayTest.cpp +6 −4 Original line number Diff line number Diff line Loading @@ -681,15 +681,17 @@ TEST_F(DisplayChooseCompositionStrategyTest, normalOperationWithChanges) { using DisplayGetSkipColorTransformTest = DisplayWithLayersTestCommon; TEST_F(DisplayGetSkipColorTransformTest, doesNothingIfNonHwcDisplay) { TEST_F(DisplayGetSkipColorTransformTest, checksCapabilityIfNonHwcDisplay) { EXPECT_CALL(mHwComposer, hasCapability(HWC2::Capability::SkipClientColorTransform)) .WillOnce(Return(true)); auto args = getDisplayCreationArgsForNonHWCVirtualDisplay(); auto nonHwcDisplay{impl::createDisplay(mCompositionEngine, args)}; EXPECT_FALSE(nonHwcDisplay->getSkipColorTransform()); EXPECT_TRUE(nonHwcDisplay->getSkipColorTransform()); } TEST_F(DisplayGetSkipColorTransformTest, checksHwcCapability) { TEST_F(DisplayGetSkipColorTransformTest, checksDisplayCapability) { EXPECT_CALL(mHwComposer, hasDisplayCapability(std::make_optional(DEFAULT_DISPLAY_ID), hasDisplayCapability(DEFAULT_DISPLAY_ID, HWC2::DisplayCapability::SkipClientColorTransform)) .WillOnce(Return(true)); EXPECT_TRUE(mDisplay->getSkipColorTransform()); Loading
services/surfaceflinger/CompositionEngine/tests/MockHWComposer.h +1 −2 Original line number Diff line number Diff line Loading @@ -40,8 +40,7 @@ public: MOCK_CONST_METHOD3(getDisplayIdentificationData, bool(hwc2_display_t, uint8_t*, DisplayIdentificationData*)); MOCK_CONST_METHOD1(hasCapability, bool(HWC2::Capability)); MOCK_CONST_METHOD2(hasDisplayCapability, bool(const std::optional<DisplayId>&, HWC2::DisplayCapability)); MOCK_CONST_METHOD2(hasDisplayCapability, bool(DisplayId, HWC2::DisplayCapability)); MOCK_METHOD3(allocateVirtualDisplay, std::optional<DisplayId>(uint32_t, uint32_t, ui::PixelFormat*)); Loading
services/surfaceflinger/DisplayHardware/HWComposer.cpp +3 −10 Original line number Diff line number Diff line Loading @@ -190,17 +190,10 @@ bool HWComposer::hasCapability(HWC2::Capability capability) const { return mCapabilities.count(capability) > 0; } bool HWComposer::hasDisplayCapability(const std::optional<DisplayId>& displayId, bool HWComposer::hasDisplayCapability(DisplayId displayId, HWC2::DisplayCapability capability) const { if (!displayId) { // Checkout global capabilities for displays without a corresponding HWC display. if (capability == HWC2::DisplayCapability::SkipClientColorTransform) { return hasCapability(HWC2::Capability::SkipClientColorTransform); } return false; } RETURN_IF_INVALID_DISPLAY(*displayId, false); return mDisplayData.at(*displayId).hwcDisplay->getCapabilities().count(capability) > 0; RETURN_IF_INVALID_DISPLAY(displayId, false); return mDisplayData.at(displayId).hwcDisplay->getCapabilities().count(capability) > 0; } std::optional<DisplayIdentificationInfo> HWComposer::onHotplug(hwc2_display_t hwcDisplayId, Loading
services/surfaceflinger/DisplayHardware/HWComposer.h +2 −2 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ public: DisplayIdentificationData* outData) const = 0; virtual bool hasCapability(HWC2::Capability capability) const = 0; virtual bool hasDisplayCapability(const std::optional<DisplayId>& displayId, virtual bool hasDisplayCapability(DisplayId displayId, HWC2::DisplayCapability capability) const = 0; // Attempts to allocate a virtual display and returns its ID if created on the HWC device. Loading Loading @@ -234,7 +234,7 @@ public: DisplayIdentificationData* outData) const override; bool hasCapability(HWC2::Capability capability) const override; bool hasDisplayCapability(const std::optional<DisplayId>& displayId, bool hasDisplayCapability(DisplayId displayId, HWC2::DisplayCapability capability) const override; // Attempts to allocate a virtual display and returns its ID if created on the HWC device. Loading