Mesa (main): v3dv/cmd_buffer: move cl_emit calls for Draw methods to helpers

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jun 22 10:35:42 UTC 2021


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

Author: Alejandro Piñeiro <apinheiro at igalia.com>
Date:   Tue Jun  8 00:19:55 2021 +0200

v3dv/cmd_buffer: move cl_emit calls for Draw methods to helpers

As we plan to move them to hw-dependant source files, but not the main
entrypoint.

Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11310>

---

 src/broadcom/vulkan/v3dv_cmd_buffer.c | 84 ++++++++++++++++++++++++-----------
 1 file changed, 59 insertions(+), 25 deletions(-)

diff --git a/src/broadcom/vulkan/v3dv_cmd_buffer.c b/src/broadcom/vulkan/v3dv_cmd_buffer.c
index a6d4b2e10d7..d43da41f7ee 100644
--- a/src/broadcom/vulkan/v3dv_cmd_buffer.c
+++ b/src/broadcom/vulkan/v3dv_cmd_buffer.c
@@ -4474,19 +4474,14 @@ v3dv_CmdDraw(VkCommandBuffer commandBuffer,
    cmd_buffer_draw(cmd_buffer, &info);
 }
 
-VKAPI_ATTR void VKAPI_CALL
-v3dv_CmdDrawIndexed(VkCommandBuffer commandBuffer,
-                    uint32_t indexCount,
-                    uint32_t instanceCount,
-                    uint32_t firstIndex,
-                    int32_t vertexOffset,
-                    uint32_t firstInstance)
+static void
+cmd_buffer_emit_draw_indexed(struct v3dv_cmd_buffer *cmd_buffer,
+                             uint32_t indexCount,
+                             uint32_t instanceCount,
+                             uint32_t firstIndex,
+                             int32_t vertexOffset,
+                             uint32_t firstInstance)
 {
-   if (indexCount == 0 || instanceCount == 0)
-      return;
-
-   V3DV_FROM_HANDLE(v3dv_cmd_buffer, cmd_buffer, commandBuffer);
-
    cmd_buffer_emit_pre_draw(cmd_buffer);
 
    struct v3dv_job *job = cmd_buffer->state.job;
@@ -4537,19 +4532,29 @@ v3dv_CmdDrawIndexed(VkCommandBuffer commandBuffer,
 }
 
 VKAPI_ATTR void VKAPI_CALL
-v3dv_CmdDrawIndirect(VkCommandBuffer commandBuffer,
-                     VkBuffer _buffer,
-                     VkDeviceSize offset,
-                     uint32_t drawCount,
-                     uint32_t stride)
+v3dv_CmdDrawIndexed(VkCommandBuffer commandBuffer,
+                    uint32_t indexCount,
+                    uint32_t instanceCount,
+                    uint32_t firstIndex,
+                    int32_t vertexOffset,
+                    uint32_t firstInstance)
 {
-   /* drawCount is the number of draws to execute, and can be zero. */
-   if (drawCount == 0)
+   if (indexCount == 0 || instanceCount == 0)
       return;
 
    V3DV_FROM_HANDLE(v3dv_cmd_buffer, cmd_buffer, commandBuffer);
-   V3DV_FROM_HANDLE(v3dv_buffer, buffer, _buffer);
 
+   cmd_buffer_emit_draw_indexed(cmd_buffer, indexCount, instanceCount,
+                                firstIndex, vertexOffset, firstInstance);
+}
+
+static void
+cmd_buffer_emit_draw_indirect(struct v3dv_cmd_buffer *cmd_buffer,
+                              struct v3dv_buffer *buffer,
+                              VkDeviceSize offset,
+                              uint32_t drawCount,
+                              uint32_t stride)
+{
    cmd_buffer_emit_pre_draw(cmd_buffer);
 
    struct v3dv_job *job = cmd_buffer->state.job;
@@ -4572,11 +4577,11 @@ v3dv_CmdDrawIndirect(VkCommandBuffer commandBuffer,
 }
 
 VKAPI_ATTR void VKAPI_CALL
-v3dv_CmdDrawIndexedIndirect(VkCommandBuffer commandBuffer,
-                            VkBuffer _buffer,
-                            VkDeviceSize offset,
-                            uint32_t drawCount,
-                            uint32_t stride)
+v3dv_CmdDrawIndirect(VkCommandBuffer commandBuffer,
+                     VkBuffer _buffer,
+                     VkDeviceSize offset,
+                     uint32_t drawCount,
+                     uint32_t stride)
 {
    /* drawCount is the number of draws to execute, and can be zero. */
    if (drawCount == 0)
@@ -4585,6 +4590,17 @@ v3dv_CmdDrawIndexedIndirect(VkCommandBuffer commandBuffer,
    V3DV_FROM_HANDLE(v3dv_cmd_buffer, cmd_buffer, commandBuffer);
    V3DV_FROM_HANDLE(v3dv_buffer, buffer, _buffer);
 
+   cmd_buffer_emit_draw_indirect(cmd_buffer, buffer, offset, drawCount, stride);
+}
+
+static void
+cmd_buffer_emit_indexed_indirect(struct v3dv_cmd_buffer *cmd_buffer,
+                                 struct v3dv_buffer *buffer,
+                                 VkDeviceSize offset,
+                                 uint32_t drawCount,
+                                 uint32_t stride)
+
+{
    cmd_buffer_emit_pre_draw(cmd_buffer);
 
    struct v3dv_job *job = cmd_buffer->state.job;
@@ -4607,6 +4623,24 @@ v3dv_CmdDrawIndexedIndirect(VkCommandBuffer commandBuffer,
       prim.address = v3dv_cl_address(buffer->mem->bo,
                                      buffer->mem_offset + offset);
    }
+
+}
+
+VKAPI_ATTR void VKAPI_CALL
+v3dv_CmdDrawIndexedIndirect(VkCommandBuffer commandBuffer,
+                            VkBuffer _buffer,
+                            VkDeviceSize offset,
+                            uint32_t drawCount,
+                            uint32_t stride)
+{
+   /* drawCount is the number of draws to execute, and can be zero. */
+   if (drawCount == 0)
+      return;
+
+   V3DV_FROM_HANDLE(v3dv_cmd_buffer, cmd_buffer, commandBuffer);
+   V3DV_FROM_HANDLE(v3dv_buffer, buffer, _buffer);
+
+   cmd_buffer_emit_indexed_indirect(cmd_buffer, buffer, offset, drawCount, stride);
 }
 
 VKAPI_ATTR void VKAPI_CALL



More information about the mesa-commit mailing list