Mesa (main): radv: Split off cmd_buffer variant of descriptor set updates
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Nov 4 07:53:06 UTC 2021
Module: Mesa
Branch: main
Commit: 4865cb6514e4109a6e344ffd9c139afc568abef8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4865cb6514e4109a6e344ffd9c139afc568abef8
Author: Joshua Ashton <joshua at froggi.es>
Date: Thu Oct 14 13:15:51 2021 +0100
radv: Split off cmd_buffer variant of descriptor set updates
Assumes cmd_buffer != NULL for this path to eliminate the checks in the generic code.
Signed-off-by: Joshua Ashton <joshua at froggi.es>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13342>
---
src/amd/vulkan/radv_cmd_buffer.c | 12 ++++++------
src/amd/vulkan/radv_descriptor_set.c | 29 +++++++++++++++++++++--------
src/amd/vulkan/radv_private.h | 10 +++++-----
3 files changed, 32 insertions(+), 19 deletions(-)
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,
More information about the mesa-commit
mailing list