tu: Template tu_CmdBeginTransformFeedbackEXT() by CHIP.

Gets the right regs for reg packing on 8xx.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38796>
This commit is contained in:
Emma Anholt 2025-12-02 15:47:16 -08:00 committed by Marge Bot
parent b69aa77456
commit bfbc625f79

View file

@ -5039,6 +5039,7 @@ tu_CmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer,
tu_cond_exec_end(cs);
}
template <chip CHIP>
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 <chip CHIP>
VKAPI_ATTR void VKAPI_CALL