diff options
| author | 2021-05-12 09:56:40 -0400 | |
|---|---|---|
| committer | 2021-05-12 15:00:50 -0400 | |
| commit | 241cc4a2051d71e55d4ef3d80d8d35cdc9b92841 (patch) | |
| tree | 55e1281e9f84c147351d882b37c8f85345606499 | |
| parent | 281cef268b1df78327a496c81b2170fec80bcc33 (diff) | |
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
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 3edbe1da02..a033bee904 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -2190,20 +2190,10 @@ void SurfaceFlinger::postComposition() { mDrawingState.traverse([&, compositionDisplay = compositionDisplay](Layer* layer) { if (layer->isVisible() && compositionDisplay->belongsInOutput(layer->getCompositionEngineLayerFE())) { - bool isHdr = false; - switch (layer->getDataSpace()) { - case ui::Dataspace::BT2020: - case ui::Dataspace::BT2020_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; - } + const Dataspace transfer = + static_cast<Dataspace>(layer->getDataSpace() & Dataspace::TRANSFER_MASK); + const bool isHdr = (transfer == Dataspace::TRANSFER_ST2084 || + transfer == Dataspace::TRANSFER_HLG); if (isHdr) { info.numberOfHdrLayers++; |