From 2f4c7b5ccfb73e0d8a0a194cae4b1af0fbf6d358 Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Fri, 6 Jan 2023 16:37:38 -0800 Subject: [PATCH] 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: --- src/microsoft/vulkan/dzn_image.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/microsoft/vulkan/dzn_image.c b/src/microsoft/vulkan/dzn_image.c index aae3facfec6..18e1c6d125f 100644 --- a/src/microsoft/vulkan/dzn_image.c +++ b/src/microsoft/vulkan/dzn_image.c @@ -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)