From 94099ee64296c60fdd5c3b237eedea0ff6651ea4 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 21 Feb 2020 09:35:46 +0100 Subject: [PATCH] radv: add a small helper that allows to submit internal CS Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/amd/vulkan/radv_device.c | 19 +++++++++++++++++++ src/amd/vulkan/radv_private.h | 3 +++ 2 files changed, 22 insertions(+) diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index d86f2c7..04fdb46 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -4652,6 +4652,25 @@ static VkResult radv_queue_submit(struct radv_queue *queue, return radv_process_submissions(&processing_list); } +bool +radv_queue_internal_submit(struct radv_queue *queue, struct radeon_cmdbuf *cs) +{ + struct radeon_winsys_ctx *ctx = queue->hw_ctx; + struct radv_winsys_sem_info sem_info; + VkResult result; + int ret; + + result = radv_alloc_sem_info(queue->device, &sem_info, 0, NULL, 0, 0, + 0, NULL, NULL); + if (result != VK_SUCCESS) + return false; + + ret = queue->device->ws->cs_submit(ctx, queue->queue_idx, &cs, 1, NULL, + NULL, &sem_info, NULL, false, NULL); + radv_free_sem_info(&sem_info); + return !ret; +} + /* Signals fence as soon as all the work currently put on queue is done. */ static VkResult radv_signal_fence(struct radv_queue *queue, VkFence fence) diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 7f4b571..8d46117 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -2287,6 +2287,9 @@ struct radv_semaphore { struct radv_semaphore_part temporary; }; +bool radv_queue_internal_submit(struct radv_queue *queue, + struct radeon_cmdbuf *cs); + void radv_set_descriptor_set(struct radv_cmd_buffer *cmd_buffer, VkPipelineBindPoint bind_point, struct radv_descriptor_set *set, -- 2.7.4