Module: Mesa
Branch: master
Commit: a380bc7ecfe52b726970d62c2bdc12d3840f95e1
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a380bc7ecfe52b726970d62c2bdc12d3840f95e1

Author: Samuel Pitoiset <[email protected]>
Date:   Wed Dec  6 17:48:40 2017 +0100

radv: track different status of a command buffer

RADV_CMD_BUFFER_STATUS_INVALID is not used for now, but I think
it makes sense to declare it. Could be used later with better
command buffer error handling.

Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>

---

 src/amd/vulkan/radv_cmd_buffer.c | 6 ++++++
 src/amd/vulkan/radv_device.c     | 2 ++
 src/amd/vulkan/radv_private.h    | 9 +++++++++
 3 files changed, 17 insertions(+)

diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index fe4f989dd1..63a5eebab9 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -292,6 +292,8 @@ radv_reset_cmd_buffer(struct radv_cmd_buffer *cmd_buffer)
                cmd_buffer->gfx9_fence_bo = cmd_buffer->upload.upload_bo;
        }
 
+       cmd_buffer->status = RADV_CMD_BUFFER_STATUS_INITIAL;
+
        return cmd_buffer->record_result;
 }
 
@@ -2271,6 +2273,8 @@ VkResult radv_BeginCommandBuffer(
        if (unlikely(cmd_buffer->device->trace_bo))
                radv_cmd_buffer_trace_emit(cmd_buffer);
 
+       cmd_buffer->status = RADV_CMD_BUFFER_STATUS_RECORDING;
+
        return result;
 }
 
@@ -2539,6 +2543,8 @@ VkResult radv_EndCommandBuffer(
        if (!cmd_buffer->device->ws->cs_finalize(cmd_buffer->cs))
                return vk_error(VK_ERROR_OUT_OF_DEVICE_MEMORY);
 
+       cmd_buffer->status = RADV_CMD_BUFFER_STATUS_EXECUTABLE;
+
        return cmd_buffer->record_result;
 }
 
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index c628824163..af301799f3 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -2019,6 +2019,8 @@ VkResult radv_QueueSubmit(
                        cs_array[j] = cmd_buffer->cs;
                        if ((cmd_buffer->usage_flags & 
VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT))
                                can_patch = false;
+
+                       cmd_buffer->status = RADV_CMD_BUFFER_STATUS_PENDING;
                }
 
                for (uint32_t j = 0; j < pSubmits[i].commandBufferCount; j += 
advance) {
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index 3edfda6b12..b1f6eacef1 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -857,6 +857,14 @@ struct radv_cmd_buffer_upload {
        struct list_head list;
 };
 
+enum radv_cmd_buffer_status {
+       RADV_CMD_BUFFER_STATUS_INVALID,
+       RADV_CMD_BUFFER_STATUS_INITIAL,
+       RADV_CMD_BUFFER_STATUS_RECORDING,
+       RADV_CMD_BUFFER_STATUS_EXECUTABLE,
+       RADV_CMD_BUFFER_STATUS_PENDING,
+};
+
 struct radv_cmd_buffer {
        VK_LOADER_DATA                               _loader_data;
 
@@ -867,6 +875,7 @@ struct radv_cmd_buffer {
 
        VkCommandBufferUsageFlags                    usage_flags;
        VkCommandBufferLevel                         level;
+       enum radv_cmd_buffer_status status;
        struct radeon_winsys_cs *cs;
        struct radv_cmd_state state;
        struct radv_vertex_binding                   vertex_bindings[MAX_VBS];

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to