From: Timur Kristóf Date: Fri, 17 Feb 2023 22:42:13 +0000 (+0100) Subject: ac/nir/ngg: Fix mesh shader layer on GFX11. X-Git-Tag: upstream/23.3.3~11226 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b2a71c56d95a8a4c5c50ffc0ec802e7c3477d4df;p=platform%2Fupstream%2Fmesa.git ac/nir/ngg: Fix mesh shader layer on GFX11. Signed-off-by: Timur Kristóf Reviewed-by: Samuel Pitoiset Part-of: --- diff --git a/src/amd/common/ac_nir_lower_ngg.c b/src/amd/common/ac_nir_lower_ngg.c index 39fffc0..0d02192 100644 --- a/src/amd/common/ac_nir_lower_ngg.c +++ b/src/amd/common/ac_nir_lower_ngg.c @@ -4259,15 +4259,23 @@ ms_emit_primitive_export(nir_builder *b, if (per_primitive_outputs & export_as_prim_arg_slots) { /* When layer, viewport etc. are per-primitive, they need to be encoded in * the primitive export instruction's second channel. The encoding is: + * + * --- GFX10.3 --- * bits 31..30: VRS rate Y * bits 29..28: VRS rate X * bits 23..20: viewport * bits 19..17: layer + * + * --- GFX11 --- + * bits 31..28: VRS rate enum + * bits 23..20: viewport + * bits 12..00: layer */ prim_exp_arg_ch2 = nir_imm_int(b, 0); if (per_primitive_outputs & VARYING_BIT_LAYER) { - nir_ssa_def *layer = nir_ishl_imm(b, s->outputs[VARYING_SLOT_LAYER][0], 17); + nir_ssa_def *layer = + nir_ishl_imm(b, s->outputs[VARYING_SLOT_LAYER][0], s->gfx_level >= GFX11 ? 0 : 17); prim_exp_arg_ch2 = nir_ior(b, prim_exp_arg_ch2, layer); }