From 3a0d0982522a995f15553d88cfef1c11de63a16c Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Sun, 5 Nov 2017 23:15:52 +0000 Subject: [PATCH] radv: add helper for setting a descriptor. This is just a simple refactor. Reviewed-by: Bas Nieuwenhuizen Signed-off-by: Dave Airlie --- src/amd/vulkan/radv_cmd_buffer.c | 20 ++++++++++++-------- src/amd/vulkan/radv_meta.c | 3 +-- src/amd/vulkan/radv_private.h | 4 ++++ 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index d1cfe8ca068..8d1f5fe48e3 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -476,6 +476,14 @@ radv_save_pipeline(struct radv_cmd_buffer *cmd_buffer, radv_emit_write_data_packet(cs, va, 2, data); } +void radv_set_descriptor_set(struct radv_cmd_buffer *cmd_buffer, + struct radv_descriptor_set *set, + unsigned idx) +{ + cmd_buffer->state.descriptors[idx] = set; + cmd_buffer->state.descriptors_dirty |= (1u << idx); +} + static void radv_save_descriptors(struct radv_cmd_buffer *cmd_buffer) { @@ -2319,8 +2327,7 @@ radv_bind_descriptor_set(struct radv_cmd_buffer *cmd_buffer, { struct radeon_winsys *ws = cmd_buffer->device->ws; - cmd_buffer->state.descriptors[idx] = set; - cmd_buffer->state.descriptors_dirty |= (1u << idx); + radv_set_descriptor_set(cmd_buffer, set, idx); if (!set) return; @@ -2432,8 +2439,7 @@ void radv_meta_push_descriptor_set( radv_descriptor_set_to_handle(push_set), descriptorWriteCount, pDescriptorWrites, 0, NULL); - cmd_buffer->state.descriptors[set] = push_set; - cmd_buffer->state.descriptors_dirty |= (1u << set); + radv_set_descriptor_set(cmd_buffer, push_set, set); } void radv_CmdPushDescriptorSetKHR( @@ -2457,8 +2463,7 @@ void radv_CmdPushDescriptorSetKHR( radv_descriptor_set_to_handle(push_set), descriptorWriteCount, pDescriptorWrites, 0, NULL); - cmd_buffer->state.descriptors[set] = push_set; - cmd_buffer->state.descriptors_dirty |= (1u << set); + radv_set_descriptor_set(cmd_buffer, push_set, set); cmd_buffer->state.push_descriptors_dirty = true; } @@ -2481,8 +2486,7 @@ void radv_CmdPushDescriptorSetWithTemplateKHR( radv_update_descriptor_set_with_template(cmd_buffer->device, cmd_buffer, push_set, descriptorUpdateTemplate, pData); - cmd_buffer->state.descriptors[set] = push_set; - cmd_buffer->state.descriptors_dirty |= (1u << set); + radv_set_descriptor_set(cmd_buffer, push_set, set); cmd_buffer->state.push_descriptors_dirty = true; } diff --git a/src/amd/vulkan/radv_meta.c b/src/amd/vulkan/radv_meta.c index 3f57618ad28..80c5eb28cbe 100644 --- a/src/amd/vulkan/radv_meta.c +++ b/src/amd/vulkan/radv_meta.c @@ -124,8 +124,7 @@ radv_meta_restore(const struct radv_meta_saved_state *state, } if (state->flags & RADV_META_SAVE_DESCRIPTORS) { - cmd_buffer->state.descriptors[0] = state->old_descriptor_set0; - cmd_buffer->state.descriptors_dirty |= (1 << 0); + radv_set_descriptor_set(cmd_buffer, state->old_descriptor_set0, 0); } if (state->flags & RADV_META_SAVE_CONSTANTS) { diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index d236588621a..8fb34962713 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -1552,6 +1552,10 @@ VkResult radv_alloc_sem_info(struct radv_winsys_sem_info *sem_info, const VkSemaphore *signal_sems); void radv_free_sem_info(struct radv_winsys_sem_info *sem_info); +void radv_set_descriptor_set(struct radv_cmd_buffer *cmd_buffer, + struct radv_descriptor_set *set, + unsigned idx); + void radv_update_descriptor_sets(struct radv_device *device, struct radv_cmd_buffer *cmd_buffer, -- 2.30.2