From bfbc625f797b2612eff9680c9250cbd755f3d0f5 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Tue, 2 Dec 2025 15:47:16 -0800 Subject: [PATCH] tu: Template tu_CmdBeginTransformFeedbackEXT() by CHIP. Gets the right regs for reg packing on 8xx. Part-of: --- src/freedreno/vulkan/tu_cmd_buffer.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/freedreno/vulkan/tu_cmd_buffer.cc b/src/freedreno/vulkan/tu_cmd_buffer.cc index 48de0837bb6..83f814f6582 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.cc +++ b/src/freedreno/vulkan/tu_cmd_buffer.cc @@ -5039,6 +5039,7 @@ tu_CmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer, tu_cond_exec_end(cs); } +template VKAPI_ATTR void VKAPI_CALL tu_CmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, @@ -5053,11 +5054,11 @@ tu_CmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer, CP_COND_REG_EXEC_0_SYSMEM | CP_COND_REG_EXEC_0_BINNING); - tu_cs_emit_regs(cs, A6XX_VPC_SO_OVERRIDE(false)); + tu_cs_emit_regs(cs, VPC_SO_OVERRIDE(CHIP, false)); /* TODO: only update offset for active buffers */ for (uint32_t i = 0; i < IR3_MAX_SO_BUFFERS; i++) - tu_cs_emit_regs(cs, A6XX_VPC_SO_BUFFER_OFFSET(i, cmd->state.streamout_offset[i])); + tu_cs_emit_regs(cs, VPC_SO_BUFFER_OFFSET(CHIP, i, cmd->state.streamout_offset[i])); for (uint32_t i = 0; i < (pCounterBuffers ? counterBufferCount : 0); i++) { uint32_t idx = firstCounterBuffer + i; @@ -5070,14 +5071,14 @@ tu_CmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer, VK_FROM_HANDLE(tu_buffer, buf, pCounterBuffers[i]); tu_cs_emit_pkt7(cs, CP_MEM_TO_REG, 3); - tu_cs_emit(cs, CP_MEM_TO_REG_0_REG(REG_A6XX_VPC_SO_BUFFER_OFFSET(idx)) | + tu_cs_emit(cs, CP_MEM_TO_REG_0_REG(VPC_SO_BUFFER_OFFSET(CHIP, idx).reg) | CP_MEM_TO_REG_0_UNK31 | CP_MEM_TO_REG_0_CNT(1)); tu_cs_emit_qw(cs, vk_buffer_address(&buf->vk, counter_buffer_offset)); if (offset) { tu_cs_emit_pkt7(cs, CP_REG_RMW, 3); - tu_cs_emit(cs, CP_REG_RMW_0_DST_REG(REG_A6XX_VPC_SO_BUFFER_OFFSET(idx)) | + tu_cs_emit(cs, CP_REG_RMW_0_DST_REG(VPC_SO_BUFFER_OFFSET(CHIP, idx).reg) | CP_REG_RMW_0_SRC1_ADD); tu_cs_emit(cs, 0xffffffff); tu_cs_emit(cs, offset); @@ -5086,6 +5087,7 @@ tu_CmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer, tu_cond_exec_end(cs); } +TU_GENX(tu_CmdBeginTransformFeedbackEXT); template VKAPI_ATTR void VKAPI_CALL