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

Commit 241cc4a2 authored by John Reck's avatar John Reck
Browse files

Fix HDR detection

BT2020 can also be non-HDR. Instead of a list of dataspaces, use
instead the transfer mask. Anything PQ or HLG is HDR.

Fixes: 187252812
Test: Repro steps in bug
Change-Id: I7018f1f71971bb53b410805921f0f137667ccf15
parent 281cef26
Loading
Loading
Loading
Loading
+4 −14
Original line number Original line Diff line number Diff line
@@ -2190,20 +2190,10 @@ void SurfaceFlinger::postComposition() {
        mDrawingState.traverse([&, compositionDisplay = compositionDisplay](Layer* layer) {
        mDrawingState.traverse([&, compositionDisplay = compositionDisplay](Layer* layer) {
            if (layer->isVisible() &&
            if (layer->isVisible() &&
                compositionDisplay->belongsInOutput(layer->getCompositionEngineLayerFE())) {
                compositionDisplay->belongsInOutput(layer->getCompositionEngineLayerFE())) {
                bool isHdr = false;
                const Dataspace transfer =
                switch (layer->getDataSpace()) {
                        static_cast<Dataspace>(layer->getDataSpace() & Dataspace::TRANSFER_MASK);
                    case ui::Dataspace::BT2020:
                const bool isHdr = (transfer == Dataspace::TRANSFER_ST2084 ||
                    case ui::Dataspace::BT2020_HLG:
                                    transfer == Dataspace::TRANSFER_HLG);
                    case ui::Dataspace::BT2020_PQ:
                    case ui::Dataspace::BT2020_ITU:
                    case ui::Dataspace::BT2020_ITU_HLG:
                    case ui::Dataspace::BT2020_ITU_PQ:
                        isHdr = true;
                        break;
                    default:
                        isHdr = false;
                        break;
                }


                if (isHdr) {
                if (isHdr) {
                    info.numberOfHdrLayers++;
                    info.numberOfHdrLayers++;