From 004a765d1f26e643d4f2940b0b051a35a3bbeaf0 Mon Sep 17 00:00:00 2001 From: Wang Bin Date: Mon, 16 Oct 2023 15:55:50 +0800 Subject: [PATCH] rhi: metal: support HDR10 Change-Id: I6a50657e96f6e41ef2907abdac937b5e491380f8 Reviewed-by: Laszlo Agocs --- src/gui/rhi/qrhimetal.mm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/gui/rhi/qrhimetal.mm b/src/gui/rhi/qrhimetal.mm index 020a63b606c..faeab7b7383 100644 --- a/src/gui/rhi/qrhimetal.mm +++ b/src/gui/rhi/qrhimetal.mm @@ -6348,6 +6348,11 @@ bool QMetalSwapChain::isFormatSupported(Format f) return hdrInfo().limits.colorComponentValue.maxPotentialColorComponentValue > 1.0f; else return false; + } else if (f == HDR10) { + if (@available(iOS 16.0, *)) + return hdrInfo().limits.colorComponentValue.maxPotentialColorComponentValue > 1.0f; + else + return false; } else if (f == HDRExtendedDisplayP3Linear) { return hdrInfo().limits.colorComponentValue.maxPotentialColorComponentValue > 1.0f; } @@ -6392,6 +6397,11 @@ void QMetalSwapChain::chooseFormats() d->rhiColorFormat = QRhiTexture::RGBA16F; return; } + if (m_format == HDR10) { + d->colorFormat = MTLPixelFormatRGB10A2Unorm; + d->rhiColorFormat = QRhiTexture::RGB10A2; + return; + } d->colorFormat = m_flags.testFlag(sRGB) ? MTLPixelFormatBGRA8Unorm_sRGB : MTLPixelFormatBGRA8Unorm; d->rhiColorFormat = QRhiTexture::BGRA8; } @@ -6440,6 +6450,11 @@ bool QMetalSwapChain::createOrResize() d->layer.colorspace = CGColorSpaceCreateWithName(kCGColorSpaceExtendedLinearSRGB); d->layer.wantsExtendedDynamicRangeContent = YES; } + } else if (m_format == HDR10) { + if (@available(iOS 16.0, *)) { + d->layer.colorspace = CGColorSpaceCreateWithName(kCGColorSpaceITUR_2100_PQ); + d->layer.wantsExtendedDynamicRangeContent = YES; + } } else if (m_format == HDRExtendedDisplayP3Linear) { if (@available(iOS 16.0, *)) { d->layer.colorspace = CGColorSpaceCreateWithName(kCGColorSpaceExtendedLinearDisplayP3);