From 3b94bd03c2f56a6b218966ecdcf3ab78b30ebae2 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Fri, 13 Dec 2024 13:09:15 +0100 Subject: [PATCH] radv: use vk_descriptor_type_is_dynamic No need to open-code this one now that we have a generic helper. Reviewed-by: Alyssa Rosenzweig Reviewed-by: Lionel Landwerlin Reviewed-by: Samuel Pitoiset Part-of: --- .../nir/radv_nir_apply_pipeline_layout.c | 3 +-- src/amd/vulkan/radv_descriptor_set.c | 18 +++++------------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/amd/vulkan/nir/radv_nir_apply_pipeline_layout.c b/src/amd/vulkan/nir/radv_nir_apply_pipeline_layout.c index 1795e84f323..703b8b51f30 100644 --- a/src/amd/vulkan/nir/radv_nir_apply_pipeline_layout.c +++ b/src/amd/vulkan/nir/radv_nir_apply_pipeline_layout.c @@ -64,8 +64,7 @@ visit_vulkan_resource_index(nir_builder *b, apply_layout_state *state, nir_intri unsigned stride; nir_def *set_ptr; - if (layout->binding[binding].type == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC || - layout->binding[binding].type == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC) { + if (vk_descriptor_type_is_dynamic(layout->binding[binding].type)) { unsigned idx = state->layout->set[desc_set].dynamic_offset_start + layout->binding[binding].dynamic_offset_offset; set_ptr = get_scalar_arg(b, 1, state->args->ac.push_constants); offset = state->layout->push_constant_size + idx * 16; diff --git a/src/amd/vulkan/radv_descriptor_set.c b/src/amd/vulkan/radv_descriptor_set.c index 11cf1531113..9209fd6c10b 100644 --- a/src/amd/vulkan/radv_descriptor_set.c +++ b/src/amd/vulkan/radv_descriptor_set.c @@ -1393,9 +1393,7 @@ radv_update_descriptor_sets_impl(struct radv_device *device, struct radv_cmd_buf size_t copy_size = MIN2(src_binding_layout->size, dst_binding_layout->size); for (j = 0; j < copyset->descriptorCount; ++j) { - switch (src_binding_layout->type) { - case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC: - case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: { + if (vk_descriptor_type_is_dynamic(src_binding_layout->type)) { unsigned src_idx = copyset->srcArrayElement + j; unsigned dst_idx = copyset->dstArrayElement + j; struct radv_descriptor_range *src_range, *dst_range; @@ -1405,11 +1403,9 @@ radv_update_descriptor_sets_impl(struct radv_device *device, struct radv_cmd_buf src_range = src_set->header.dynamic_descriptors + src_idx; dst_range = dst_set->header.dynamic_descriptors + dst_idx; *dst_range = *src_range; - break; - } - default: + } else memcpy(dst_ptr, src_ptr, copy_size); - } + src_ptr += src_binding_layout->size / 4; dst_ptr += dst_binding_layout->size / 4; @@ -1497,14 +1493,11 @@ radv_CreateDescriptorUpdateTemplate(VkDevice _device, const VkDescriptorUpdateTe /* dst_offset is an offset into dynamic_descriptors when the descriptor is dynamic, and an offset into mapped_ptr otherwise */ - switch (entry->descriptorType) { - case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC: - case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: + if (vk_descriptor_type_is_dynamic(entry->descriptorType)) { assert(pCreateInfo->templateType == VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET); dst_offset = binding_layout->dynamic_offset_offset + entry->dstArrayElement; dst_stride = 0; /* Not used */ - break; - default: + } else { switch (entry->descriptorType) { case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: case VK_DESCRIPTOR_TYPE_SAMPLER: @@ -1524,7 +1517,6 @@ radv_CreateDescriptorUpdateTemplate(VkDevice _device, const VkDescriptorUpdateTe dst_offset += binding_layout->size * entry->dstArrayElement / 4; dst_stride = binding_layout->size / 4; - break; } templ->entry[i] = (struct radv_descriptor_update_template_entry){