Module: Mesa Branch: main Commit: efc363a7ce667c7638c89e282cb4b365a71da894 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=efc363a7ce667c7638c89e282cb4b365a71da894
Author: Alejandro PiƱeiro <[email protected]> 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 <[email protected]> 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 _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
