Mesa (main): venus: refactor vn_cmd_submit

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Apr 26 23:56:20 UTC 2022


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

Author: Yiwei Zhang <zzyiwei at chromium.org>
Date:   Tue Apr 26 18:10:05 2022 +0000

venus: refactor vn_cmd_submit

The caller checks cmd->state instead.

Signed-off-by: Yiwei Zhang <zzyiwei at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16110>

---

 src/virtio/vulkan/vn_command_buffer.c | 24 +++++++++++-------------
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git a/src/virtio/vulkan/vn_command_buffer.c b/src/virtio/vulkan/vn_command_buffer.c
index b70fbb1cc18..8ee673b635f 100644
--- a/src/virtio/vulkan/vn_command_buffer.c
+++ b/src/virtio/vulkan/vn_command_buffer.c
@@ -678,33 +678,30 @@ vn_BeginCommandBuffer(VkCommandBuffer commandBuffer,
    return VK_SUCCESS;
 }
 
-static VkResult
+static void
 vn_cmd_submit(struct vn_command_buffer *cmd)
 {
    struct vn_instance *instance = cmd->device->instance;
 
    if (cmd->state != VN_COMMAND_BUFFER_STATE_RECORDING)
-      return VK_ERROR_OUT_OF_HOST_MEMORY;
+      return;
 
    vn_cs_encoder_commit(&cmd->cs);
    if (vn_cs_encoder_get_fatal(&cmd->cs)) {
       cmd->state = VN_COMMAND_BUFFER_STATE_INVALID;
       vn_cs_encoder_reset(&cmd->cs);
-      return VK_ERROR_OUT_OF_HOST_MEMORY;
+      return;
    }
 
    if (unlikely(!instance->renderer->info.supports_blob_id_0))
       vn_instance_wait_roundtrip(instance, cmd->cs.current_buffer_roundtrip);
 
-   VkResult result = vn_instance_ring_submit(instance, &cmd->cs);
-   if (result != VK_SUCCESS) {
+   if (vn_instance_ring_submit(instance, &cmd->cs) != VK_SUCCESS) {
       cmd->state = VN_COMMAND_BUFFER_STATE_INVALID;
-      return result;
+      return;
    }
 
    vn_cs_encoder_reset(&cmd->cs);
-
-   return VK_SUCCESS;
 }
 
 VkResult
@@ -716,6 +713,9 @@ vn_EndCommandBuffer(VkCommandBuffer commandBuffer)
    struct vn_instance *instance = cmd->device->instance;
    size_t cmd_size;
 
+   if (cmd->state != VN_COMMAND_BUFFER_STATE_RECORDING)
+      return vn_error(instance, VK_ERROR_OUT_OF_HOST_MEMORY);
+
    cmd_size = vn_sizeof_vkEndCommandBuffer(commandBuffer);
    if (!vn_cs_encoder_reserve(&cmd->cs, cmd_size)) {
       cmd->state = VN_COMMAND_BUFFER_STATE_INVALID;
@@ -724,11 +724,9 @@ vn_EndCommandBuffer(VkCommandBuffer commandBuffer)
 
    vn_encode_vkEndCommandBuffer(&cmd->cs, 0, commandBuffer);
 
-   VkResult result = vn_cmd_submit(cmd);
-   if (result != VK_SUCCESS) {
-      cmd->state = VN_COMMAND_BUFFER_STATE_INVALID;
-      return vn_error(instance, result);
-   }
+   vn_cmd_submit(cmd);
+   if (cmd->state == VN_COMMAND_BUFFER_STATE_INVALID)
+      return vn_error(instance, VK_ERROR_OUT_OF_HOST_MEMORY);
 
    cmd->state = VN_COMMAND_BUFFER_STATE_EXECUTABLE;
 



More information about the mesa-commit mailing list