From 74ac66c27592dc9746a899c6930745b17d2ed40f Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 22 Sep 2023 08:21:18 -0400 Subject: [PATCH] lavapipe: fix variable descriptor count support handling if no variable counts are present this must be zero, otherwise yolo fixes: dEQP-VK.api.maintenance3_check.support_count_combined_image_sampler_extra_bindings_no_variable_size dEQP-VK.api.maintenance3_check.support_count_combined_image_sampler_no_variable_size dEQP-VK.api.maintenance3_check.support_count_inline_uniform_block_extra_bindings_no_variable_size dEQP-VK.api.maintenance3_check.support_count_inline_uniform_block_no_variable_size dEQP-VK.api.maintenance3_check.support_count_input_attachment_extra_bindings_no_variable_size dEQP-VK.api.maintenance3_check.support_count_input_attachment_no_variable_size dEQP-VK.api.maintenance3_check.support_count_sampled_image_extra_bindings_no_variable_size dEQP-VK.api.maintenance3_check.support_count_sampled_image_no_variable_size dEQP-VK.api.maintenance3_check.support_count_sampler_extra_bindings_no_variable_size dEQP-VK.api.maintenance3_check.support_count_sampler_no_variable_size dEQP-VK.api.maintenance3_check.support_count_storage_buffer_dynamic_extra_bindings_no_variable_size dEQP-VK.api.maintenance3_check.support_count_storage_buffer_dynamic_no_variable_size dEQP-VK.api.maintenance3_check.support_count_storage_buffer_extra_bindings_no_variable_size dEQP-VK.api.maintenance3_check.support_count_storage_buffer_no_variable_size dEQP-VK.api.maintenance3_check.support_count_storage_image_extra_bindings_no_variable_size dEQP-VK.api.maintenance3_check.support_count_storage_image_no_variable_size dEQP-VK.api.maintenance3_check.support_count_storage_texel_buffer_extra_bindings_no_variable_size dEQP-VK.api.maintenance3_check.support_count_storage_texel_buffer_no_variable_size dEQP-VK.api.maintenance3_check.support_count_uniform_buffer_dynamic_extra_bindings_no_variable_size dEQP-VK.api.maintenance3_check.support_count_uniform_buffer_dynamic_no_variable_size dEQP-VK.api.maintenance3_check.support_count_uniform_buffer_extra_bindings_no_variable_size dEQP-VK.api.maintenance3_check.support_count_uniform_buffer_no_variable_size dEQP-VK.api.maintenance3_check.support_count_uniform_texel_buffer_extra_bindings_no_variable_size dEQP-VK.api.maintenance3_check.support_count_uniform_texel_buffer_no_variable_size Reviewed-by: Dave Airlie Part-of: --- src/gallium/frontends/lavapipe/lvp_descriptor_set.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/gallium/frontends/lavapipe/lvp_descriptor_set.c b/src/gallium/frontends/lavapipe/lvp_descriptor_set.c index 2168487e464..c9f591ccd1d 100644 --- a/src/gallium/frontends/lavapipe/lvp_descriptor_set.c +++ b/src/gallium/frontends/lavapipe/lvp_descriptor_set.c @@ -681,6 +681,19 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetDescriptorSetLayoutSupport(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) { + const VkDescriptorSetLayoutBindingFlagsCreateInfo *variable_flags = + vk_find_struct_const(pCreateInfo->pNext, DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO); + VkDescriptorSetVariableDescriptorCountLayoutSupport *variable_count = + vk_find_struct(pSupport->pNext, DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT); + if (variable_count) { + variable_count->maxVariableDescriptorCount = 0; + if (variable_flags) { + for (unsigned i = 0; i < variable_flags->bindingCount; i++) { + if (variable_flags->pBindingFlags[i] & VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT) + variable_count->maxVariableDescriptorCount = MAX_DESCRIPTORS; + } + } + } pSupport->supported = true; }