summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author John Reck <jreck@google.com> 2021-05-12 09:56:40 -0400
committer John Reck <jreck@google.com> 2021-05-12 15:00:50 -0400
commit241cc4a2051d71e55d4ef3d80d8d35cdc9b92841 (patch)
tree55e1281e9f84c147351d882b37c8f85345606499
parent281cef268b1df78327a496c81b2170fec80bcc33 (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.cpp18
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++;