radv: fix wave32 support with ESO

For example when RADV_PERFTEST=gewave32 is used, the vgt shader key
was incorrect.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28151>
This commit is contained in:
Samuel Pitoiset 2024-03-13 12:48:39 +01:00 committed by Marge Bot
parent e1c73db01c
commit 1a20942f6a
3 changed files with 6 additions and 13 deletions

View file

@ -9178,18 +9178,8 @@ radv_emit_graphics_shaders(struct radv_cmd_buffer *cmd_buffer)
}
/* Emit graphics states related to shaders. */
struct radv_vgt_shader_key vgt_shader_cfg_key = {
.tess = !!cmd_buffer->state.shaders[MESA_SHADER_TESS_CTRL],
.gs = !!cmd_buffer->state.shaders[MESA_SHADER_GEOMETRY],
.ngg = last_vgt_shader->info.is_ngg,
.ngg_passthrough = last_vgt_shader->info.is_ngg_passthrough,
.ngg_streamout = last_vgt_shader->info.is_ngg && last_vgt_shader->info.so.num_outputs > 0,
};
if (cmd_buffer->state.shaders[MESA_SHADER_MESH]) {
vgt_shader_cfg_key.mesh = 1;
vgt_shader_cfg_key.mesh_scratch_ring = cmd_buffer->state.shaders[MESA_SHADER_MESH]->info.ms.needs_ms_scratch_ring;
}
const struct radv_vgt_shader_key vgt_shader_cfg_key =
radv_get_vgt_shader_key(cmd_buffer->device, cmd_buffer->state.shaders, cmd_buffer->state.gs_copy_shader);
radv_emit_vgt_gs_mode(device, cs, last_vgt_shader);
radv_emit_vgt_vertex_reuse(device, cs, radv_get_shader(cmd_buffer->state.shaders, MESA_SHADER_TESS_EVAL));

View file

@ -3567,7 +3567,7 @@ radv_emit_vgt_vertex_reuse(const struct radv_device *device, struct radeon_cmdbu
radeon_set_context_reg(ctx_cs, R_028C58_VGT_VERTEX_REUSE_BLOCK_CNTL, S_028C58_VTX_REUSE_DEPTH(vtx_reuse_depth));
}
static struct radv_vgt_shader_key
struct radv_vgt_shader_key
radv_get_vgt_shader_key(const struct radv_device *device, struct radv_shader **shaders,
const struct radv_shader *gs_copy_shader)
{

View file

@ -3472,6 +3472,9 @@ radv_get_num_vertices_per_prim(const struct radv_graphics_state_key *gfx_state)
uint32_t radv_get_vgt_gs_out(struct radv_shader **shaders, uint32_t primitive_topology);
struct radv_vgt_shader_key radv_get_vgt_shader_key(const struct radv_device *device, struct radv_shader **shaders,
const struct radv_shader *gs_copy_shader);
static inline uint32_t
radv_translate_fill(VkPolygonMode func)
{