ac/nir/ngg,radv: use intrinsic base for instance_rate_inputs check

radeonsi use packed location base while radv use un-packed location.
So we adjust instance_rate_inputs in each driver to hide the difference.
Note the attribute slot number is less than 16, so we can shift
instance_rate_inputs in radv by VERT_ATTRIB_GENERIC0 which is 16.

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19868>
This commit is contained in:
Qiang Yu
2022-11-17 10:17:21 +08:00
committed by Marge Bot
parent 9cec1ed51d
commit d18a28ae87
2 changed files with 2 additions and 3 deletions
+1 -2
View File
@@ -856,8 +856,7 @@ cleanup_culling_shader_after_dce(nir_shader *shader,
uses_vs_instance_id = true;
break;
case nir_intrinsic_load_input:
if (state->options->instance_rate_inputs &
(1u << (nir_intrinsic_base(intrin) - VERT_ATTRIB_GENERIC0)))
if (state->options->instance_rate_inputs & BITFIELD_BIT(nir_intrinsic_base(intrin)))
uses_vs_instance_id = true;
else
uses_vs_vertex_id = true;
+1 -1
View File
@@ -1461,7 +1461,7 @@ void radv_lower_ngg(struct radv_device *device, struct radv_pipeline_stage *ngg_
options.early_prim_export = info->has_ngg_early_prim_export;
options.passthrough = info->is_ngg_passthrough;
options.primitive_id_location = info->outinfo.export_prim_id ? VARYING_SLOT_PRIMITIVE_ID : -1;
options.instance_rate_inputs = pl_key->vs.instance_rate_inputs;
options.instance_rate_inputs = pl_key->vs.instance_rate_inputs << VERT_ATTRIB_GENERIC0;
NIR_PASS_V(nir, ac_nir_lower_ngg_nogs, &options);