From 69bf2a13f861dbc9d55a0e3ef38fd0b46c125698 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 12 Feb 2025 15:01:24 +0100 Subject: [PATCH] radv/meta: inline copy_buffer() Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/meta/radv_meta_buffer.c | 29 ++++++++++---------------- 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/src/amd/vulkan/meta/radv_meta_buffer.c b/src/amd/vulkan/meta/radv_meta_buffer.c index 36f243ded4a..4363ca2c6ff 100644 --- a/src/amd/vulkan/meta/radv_meta_buffer.c +++ b/src/amd/vulkan/meta/radv_meta_buffer.c @@ -257,10 +257,12 @@ radv_CmdFillBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSi cmd_buffer->state.predicating = old_predicating; } -static void -copy_buffer(struct radv_cmd_buffer *cmd_buffer, struct radv_buffer *src_buffer, struct radv_buffer *dst_buffer, - const VkBufferCopy2 *region) +VKAPI_ATTR void VKAPI_CALL +radv_CmdCopyBuffer2(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2 *pCopyBufferInfo) { + VK_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer); + VK_FROM_HANDLE(radv_buffer, src_buffer, pCopyBufferInfo->srcBuffer); + VK_FROM_HANDLE(radv_buffer, dst_buffer, pCopyBufferInfo->dstBuffer); bool old_predicating; /* VK_EXT_conditional_rendering says that copy commands should not be @@ -269,27 +271,18 @@ copy_buffer(struct radv_cmd_buffer *cmd_buffer, struct radv_buffer *src_buffer, old_predicating = cmd_buffer->state.predicating; cmd_buffer->state.predicating = false; - const uint64_t src_va = src_buffer->addr + region->srcOffset; - const uint64_t dst_va = dst_buffer->addr + region->dstOffset; + for (unsigned r = 0; r < pCopyBufferInfo->regionCount; r++) { + const VkBufferCopy2 *region = &pCopyBufferInfo->pRegions[r]; + const uint64_t src_va = src_buffer->addr + region->srcOffset; + const uint64_t dst_va = dst_buffer->addr + region->dstOffset; - radv_copy_buffer(cmd_buffer, src_buffer->bo, dst_buffer->bo, src_va, dst_va, region->size); + radv_copy_buffer(cmd_buffer, src_buffer->bo, dst_buffer->bo, src_va, dst_va, region->size); + } /* Restore conditional rendering. */ cmd_buffer->state.predicating = old_predicating; } -VKAPI_ATTR void VKAPI_CALL -radv_CmdCopyBuffer2(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2 *pCopyBufferInfo) -{ - VK_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer); - VK_FROM_HANDLE(radv_buffer, src_buffer, pCopyBufferInfo->srcBuffer); - VK_FROM_HANDLE(radv_buffer, dst_buffer, pCopyBufferInfo->dstBuffer); - - for (unsigned r = 0; r < pCopyBufferInfo->regionCount; r++) { - copy_buffer(cmd_buffer, src_buffer, dst_buffer, &pCopyBufferInfo->pRegions[r]); - } -} - void radv_update_buffer_cp(struct radv_cmd_buffer *cmd_buffer, uint64_t va, const void *data, uint64_t size) {