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

Commit 4234253e authored by Peiyong Lin's avatar Peiyong Lin Committed by Android (Google) Code Review
Browse files

Merge "Avoid setting color space agnostic when in HDR mode."

parents ddd82415 34ea5b96
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -304,7 +304,9 @@ void BufferLayer::setPerFrameData(const sp<const DisplayDevice>& displayDevice,
        setCompositionType(displayDevice, Hwc2::IComposerClient::Composition::DEVICE);
    }

    ui::Dataspace dataspace = isColorSpaceAgnostic() ? targetDataspace : mCurrentDataSpace;
    ui::Dataspace dataspace = isColorSpaceAgnostic() && targetDataspace != ui::Dataspace::UNKNOWN
            ? targetDataspace
            : mCurrentDataSpace;
    error = hwcLayer->setDataspace(dataspace);
    if (error != HWC2::Error::None) {
        ALOGE("[%s] Failed to set dataspace %d: %s (%d)", mName.string(), dataspace,
+3 −1
Original line number Diff line number Diff line
@@ -114,7 +114,9 @@ void ColorLayer::setPerFrameData(const sp<const DisplayDevice>& display,

    setCompositionType(display, Hwc2::IComposerClient::Composition::SOLID_COLOR);

    const ui::Dataspace dataspace = isColorSpaceAgnostic() ? targetDataspace : mCurrentDataSpace;
    const ui::Dataspace dataspace =
            isColorSpaceAgnostic() && targetDataspace != ui::Dataspace::UNKNOWN ? targetDataspace
                                                                                : mCurrentDataSpace;
    error = hwcLayer->setDataspace(dataspace);
    if (error != HWC2::Error::None) {
        ALOGE("[%s] Failed to set dataspace %d: %s (%d)", mName.string(), dataspace,
+25 −1
Original line number Diff line number Diff line
@@ -157,6 +157,28 @@ bool isWideColorMode(const ColorMode colorMode) {
    return false;
}

bool isHdrColorMode(const ColorMode colorMode) {
    switch (colorMode) {
        case ColorMode::BT2100_PQ:
        case ColorMode::BT2100_HLG:
            return true;
        case ColorMode::DISPLAY_P3:
        case ColorMode::ADOBE_RGB:
        case ColorMode::DCI_P3:
        case ColorMode::BT2020:
        case ColorMode::DISPLAY_BT2020:
        case ColorMode::NATIVE:
        case ColorMode::STANDARD_BT601_625:
        case ColorMode::STANDARD_BT601_625_UNADJUSTED:
        case ColorMode::STANDARD_BT601_525:
        case ColorMode::STANDARD_BT601_525_UNADJUSTED:
        case ColorMode::STANDARD_BT709:
        case ColorMode::SRGB:
            return false;
    }
    return false;
}

ui::Transform::orientation_flags fromSurfaceComposerRotation(ISurfaceComposer::Rotation rotation) {
    switch (rotation) {
        case ISurfaceComposer::eRotateNone:
@@ -1836,7 +1858,9 @@ void SurfaceFlinger::calculateWorkingSet() {

            const auto& displayState = display->getState();
            layer->setPerFrameData(displayDevice, displayState.transform, displayState.viewport,
                                   displayDevice->getSupportedPerFrameMetadata(), targetDataspace);
                                   displayDevice->getSupportedPerFrameMetadata(),
                                   isHdrColorMode(displayState.colorMode) ? Dataspace::UNKNOWN
                                                                          : targetDataspace);
        }
    }