From a1672b6e88ac9c73f2f9e1f6cfeba855b9193418 Mon Sep 17 00:00:00 2001 From: Sally Qi Date: Wed, 25 Jan 2023 10:52:38 -0800 Subject: [PATCH] Fix HDR colorspace crash during tonemapping Bug: 266056645 Test: build and test tonemap apps Change-Id: Icddb827be4dcfdfdf7de12c75d35ca1bfd65570a --- libs/hwui/utils/Color.cpp | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/libs/hwui/utils/Color.cpp b/libs/hwui/utils/Color.cpp index 3afb419f9b8bb..44850441cfde2 100644 --- a/libs/hwui/utils/Color.cpp +++ b/libs/hwui/utils/Color.cpp @@ -155,23 +155,12 @@ android_dataspace ColorSpaceToADataSpace(SkColorSpace* colorSpace, SkColorType c skcms_TransferFunction fn; if (!colorSpace->isNumericalTransferFn(&fn)) { - // pq with the default white point - auto rec2020PQ = SkColorSpace::MakeRGB(GetPQSkTransferFunction(), SkNamedGamut::kRec2020); - if (SkColorSpace::Equals(colorSpace, rec2020PQ.get())) { + auto res = skcms_TransferFunction_getType(&fn); + if (res == skcms_TFType_PQish) { return HAL_DATASPACE_BT2020_PQ; } - // standard PQ - rec2020PQ = SkColorSpace::MakeRGB(SkNamedTransferFn::kPQ, SkNamedGamut::kRec2020); - if (SkColorSpace::Equals(colorSpace, rec2020PQ.get())) { - return HAL_DATASPACE_BT2020_PQ; - } - // HLG - const auto hlgFn = GetHLGScaleTransferFunction(); - if (hlgFn.has_value()) { - auto rec2020HLG = SkColorSpace::MakeRGB(hlgFn.value(), SkNamedGamut::kRec2020); - if (SkColorSpace::Equals(colorSpace, rec2020HLG.get())) { - return static_cast(HAL_DATASPACE_BT2020_HLG); - } + if (res == skcms_TFType_HLGish) { + return static_cast(HAL_DATASPACE_BT2020_HLG); } LOG_ALWAYS_FATAL("Only select non-numerical transfer functions are supported"); }