diff options
author | 2025-02-27 15:39:31 -0800 | |
---|---|---|
committer | 2025-02-27 15:39:31 -0800 | |
commit | 82ada6503a81af7eeed2924a2d2d942375f6c8c2 (patch) | |
tree | feb014d10d6fe761610bafd23ed382f0c78084ac /libs/hwui/SkiaCanvas.cpp | |
parent | 2b327ef435fd5d687fd5a65c2ee263ba0ebea5ce (diff) | |
parent | 450f8ab14dfecc9a5061d30c8e3d6864cc21fb9b (diff) |
Merge 25Q1 (ab/12770256) to aosp-main-future
Bug: 385190204
Merged-In: Ibc80f09d54bec2c83814874d94a8f8eb22b5075f
Change-Id: If7779ae57fd91631d08bd8af5434c2ddd963aad7
Diffstat (limited to 'libs/hwui/SkiaCanvas.cpp')
-rw-r--r-- | libs/hwui/SkiaCanvas.cpp | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp index 9e825fb350d6..7f5ca44f7ceb 100644 --- a/libs/hwui/SkiaCanvas.cpp +++ b/libs/hwui/SkiaCanvas.cpp @@ -619,18 +619,16 @@ bool SkiaCanvas::useGainmapShader(Bitmap& bitmap) { // If it's an unknown colortype then it's not a bitmap-backed canvas if (info.colorType() == SkColorType::kUnknown_SkColorType) return true; - skcms_TransferFunction tfn; - info.colorSpace()->transferFn(&tfn); - - auto transferType = skcms_TransferFunction_getType(&tfn); - switch (transferType) { - case skcms_TFType_HLGish: - case skcms_TFType_HLGinvish: - case skcms_TFType_PQish: - return true; - case skcms_TFType_Invalid: - case skcms_TFType_sRGBish: - return false; + auto colorSpace = info.colorSpace(); + // If we don't have a colorspace, we can't apply a gainmap + if (!colorSpace) return false; + + const float targetRatio = uirenderer::getTargetHdrSdrRatio(colorSpace); + + if (bitmap.gainmap()->info.fBaseImageType == SkGainmapInfo::BaseImageType::kHDR) { + return targetRatio < bitmap.gainmap()->info.fDisplayRatioHdr; + } else { + return targetRatio > bitmap.gainmap()->info.fDisplayRatioSdr; } } |