From 5be3b1c081002d4c6132b394c00ba06c1f2a5c8c Mon Sep 17 00:00:00 2001 From: Jose Maria Casanova Crespo Date: Fri, 8 May 2026 11:21:12 +0200 Subject: [PATCH] v3dv: include mem_offset in vkCmdFillBuffer destination v3dv_CmdFillBuffer was passing only the user-supplied dstOffset to meta_fill_buffer, ignoring the destination VkBuffer's mem_offset. When several VkBuffers share one VkDeviceMemory at different offsets (sub-allocation) the fill landed on whichever VkBuffer was bound at offset 0 of the memory object instead of the requested one. Fixes: 5ed78d91fed ("v3dv: implement vkCmdFillBuffer") Assisted-by: Claude Opus 4.7 Reviewed-by: Iago Toral Quiroga (cherry picked from commit 8bd7f1d44bd00362a6a0db7614ef53a8b81b3db8) Part-of: --- .pick_status.json | 2 +- src/broadcom/vulkan/v3dv_meta_copy.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 75d7fd720d6..439fb096290 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1394,7 +1394,7 @@ "description": "v3dv: include mem_offset in vkCmdFillBuffer destination", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "5ed78d91fed6ba269c524703174032b7a71f8a93", "notes": null diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c index 0e554df6ea3..b253e46a8b3 100644 --- a/src/broadcom/vulkan/v3dv_meta_copy.c +++ b/src/broadcom/vulkan/v3dv_meta_copy.c @@ -1851,7 +1851,7 @@ v3dv_CmdFillBuffer(VkCommandBuffer commandBuffer, } v3d_X((&cmd_buffer->device->devinfo), meta_fill_buffer) - (cmd_buffer, bo, dstOffset, size, data); + (cmd_buffer, bo, dst_buffer->mem_offset + dstOffset, size, data); cmd_buffer->state.is_transfer = false; }