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);