[PATCH vkd3d 1/2] vkd3d: Do not enable Vulkan-backed descriptor heaps if required update-after-bind features are missing.

Conor McCarthy cmccarthy at codeweavers.com
Tue Mar 22 09:33:00 CDT 2022


descriptorBindingUniformBufferUpdateAfterBind is false for Intel Skylake
(and maybe others).

Signed-off-by: Conor McCarthy <cmccarthy at codeweavers.com>
---
 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,
-- 
2.34.1




More information about the wine-devel mailing list