rhi: vulkan: Fix swapchain format check
Fix the treatment of the sRGB flag. That is independent from the value of format(), and should be checked regardless of wanting a HDR swapchain or not. On Android for instance Display P3 with RGBA8 or RGBA8_SRGB is one of the formats offered. While we do not support this right now, it is an example of a "HDR" format that still uses a color buffer format where a dedicated sRGB format is available and must be chosen according to the specified swapchain flags. Change-Id: I2d97689fa5af7c08486702ae690f2230d06db469 Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 526744ba6536175f9a19ffdf6ff1ee068f9522a4) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
91f9cce4ce
commit
aa0266b90b
@ -7542,11 +7542,9 @@ bool QVkSwapChain::ensureSurface()
|
|||||||
const bool srgbRequested = m_flags.testFlag(sRGB);
|
const bool srgbRequested = m_flags.testFlag(sRGB);
|
||||||
for (int i = 0; i < int(formatCount); ++i) {
|
for (int i = 0; i < int(formatCount); ++i) {
|
||||||
if (formats[i].format != VK_FORMAT_UNDEFINED) {
|
if (formats[i].format != VK_FORMAT_UNDEFINED) {
|
||||||
bool ok = false;
|
bool ok = srgbRequested == isSrgbFormat(formats[i].format);
|
||||||
if (m_format == SDR)
|
if (m_format != SDR)
|
||||||
ok = srgbRequested == isSrgbFormat(formats[i].format);
|
ok &= hdrFormatMatchesVkSurfaceFormat(m_format, formats[i]);
|
||||||
else
|
|
||||||
ok = hdrFormatMatchesVkSurfaceFormat(m_format, formats[i]);
|
|
||||||
if (ok) {
|
if (ok) {
|
||||||
colorFormat = formats[i].format;
|
colorFormat = formats[i].format;
|
||||||
colorSpace = formats[i].colorSpace;
|
colorSpace = formats[i].colorSpace;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user