From: Giovanni Mascellani gmascellani@codeweavers.com
--- dlls/wined3d/adapter_vk.c | 2 ++ dlls/wined3d/device.c | 11 +++++++++++ dlls/wined3d/wined3d_vk.h | 1 + 3 files changed, 14 insertions(+)
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index e6152ad3026..7aa3155f42b 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -2358,6 +2358,7 @@ static bool wined3d_adapter_vk_init_device_extensions(struct wined3d_adapter_vk {VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, ~0u}, {VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, ~0u, true}, {VK_KHR_MAINTENANCE1_EXTENSION_NAME, VK_API_VERSION_1_1, true}, + {VK_KHR_MAINTENANCE2_EXTENSION_NAME, VK_API_VERSION_1_1}, {VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME,VK_API_VERSION_1_2}, {VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_API_VERSION_1_1}, {VK_KHR_SWAPCHAIN_EXTENSION_NAME, ~0u, true}, @@ -2372,6 +2373,7 @@ static bool wined3d_adapter_vk_init_device_extensions(struct wined3d_adapter_vk map[] = { {VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, WINED3D_VK_EXT_TRANSFORM_FEEDBACK}, + {VK_KHR_MAINTENANCE2_EXTENSION_NAME, WINED3D_VK_KHR_MAINTENANCE2}, {VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME, WINED3D_VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE}, {VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, WINED3D_VK_KHR_SHADER_DRAW_PARAMETERS}, {VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, WINED3D_VK_EXT_HOST_QUERY_RESET}, diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 201b76eab28..d9859aec0e5 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -722,6 +722,7 @@ bool wined3d_device_vk_create_null_views(struct wined3d_device_vk *device_vk, st struct wined3d_null_resources_vk *r = &device_vk->null_resources_vk; struct wined3d_null_views_vk *v = &device_vk->null_views_vk; VkBufferViewCreateInfo buffer_create_info; + VkImageViewUsageCreateInfoKHR usage_desc; const struct wined3d_vk_info *vk_info; VkImageViewCreateInfo view_desc; VkResult vr; @@ -768,6 +769,16 @@ bool wined3d_device_vk_create_null_views(struct wined3d_device_vk *device_vk, st view_desc.subresourceRange.levelCount = 1; view_desc.subresourceRange.baseArrayLayer = 0; view_desc.subresourceRange.layerCount = 1; + + if (wined3d_adapter_vk(device_vk->d.adapter)->vk_info.supported[WINED3D_VK_KHR_MAINTENANCE2]) + { + usage_desc.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR; + usage_desc.pNext = NULL; + usage_desc.usage = VK_IMAGE_USAGE_SAMPLED_BIT; + + view_desc.pNext = &usage_desc; + } + if ((vr = VK_CALL(vkCreateImageView(device_vk->vk_device, &view_desc, NULL, &v->vk_info_1d.imageView))) < 0) { ERR("Failed to create 1D image view, vr %s.\n", wined3d_debug_vkresult(vr)); diff --git a/dlls/wined3d/wined3d_vk.h b/dlls/wined3d/wined3d_vk.h index 5d2191e9833..6d619ad89b8 100644 --- a/dlls/wined3d/wined3d_vk.h +++ b/dlls/wined3d/wined3d_vk.h @@ -216,6 +216,7 @@ enum wined3d_vk_extension WINED3D_VK_EXT_NONE,
WINED3D_VK_EXT_TRANSFORM_FEEDBACK, + WINED3D_VK_KHR_MAINTENANCE2, WINED3D_VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE, WINED3D_VK_KHR_SHADER_DRAW_PARAMETERS, WINED3D_VK_EXT_HOST_QUERY_RESET,