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