mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 06:40:11 +01:00
radeonsi: precompute num_interp for si_emit_spi_map
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12343>
This commit is contained in:
parent
46802f7b60
commit
57f9452b46
2 changed files with 9 additions and 5 deletions
|
|
@ -869,6 +869,7 @@ struct si_shader {
|
|||
unsigned spi_shader_z_format;
|
||||
unsigned spi_shader_col_format;
|
||||
unsigned cb_shader_mask;
|
||||
unsigned num_interp;
|
||||
} ps;
|
||||
} ctx_reg;
|
||||
|
||||
|
|
|
|||
|
|
@ -1721,10 +1721,13 @@ static void si_shader_ps(struct si_screen *sscreen, struct si_shader *shader)
|
|||
shader->ctx_reg.ps.spi_ps_input_ena = input_ena;
|
||||
shader->ctx_reg.ps.spi_ps_input_addr = shader->config.spi_ps_input_addr;
|
||||
|
||||
unsigned num_interp = si_get_ps_num_interp(shader);
|
||||
|
||||
/* Set interpolation controls. */
|
||||
spi_ps_in_control = S_0286D8_NUM_INTERP(si_get_ps_num_interp(shader)) |
|
||||
spi_ps_in_control = S_0286D8_NUM_INTERP(num_interp) |
|
||||
S_0286D8_PS_W32_EN(sscreen->ps_wave_size == 32);
|
||||
|
||||
shader->ctx_reg.ps.num_interp = num_interp;
|
||||
shader->ctx_reg.ps.spi_baryc_cntl = spi_baryc_cntl;
|
||||
shader->ctx_reg.ps.spi_ps_in_control = spi_ps_in_control;
|
||||
shader->ctx_reg.ps.spi_shader_z_format =
|
||||
|
|
@ -3589,7 +3592,7 @@ static void si_emit_spi_map(struct si_context *sctx)
|
|||
struct si_shader *ps = sctx->shader.ps.current;
|
||||
struct si_shader *vs;
|
||||
struct si_shader_info *psinfo = ps ? &ps->selector->info : NULL;
|
||||
unsigned i, num_interp, num_written = 0;
|
||||
unsigned i, num_written = 0;
|
||||
unsigned spi_ps_input_cntl[32];
|
||||
|
||||
if (!ps || !ps->selector->info.num_inputs)
|
||||
|
|
@ -3601,9 +3604,6 @@ static void si_emit_spi_map(struct si_context *sctx)
|
|||
else
|
||||
vs = si_get_vs(sctx)->current;
|
||||
|
||||
num_interp = si_get_ps_num_interp(ps);
|
||||
assert(num_interp > 0);
|
||||
|
||||
for (i = 0; i < psinfo->num_inputs; i++) {
|
||||
unsigned semantic = psinfo->input[i].semantic;
|
||||
unsigned interpolate = psinfo->input[i].interpolate;
|
||||
|
|
@ -3624,6 +3624,9 @@ static void si_emit_spi_map(struct si_context *sctx)
|
|||
false);
|
||||
}
|
||||
}
|
||||
|
||||
unsigned num_interp = ps->ctx_reg.ps.num_interp;
|
||||
assert(num_interp > 0);
|
||||
assert(num_interp == num_written);
|
||||
|
||||
/* R_028644_SPI_PS_INPUT_CNTL_0 */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue