[PATCH 4/5] wined3d: Retrieve the supported sample counts for Vulkan formats.
Henri Verbeet
hverbeet at codeweavers.com
Fri Sep 20 08:38:29 CDT 2019
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
dlls/wined3d/utils.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 82027bf19c1..cc217c73224 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -4160,10 +4160,13 @@ static void init_vulkan_format_info(struct wined3d_format_vk *format,
{WINED3DFMT_BC7_UNORM_SRGB, VK_FORMAT_BC7_SRGB_BLOCK, },
};
VkFormat vk_format = VK_FORMAT_UNDEFINED;
+ VkImageFormatProperties image_properties;
VkFormatFeatureFlags texture_flags;
VkFormatProperties properties;
+ VkImageUsageFlags vk_usage;
unsigned int flags;
unsigned int i;
+ VkResult vr;
for (i = 0; i < ARRAY_SIZE(vulkan_formats); ++i)
{
@@ -4211,6 +4214,22 @@ static void init_vulkan_format_info(struct wined3d_format_vk *format,
format->f.flags[WINED3D_GL_RES_TYPE_TEX_2D] |= flags;
format->f.flags[WINED3D_GL_RES_TYPE_TEX_3D] |= flags;
format->f.flags[WINED3D_GL_RES_TYPE_TEX_CUBE] |= flags;
+
+ vk_usage = 0;
+ if (texture_flags & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT)
+ vk_usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
+ else if (texture_flags & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)
+ vk_usage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
+ if (vk_usage)
+ {
+ if ((vr = VK_CALL(vkGetPhysicalDeviceImageFormatProperties(vk_physical_device, vk_format,
+ VK_IMAGE_TYPE_2D, VK_IMAGE_TILING_OPTIMAL, vk_usage, 0, &image_properties))) < 0)
+ {
+ ERR("Failed to get image format properties, vr %s.\n", wined3d_debug_vkresult(vr));
+ return;
+ }
+ format->f.multisample_types = image_properties.sampleCounts;
+ }
}
BOOL wined3d_adapter_vk_init_format_info(struct wined3d_adapter_vk *adapter_vk,
--
2.11.0
More information about the wine-devel
mailing list