Module: Mesa
Branch: main
Commit: 6bd8a3c7e434e269ef972c49e8189a0003a9f8ee
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6bd8a3c7e434e269ef972c49e8189a0003a9f8ee

Author: Louis-Francis Ratté-Boulianne <[email protected]>
Date:   Tue Dec 14 15:50:35 2021 +0100

vulkan/runtime: Add a vk_cmd_queue object to vk_command_buffer

This is paving the road for generic secondary command buffer support,
where commands are simply recorded in a software queue and replayed
on the primary command buffer when vkCmdExecuteCommands() is called.

Reviewed-by: Jason Ekstrand <[email protected]>
Reviewed-by: Boris Brezillon <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15311>

---

 src/vulkan/runtime/vk_command_buffer.c | 3 +++
 src/vulkan/runtime/vk_command_buffer.h | 4 ++++
 2 files changed, 7 insertions(+)

diff --git a/src/vulkan/runtime/vk_command_buffer.c 
b/src/vulkan/runtime/vk_command_buffer.c
index 160d9440c27..da3cd63866b 100644
--- a/src/vulkan/runtime/vk_command_buffer.c
+++ b/src/vulkan/runtime/vk_command_buffer.c
@@ -36,6 +36,7 @@ vk_command_buffer_init(struct vk_command_buffer 
*command_buffer,
 
    command_buffer->pool = pool;
    command_buffer->level = level;
+   vk_cmd_queue_init(&command_buffer->cmd_queue, &pool->alloc);
    util_dynarray_init(&command_buffer->labels, NULL);
    command_buffer->region_begin = true;
 
@@ -47,6 +48,7 @@ vk_command_buffer_init(struct vk_command_buffer 
*command_buffer,
 void
 vk_command_buffer_reset(struct vk_command_buffer *command_buffer)
 {
+   vk_cmd_queue_reset(&command_buffer->cmd_queue);
    util_dynarray_clear(&command_buffer->labels);
    command_buffer->region_begin = true;
 }
@@ -55,6 +57,7 @@ void
 vk_command_buffer_finish(struct vk_command_buffer *command_buffer)
 {
    list_del(&command_buffer->pool_link);
+   vk_cmd_queue_finish(&command_buffer->cmd_queue);
    util_dynarray_fini(&command_buffer->labels);
    vk_object_base_finish(&command_buffer->base);
 }
diff --git a/src/vulkan/runtime/vk_command_buffer.h 
b/src/vulkan/runtime/vk_command_buffer.h
index 6ad5c71baa2..b0ab1bc6b1a 100644
--- a/src/vulkan/runtime/vk_command_buffer.h
+++ b/src/vulkan/runtime/vk_command_buffer.h
@@ -24,6 +24,7 @@
 #ifndef VK_COMMAND_BUFFER_H
 #define VK_COMMAND_BUFFER_H
 
+#include "vk_cmd_queue.h"
 #include "vk_object.h"
 #include "util/list.h"
 #include "util/u_dynarray.h"
@@ -52,6 +53,9 @@ struct vk_command_buffer {
     */
    void (*destroy)(struct vk_command_buffer *);
 
+   /** Command list for emulated secondary command buffers */
+   struct vk_cmd_queue cmd_queue;
+
    /**
     * VK_EXT_debug_utils
     *

Reply via email to