From d18a28ae87dc7b09063a4a6071d1799514b7678e Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Thu, 17 Nov 2022 10:17:21 +0800 Subject: [PATCH] ac/nir/ngg,radv: use intrinsic base for instance_rate_inputs check MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Qiang Yu Part-of: --- src/amd/common/ac_nir_lower_ngg.c | 3 +-- src/amd/vulkan/radv_shader.c | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/amd/common/ac_nir_lower_ngg.c b/src/amd/common/ac_nir_lower_ngg.c index 9e44b4a..b198363 100644 --- a/src/amd/common/ac_nir_lower_ngg.c +++ b/src/amd/common/ac_nir_lower_ngg.c @@ -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; diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index 90c8fa3..0eb9a77 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -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); -- 2.7.4