dzn: Use typeless format for creation of depth-only or stencil-only D24S8

When querying capabilities or creating views using a scoped aspect
mask, we want to return the format for the correct single-channel
format, but when actually creating the resource (aspect mask 0),
we want to use the typeless format, since the single-channel formats
don't report multisampling support.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20614>
This commit is contained in:
Jesse Natalie 2023-01-06 16:37:38 -08:00 committed by Marge Bot
parent 9f928adf81
commit 2f4c7b5ccf

View file

@ -286,8 +286,11 @@ dzn_image_get_dxgi_format(VkFormat format,
DXGI_FORMAT_D32_FLOAT : DXGI_FORMAT_R32_FLOAT;
case PIPE_FORMAT_Z24X8_UNORM:
return usage == VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT ?
DXGI_FORMAT_D24_UNORM_S8_UINT : DXGI_FORMAT_R24_UNORM_X8_TYPELESS;
if (usage == VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)
return DXGI_FORMAT_D24_UNORM_S8_UINT;
if (aspects & VK_IMAGE_ASPECT_DEPTH_BIT)
return DXGI_FORMAT_R24_UNORM_X8_TYPELESS;
return DXGI_FORMAT_R24G8_TYPELESS;
case PIPE_FORMAT_Z24_UNORM_S8_UINT:
if (usage == VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)
@ -301,8 +304,11 @@ dzn_image_get_dxgi_format(VkFormat format,
return DXGI_FORMAT_R24G8_TYPELESS;
case PIPE_FORMAT_X24S8_UINT:
return usage == VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT ?
DXGI_FORMAT_D24_UNORM_S8_UINT : DXGI_FORMAT_X24_TYPELESS_G8_UINT;
if (usage == VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)
return DXGI_FORMAT_D24_UNORM_S8_UINT;
if (aspects & VK_IMAGE_ASPECT_STENCIL_BIT)
return DXGI_FORMAT_X24_TYPELESS_G8_UINT;
return DXGI_FORMAT_R24G8_TYPELESS;
case PIPE_FORMAT_Z32_FLOAT_S8X24_UINT:
if (usage == VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)