diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index c805ff1220f..9fea76deebc 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -4672,9 +4672,9 @@ radv_meta_push_descriptor_set(struct radv_cmd_buffer *cmd_buffer, push_set->header.va = radv_buffer_get_va(cmd_buffer->upload.upload_bo); push_set->header.va += bo_offset; - radv_update_descriptor_sets(cmd_buffer->device, cmd_buffer, - radv_descriptor_set_to_handle(push_set), descriptorWriteCount, - pDescriptorWrites, 0, NULL); + radv_cmd_update_descriptor_sets(cmd_buffer->device, cmd_buffer, + radv_descriptor_set_to_handle(push_set), descriptorWriteCount, + pDescriptorWrites, 0, NULL); radv_set_descriptor_set(cmd_buffer, pipelineBindPoint, push_set, set); } @@ -4705,9 +4705,9 @@ radv_CmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer, VkPipelineBindPoint assert(writeset->descriptorType != VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT); } - radv_update_descriptor_sets(cmd_buffer->device, cmd_buffer, - radv_descriptor_set_to_handle(push_set), descriptorWriteCount, - pDescriptorWrites, 0, NULL); + radv_cmd_update_descriptor_sets(cmd_buffer->device, cmd_buffer, + radv_descriptor_set_to_handle(push_set), descriptorWriteCount, + pDescriptorWrites, 0, NULL); radv_set_descriptor_set(cmd_buffer, pipelineBindPoint, push_set, set); descriptors_state->push_dirty = true; diff --git a/src/amd/vulkan/radv_descriptor_set.c b/src/amd/vulkan/radv_descriptor_set.c index 222b3ca2977..f0ff13822aa 100644 --- a/src/amd/vulkan/radv_descriptor_set.c +++ b/src/amd/vulkan/radv_descriptor_set.c @@ -1117,12 +1117,12 @@ write_accel_struct(void *ptr, VkAccelerationStructureKHR _accel_struct) memcpy(ptr, &va, sizeof(va)); } -void -radv_update_descriptor_sets(struct radv_device *device, struct radv_cmd_buffer *cmd_buffer, - VkDescriptorSet dstSetOverride, uint32_t descriptorWriteCount, - const VkWriteDescriptorSet *pDescriptorWrites, - uint32_t descriptorCopyCount, - const VkCopyDescriptorSet *pDescriptorCopies) +static ALWAYS_INLINE void +radv_update_descriptor_sets_impl(struct radv_device *device, struct radv_cmd_buffer *cmd_buffer, + VkDescriptorSet dstSetOverride, uint32_t descriptorWriteCount, + const VkWriteDescriptorSet *pDescriptorWrites, + uint32_t descriptorCopyCount, + const VkCopyDescriptorSet *pDescriptorCopies) { uint32_t i, j; for (i = 0; i < descriptorWriteCount; i++) { @@ -1293,8 +1293,21 @@ radv_UpdateDescriptorSets(VkDevice _device, uint32_t descriptorWriteCount, { RADV_FROM_HANDLE(radv_device, device, _device); - radv_update_descriptor_sets(device, NULL, VK_NULL_HANDLE, descriptorWriteCount, - pDescriptorWrites, descriptorCopyCount, pDescriptorCopies); + radv_update_descriptor_sets_impl(device, NULL, VK_NULL_HANDLE, descriptorWriteCount, + pDescriptorWrites, descriptorCopyCount, pDescriptorCopies); +} + +void +radv_cmd_update_descriptor_sets(struct radv_device *device, struct radv_cmd_buffer *cmd_buffer, + VkDescriptorSet dstSetOverride, uint32_t descriptorWriteCount, + const VkWriteDescriptorSet *pDescriptorWrites, + uint32_t descriptorCopyCount, + const VkCopyDescriptorSet *pDescriptorCopies) +{ + /* Assume cmd_buffer != NULL to optimize out cmd_buffer checks in generic code above. */ + assume(cmd_buffer != NULL); + radv_update_descriptor_sets_impl(device, cmd_buffer, dstSetOverride, descriptorWriteCount, + pDescriptorWrites, descriptorCopyCount, pDescriptorCopies); } VkResult diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 4fc60d66aff..8d981f1cebd 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -2577,11 +2577,11 @@ bool radv_queue_internal_submit(struct radv_queue *queue, struct radeon_cmdbuf * void radv_set_descriptor_set(struct radv_cmd_buffer *cmd_buffer, VkPipelineBindPoint bind_point, struct radv_descriptor_set *set, unsigned idx); -void radv_update_descriptor_sets(struct radv_device *device, struct radv_cmd_buffer *cmd_buffer, - VkDescriptorSet overrideSet, uint32_t descriptorWriteCount, - const VkWriteDescriptorSet *pDescriptorWrites, - uint32_t descriptorCopyCount, - const VkCopyDescriptorSet *pDescriptorCopies); +void radv_cmd_update_descriptor_sets(struct radv_device *device, struct radv_cmd_buffer *cmd_buffer, + VkDescriptorSet overrideSet, uint32_t descriptorWriteCount, + const VkWriteDescriptorSet *pDescriptorWrites, + uint32_t descriptorCopyCount, + const VkCopyDescriptorSet *pDescriptorCopies); void radv_update_descriptor_set_with_template(struct radv_device *device, struct radv_cmd_buffer *cmd_buffer,