From ae2219a7f72d9d5801c8ae4144e7730a390550b9 Mon Sep 17 00:00:00 2001 From: Conor McCarthy Date: Wed, 23 Mar 2022 00:33:00 +1000 Subject: [PATCH] vkd3d: Do not enable Vulkan-backed descriptor heaps if required update-after-bind features are missing. descriptorBindingUniformBufferUpdateAfterBind is false for Intel Skylake (and maybe others). Signed-off-by: Conor McCarthy Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- libs/vkd3d/device.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c index bd471a72..459aa615 100644 --- a/libs/vkd3d/device.c +++ b/libs/vkd3d/device.c @@ -1657,7 +1657,12 @@ static HRESULT vkd3d_init_device_caps(struct d3d12_device *device, * use only enough descriptors for the descriptor tables of the currently bound * root signature, and don't require a 32-bit push constant for each table. */ device->use_vk_heaps = vulkan_info->EXT_descriptor_indexing - && !(device->vkd3d_instance->config_flags & VKD3D_CONFIG_FLAG_VIRTUAL_HEAPS); + && !(device->vkd3d_instance->config_flags & VKD3D_CONFIG_FLAG_VIRTUAL_HEAPS) + && descriptor_indexing->descriptorBindingUniformBufferUpdateAfterBind + && descriptor_indexing->descriptorBindingSampledImageUpdateAfterBind + && descriptor_indexing->descriptorBindingStorageImageUpdateAfterBind + && descriptor_indexing->descriptorBindingUniformTexelBufferUpdateAfterBind + && descriptor_indexing->descriptorBindingStorageTexelBufferUpdateAfterBind; if (device->use_vk_heaps) vkd3d_device_vk_heaps_descriptor_limits_init(&vulkan_info->descriptor_limits,