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@froggi.es> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13342>
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user