diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c index d3d54f3b574..771be244749 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.c +++ b/src/freedreno/vulkan/tu_cmd_buffer.c @@ -2076,8 +2076,8 @@ tu_CmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer, for (uint32_t i = 0; i < bindingCount; i++) { TU_FROM_HANDLE(tu_buffer, buf, pBuffers[i]); - uint64_t iova = buf->bo->iova + pOffsets[i]; - uint32_t size = buf->bo->size - pOffsets[i]; + uint64_t iova = buf->bo->iova + buf->bo_offset + pOffsets[i]; + uint32_t size = buf->bo->size - buf->bo_offset - pOffsets[i]; uint32_t idx = i + firstBinding; if (pSizes && pSizes[i] != VK_WHOLE_SIZE) @@ -2129,7 +2129,7 @@ tu_CmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer, tu_cs_emit(cs, CP_MEM_TO_REG_0_REG(REG_A6XX_VPC_SO_BUFFER_OFFSET(idx)) | CP_MEM_TO_REG_0_UNK31 | CP_MEM_TO_REG_0_CNT(1)); - tu_cs_emit_qw(cs, buf->bo->iova + counter_buffer_offset); + tu_cs_emit_qw(cs, buf->bo->iova + buf->bo_offset + counter_buffer_offset); if (offset) { tu_cs_emit_pkt7(cs, CP_REG_RMW, 3); @@ -2195,7 +2195,7 @@ tu_CmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer, tu_cs_emit_pkt7(cs, CP_REG_TO_MEM, 3); tu_cs_emit(cs, CP_REG_TO_MEM_0_REG(REG_A6XX_CP_SCRATCH_REG(0)) | CP_REG_TO_MEM_0_CNT(1)); - tu_cs_emit_qw(cs, buf->bo->iova + counter_buffer_offset); + tu_cs_emit_qw(cs, buf->bo->iova + buf->bo_offset + counter_buffer_offset); } tu_cond_exec_end(cs);