[PATCH v2 1/5] wined3d: Use VK_FORMAT_D24_UNORM_S8_UINT when available.
Matteo Bruni
mbruni at codeweavers.com
Wed Mar 10 13:50:15 CST 2021
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50123
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
---
v2: Requery format properties after falling back to
VK_FORMAT_D32_SFLOAT_S8_UINT.
dlls/wined3d/utils.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 9df51872d42..5b6056e5713 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -4146,7 +4146,7 @@ static void init_vulkan_format_info(struct wined3d_format_vk *format,
{WINED3DFMT_D32_FLOAT_S8X24_UINT, VK_FORMAT_D32_SFLOAT_S8_UINT, },
{WINED3DFMT_R32_FLOAT_X8X24_TYPELESS, VK_FORMAT_D32_SFLOAT_S8_UINT, },
{WINED3DFMT_X32_TYPELESS_G8X24_UINT, VK_FORMAT_D32_SFLOAT_S8_UINT, },
- {WINED3DFMT_D24_UNORM_S8_UINT, VK_FORMAT_D32_SFLOAT_S8_UINT, },
+ {WINED3DFMT_D24_UNORM_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT, },
};
VkFormat vk_format = VK_FORMAT_UNDEFINED;
VkImageFormatProperties image_properties;
@@ -4181,6 +4181,17 @@ static void init_vulkan_format_info(struct wined3d_format_vk *format,
format->f.color_fixup = COLOR_FIXUP_IDENTITY;
VK_CALL(vkGetPhysicalDeviceFormatProperties(vk_physical_device, vk_format, &properties));
+ if (vk_format == VK_FORMAT_D24_UNORM_S8_UINT)
+ {
+ if (~properties.optimalTilingFeatures & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)
+ {
+ /* AMD doesn't support VK_FORMAT_D24_UNORM_S8_UINT. */
+ WARN("Mapping VK_FORMAT_D24_UNORM_S8_UINT to VK_FORMAT_D32_SFLOAT_S8_UINT.\n");
+
+ format->vk_format = vk_format = VK_FORMAT_D32_SFLOAT_S8_UINT;
+ VK_CALL(vkGetPhysicalDeviceFormatProperties(vk_physical_device, vk_format, &properties));
+ }
+ }
if (properties.bufferFeatures & VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT)
format->f.flags[WINED3D_GL_RES_TYPE_BUFFER] |= WINED3DFMT_FLAG_VERTEX_ATTRIBUTE;
--
2.26.2
More information about the wine-devel
mailing list