radv: do not emit non-existent registers 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
087e49aadb
commit
a8ad33caac
@@ -2043,8 +2043,9 @@ radv_emit_hw_ngg(struct radv_cmd_buffer *cmd_buffer, const struct radv_shader *e
|
||||
break_wave_at_eoi = true;
|
||||
}
|
||||
|
||||
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);
|
||||
if (pdev->info.gfx_level < GFX12)
|
||||
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);
|
||||
@@ -2094,7 +2095,8 @@ radv_emit_hw_ngg(struct radv_cmd_buffer *cmd_buffer, const struct radv_shader *e
|
||||
radeon_set_sh_reg_idx(&pdev->info, cmd_buffer->cs, R_00B204_SPI_SHADER_PGM_RSRC4_GS, 3,
|
||||
shader->info.regs.spi_shader_pgm_rsrc4_gs);
|
||||
|
||||
radeon_set_uconfig_reg(cmd_buffer->cs, R_030980_GE_PC_ALLOC, shader->info.regs.ge_pc_alloc);
|
||||
if (pdev->info.gfx_level < GFX12)
|
||||
radeon_set_uconfig_reg(cmd_buffer->cs, R_030980_GE_PC_ALLOC, shader->info.regs.ge_pc_alloc);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -3123,7 +3125,7 @@ radv_emit_culling(struct radv_cmd_buffer *cmd_buffer)
|
||||
S_028814_POLYMODE_FRONT_PTYPE(d->vk.rs.polygon_mode) | S_028814_POLYMODE_BACK_PTYPE(d->vk.rs.polygon_mode) |
|
||||
S_028814_PROVOKING_VTX_LAST(d->vk.rs.provoking_vertex == VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT);
|
||||
|
||||
if (gfx_level >= GFX10) {
|
||||
if (gfx_level >= GFX10 && gfx_level < GFX12) {
|
||||
/* Ensure that SC processes the primitive group in the same order as PA produced them. Needed
|
||||
* when either POLY_MODE or PERPENDICULAR_ENDCAP_ENA is set.
|
||||
*/
|
||||
@@ -4549,7 +4551,7 @@ radv_emit_framebuffer_state(struct radv_cmd_buffer *cmd_buffer)
|
||||
S_0283D0_VRS_SURFACE_ENABLE(vrs_surface_enable));
|
||||
}
|
||||
|
||||
if (pdev->info.gfx_level >= GFX8) {
|
||||
if (pdev->info.gfx_level >= GFX8 && pdev->info.gfx_level < GFX12) {
|
||||
bool disable_constant_encode = pdev->info.has_dcc_constant_encode;
|
||||
enum amd_gfx_level gfx_level = pdev->info.gfx_level;
|
||||
|
||||
|
@@ -879,7 +879,9 @@ radv_emit_graphics(struct radv_device *device, struct radeon_cmdbuf *cs)
|
||||
radeon_set_context_reg(cs, R_028820_PA_CL_NANINF_CNTL, 0);
|
||||
radeon_set_context_reg(cs, R_028AC0_DB_SRESULTS_COMPARE_STATE0, 0x0);
|
||||
radeon_set_context_reg(cs, R_028AC4_DB_SRESULTS_COMPARE_STATE1, 0x0);
|
||||
radeon_set_context_reg(cs, R_028AC8_DB_PRELOAD_CONTROL, 0x0);
|
||||
|
||||
if (pdev->info.gfx_level < GFX12)
|
||||
radeon_set_context_reg(cs, R_028AC8_DB_PRELOAD_CONTROL, 0x0);
|
||||
}
|
||||
|
||||
radeon_set_context_reg(
|
||||
@@ -1018,11 +1020,14 @@ radv_emit_graphics(struct radv_device *device, struct radeon_cmdbuf *cs)
|
||||
meta_read_policy = no_alloc; /* don't cache reads */
|
||||
}
|
||||
|
||||
radeon_set_context_reg(cs, R_02807C_DB_RMI_L2_CACHE_CONTROL,
|
||||
S_02807C_Z_WR_POLICY(V_02807C_CACHE_STREAM) | S_02807C_S_WR_POLICY(V_02807C_CACHE_STREAM) |
|
||||
S_02807C_HTILE_WR_POLICY(meta_write_policy) |
|
||||
S_02807C_ZPCPSD_WR_POLICY(V_02807C_CACHE_STREAM) | S_02807C_Z_RD_POLICY(no_alloc) |
|
||||
S_02807C_S_RD_POLICY(no_alloc) | S_02807C_HTILE_RD_POLICY(meta_read_policy));
|
||||
if (pdev->info.gfx_level < GFX12) {
|
||||
radeon_set_context_reg(cs, R_02807C_DB_RMI_L2_CACHE_CONTROL,
|
||||
S_02807C_Z_WR_POLICY(V_02807C_CACHE_STREAM) |
|
||||
S_02807C_S_WR_POLICY(V_02807C_CACHE_STREAM) |
|
||||
S_02807C_HTILE_WR_POLICY(meta_write_policy) |
|
||||
S_02807C_ZPCPSD_WR_POLICY(V_02807C_CACHE_STREAM) | S_02807C_Z_RD_POLICY(no_alloc) |
|
||||
S_02807C_S_RD_POLICY(no_alloc) | S_02807C_HTILE_RD_POLICY(meta_read_policy));
|
||||
}
|
||||
|
||||
uint32_t gl2_cc;
|
||||
if (pdev->info.gfx_level >= GFX11) {
|
||||
@@ -1038,7 +1043,9 @@ radv_emit_graphics(struct radv_device *device, struct radeon_cmdbuf *cs)
|
||||
}
|
||||
|
||||
radeon_set_context_reg(cs, R_028410_CB_RMI_GL2_CACHE_CONTROL, gl2_cc | S_028410_DCC_RD_POLICY(meta_read_policy));
|
||||
radeon_set_context_reg(cs, R_028428_CB_COVERAGE_OUT_CONTROL, 0);
|
||||
|
||||
if (pdev->info.gfx_level < GFX12)
|
||||
radeon_set_context_reg(cs, R_028428_CB_COVERAGE_OUT_CONTROL, 0);
|
||||
|
||||
radeon_set_sh_reg_seq(cs, R_00B0C8_SPI_SHADER_USER_ACCUM_PS_0, 4);
|
||||
radeon_emit(cs, 0); /* R_00B0C8_SPI_SHADER_USER_ACCUM_PS_0 */
|
||||
|
Reference in New Issue
Block a user