From 651a321ee211c74fa543865721c07f1d9df03cf2 Mon Sep 17 00:00:00 2001 From: Janne Grunau Date: Fri, 16 Jan 2026 11:52:50 +0100 Subject: [PATCH] hk: Use aligned vector fill in hk_CmdFillBuffer if possible 30% faster with 16KB buffers, more than twice as fast with 8MB and larger buffers. Part-of: --- src/asahi/vulkan/hk_cmd_meta.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/asahi/vulkan/hk_cmd_meta.c b/src/asahi/vulkan/hk_cmd_meta.c index a89255c3f60..abe4eb7d9c4 100644 --- a/src/asahi/vulkan/hk_cmd_meta.c +++ b/src/asahi/vulkan/hk_cmd_meta.c @@ -1493,7 +1493,12 @@ hk_CmdFillBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, uint64_t addr = vk_meta_buffer_address(&dev->vk, dstBuffer, dstOffset, dstRange); - libagx_fill(cmd, agx_1d(range / 4), AGX_BARRIER_ALL, addr, data); + if (util_is_aligned(addr, 16) && util_is_aligned(range, 16)) { + libagx_fill_uint4(cmd, agx_2d(range / 16, 1), AGX_BARRIER_ALL, + addr, 0, data, data, data, data); + } else { + libagx_fill(cmd, agx_1d(range / 4), AGX_BARRIER_ALL, addr, data); + } } VKAPI_ATTR void VKAPI_CALL