Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa08a53a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "SF: Fix color transform for composited virtual displays" into rvc-dev...

Merge "SF: Fix color transform for composited virtual displays" into rvc-dev am: fce46c19 am: d0ada146

Change-Id: I5b30406f89007aaa5c60e2b39a47a5757aa05fe6
parents ef1a3cc5 d0ada146
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -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 {
+6 −4
Original line number Diff line number Diff line
@@ -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());
+1 −2
Original line number Diff line number Diff line
@@ -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*));
+3 −10
Original line number Diff line number Diff line
@@ -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,
+2 −2
Original line number Diff line number Diff line
@@ -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.
@@ -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