[PATCH vkd3d 5/6] vkd3d: Enable descriptor indexing if available.

Conor McCarthy cmccarthy at codeweavers.com
Wed May 26 03:10:54 CDT 2021


Signed-off-by: Conor McCarthy <cmccarthy at codeweavers.com>
---
 libs/vkd3d/device.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c
index a4c8bca8..88221406 100644
--- a/libs/vkd3d/device.c
+++ b/libs/vkd3d/device.c
@@ -1423,7 +1423,17 @@ static HRESULT vkd3d_init_device_caps(struct d3d12_device *device,
         vulkan_info->EXT_shader_demote_to_helper_invocation = false;
     if (!physical_device_info->texel_buffer_alignment_features.texelBufferAlignment)
         vulkan_info->EXT_texel_buffer_alignment = false;
-    vulkan_info->EXT_descriptor_indexing = false;
+    descriptor_indexing = &physical_device_info->descriptor_indexing_features;
+    if (!descriptor_indexing->descriptorBindingPartiallyBound
+            || !descriptor_indexing->descriptorBindingVariableDescriptorCount
+            || !physical_device_info->descriptor_indexing_features.shaderSampledImageArrayNonUniformIndexing
+            || !physical_device_info->descriptor_indexing_features.shaderUniformTexelBufferArrayDynamicIndexing
+            || !physical_device_info->descriptor_indexing_features.shaderUniformTexelBufferArrayNonUniformIndexing
+            || !physical_device_info->descriptor_indexing_features.shaderStorageImageArrayNonUniformIndexing
+            || !physical_device_info->descriptor_indexing_features.shaderStorageTexelBufferArrayDynamicIndexing
+            || !physical_device_info->descriptor_indexing_features.shaderStorageTexelBufferArrayNonUniformIndexing
+            || !physical_device_info->descriptor_indexing_features.shaderUniformBufferArrayNonUniformIndexing)
+        vulkan_info->EXT_descriptor_indexing = false;
 
     vulkan_info->texel_buffer_alignment_properties = physical_device_info->texel_buffer_alignment_properties;
 
@@ -1461,7 +1471,6 @@ static HRESULT vkd3d_init_device_caps(struct d3d12_device *device,
     /* Disable unused Vulkan features. */
     features->shaderTessellationAndGeometryPointSize = VK_FALSE;
 
-    descriptor_indexing = &physical_device_info->descriptor_indexing_features;
     if (descriptor_indexing)
     {
         descriptor_indexing->shaderInputAttachmentArrayDynamicIndexing = VK_FALSE;
-- 
2.31.1




More information about the wine-devel mailing list