radv: add a small helper that allows to submit internal CS
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 21 Feb 2020 08:35:46 +0000 (09:35 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 28 Feb 2020 07:10:53 +0000 (08:10 +0100)
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3900>

src/amd/vulkan/radv_device.c
src/amd/vulkan/radv_private.h

index d86f2c7d690ef92214ce563b6c10be732c59a97d..04fdb462a92c6fb270b734b31fed09e4b4ce49fe 100644 (file)
@@ -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)
index 7f4b571beb21c71ec3748f349c387418ebfc11b2..8d4611787705959e12121b5ad6ee2b10cacfddaa 100644 (file)
@@ -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,