radv: update configuring NGG states on GFX12
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29417>
This commit is contained in:

committed by
Marge Bot

parent
2f5937dd36
commit
5b4a50a3b7
@@ -2056,18 +2056,34 @@ radv_emit_hw_ngg(struct radv_cmd_buffer *cmd_buffer, const struct radv_shader *e
|
||||
break_wave_at_eoi = true;
|
||||
}
|
||||
|
||||
if (pdev->info.gfx_level < GFX12)
|
||||
if (pdev->info.gfx_level >= GFX12) {
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_028818_PA_CL_VS_OUT_CNTL, RADV_TRACKED_PA_CL_VS_OUT_CNTL,
|
||||
shader->info.regs.pa_cl_vs_out_cntl);
|
||||
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_028B3C_VGT_GS_INSTANCE_CNT, RADV_TRACKED_VGT_GS_INSTANCE_CNT,
|
||||
shader->info.regs.vgt_gs_instance_cnt);
|
||||
|
||||
radeon_set_uconfig_reg(cmd_buffer->cs, R_030988_VGT_PRIMITIVEID_EN,
|
||||
shader->info.regs.ngg.vgt_primitiveid_en | S_028A84_PRIMITIVEID_EN(es_enable_prim_id));
|
||||
|
||||
radeon_opt_set_context_reg2(cmd_buffer, R_028648_SPI_SHADER_IDX_FORMAT, RADV_TRACKED_SPI_SHADER_IDX_FORMAT,
|
||||
shader->info.regs.ngg.spi_shader_idx_format, shader->info.regs.spi_shader_pos_format);
|
||||
} else {
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_02881C_PA_CL_VS_OUT_CNTL, RADV_TRACKED_PA_CL_VS_OUT_CNTL,
|
||||
shader->info.regs.pa_cl_vs_out_cntl);
|
||||
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_028B90_VGT_GS_INSTANCE_CNT, RADV_TRACKED_VGT_GS_INSTANCE_CNT,
|
||||
shader->info.regs.vgt_gs_instance_cnt);
|
||||
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_028A84_VGT_PRIMITIVEID_EN, RADV_TRACKED_VGT_PRIMITIVEID_EN,
|
||||
shader->info.regs.ngg.vgt_primitiveid_en | S_028A84_PRIMITIVEID_EN(es_enable_prim_id));
|
||||
|
||||
radeon_opt_set_context_reg2(cmd_buffer, R_028708_SPI_SHADER_IDX_FORMAT, RADV_TRACKED_SPI_SHADER_IDX_FORMAT,
|
||||
shader->info.regs.ngg.spi_shader_idx_format, shader->info.regs.spi_shader_pos_format);
|
||||
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_0286C4_SPI_VS_OUT_CONFIG, RADV_TRACKED_SPI_VS_OUT_CONFIG,
|
||||
shader->info.regs.spi_vs_out_config);
|
||||
|
||||
radeon_opt_set_context_reg2(cmd_buffer, R_028708_SPI_SHADER_IDX_FORMAT, RADV_TRACKED_SPI_SHADER_IDX_FORMAT,
|
||||
shader->info.regs.ngg.spi_shader_idx_format, shader->info.regs.spi_shader_pos_format);
|
||||
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_02881C_PA_CL_VS_OUT_CNTL, RADV_TRACKED_PA_CL_VS_OUT_CNTL,
|
||||
shader->info.regs.pa_cl_vs_out_cntl);
|
||||
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_028A84_VGT_PRIMITIVEID_EN, RADV_TRACKED_VGT_PRIMITIVEID_EN,
|
||||
shader->info.regs.ngg.vgt_primitiveid_en | S_028A84_PRIMITIVEID_EN(es_enable_prim_id));
|
||||
}
|
||||
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP, RADV_TRACKED_GE_MAX_OUTPUT_PER_SUBGROUP,
|
||||
shader->info.regs.ngg.ge_max_output_per_subgroup);
|
||||
@@ -2075,9 +2091,6 @@ radv_emit_hw_ngg(struct radv_cmd_buffer *cmd_buffer, const struct radv_shader *e
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_028B4C_GE_NGG_SUBGRP_CNTL, RADV_TRACKED_GE_NGG_SUBGRP_CNTL,
|
||||
shader->info.regs.ngg.ge_ngg_subgrp_cntl);
|
||||
|
||||
radeon_opt_set_context_reg(cmd_buffer, R_028B90_VGT_GS_INSTANCE_CNT, RADV_TRACKED_VGT_GS_INSTANCE_CNT,
|
||||
shader->info.regs.vgt_gs_instance_cnt);
|
||||
|
||||
uint32_t ge_cntl = shader->info.regs.ngg.ge_cntl;
|
||||
if (pdev->info.gfx_level >= GFX11) {
|
||||
ge_cntl |= S_03096C_BREAK_PRIMGRP_AT_EOI(break_wave_at_eoi);
|
||||
|
Reference in New Issue
Block a user