radv: update shader input arguments for GS stage 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
10b97836b9
commit
06598bc707
@@ -456,11 +456,17 @@ declare_unmerged_vs_tes_gs_args(const enum amd_gfx_level gfx_level, const struct
|
|||||||
add_ud_arg(args, 1, AC_ARG_INT, &args->next_stage_pc, AC_UD_NEXT_STAGE_PC);
|
add_ud_arg(args, 1, AC_ARG_INT, &args->next_stage_pc, AC_UD_NEXT_STAGE_PC);
|
||||||
|
|
||||||
/* VGPRs (GS) */
|
/* VGPRs (GS) */
|
||||||
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[0]);
|
if (gfx_level >= GFX12) {
|
||||||
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[1]);
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[0]);
|
||||||
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_prim_id);
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_prim_id);
|
||||||
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_invocation_id);
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[1]);
|
||||||
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[2]);
|
} else {
|
||||||
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[0]);
|
||||||
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[1]);
|
||||||
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_prim_id);
|
||||||
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_invocation_id);
|
||||||
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[2]);
|
||||||
|
}
|
||||||
|
|
||||||
/* Preserved SGPRs */
|
/* Preserved SGPRs */
|
||||||
ac_add_preserved(&args->ac, &args->ac.ring_offsets);
|
ac_add_preserved(&args->ac, &args->ac.ring_offsets);
|
||||||
@@ -493,8 +499,11 @@ declare_unmerged_vs_tes_gs_args(const enum amd_gfx_level gfx_level, const struct
|
|||||||
ac_add_preserved(&args->ac, &args->ac.gs_vtx_offset[0]);
|
ac_add_preserved(&args->ac, &args->ac.gs_vtx_offset[0]);
|
||||||
ac_add_preserved(&args->ac, &args->ac.gs_vtx_offset[1]);
|
ac_add_preserved(&args->ac, &args->ac.gs_vtx_offset[1]);
|
||||||
ac_add_preserved(&args->ac, &args->ac.gs_prim_id);
|
ac_add_preserved(&args->ac, &args->ac.gs_prim_id);
|
||||||
ac_add_preserved(&args->ac, &args->ac.gs_invocation_id);
|
|
||||||
ac_add_preserved(&args->ac, &args->ac.gs_vtx_offset[2]);
|
if (gfx_level < GFX12) {
|
||||||
|
ac_add_preserved(&args->ac, &args->ac.gs_invocation_id);
|
||||||
|
ac_add_preserved(&args->ac, &args->ac.gs_vtx_offset[2]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -781,11 +790,17 @@ declare_shader_args(const struct radv_device *device, const struct radv_graphics
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (previous_stage != MESA_SHADER_MESH || !pdev->mesh_fast_launch_2) {
|
if (previous_stage != MESA_SHADER_MESH || !pdev->mesh_fast_launch_2) {
|
||||||
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[0]);
|
if (gfx_level >= GFX12) {
|
||||||
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[1]);
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[0]);
|
||||||
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_prim_id);
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_prim_id);
|
||||||
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_invocation_id);
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[1]);
|
||||||
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[2]);
|
} else {
|
||||||
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[0]);
|
||||||
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[1]);
|
||||||
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_prim_id);
|
||||||
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_invocation_id);
|
||||||
|
ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.gs_vtx_offset[2]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user