From 1ffa6154444960a5fb28712d49ca3426be58fc41 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 27 Jan 2021 17:05:30 -0500 Subject: [PATCH] radv: track whether gl_BaseInstance is used Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_shader.h | 1 + src/amd/vulkan/radv_shader_info.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h index 7eed1ed60ce..2d0e0e6bf83 100644 --- a/src/amd/vulkan/radv_shader.h +++ b/src/amd/vulkan/radv_shader.h @@ -270,6 +270,7 @@ struct radv_shader_info { bool tcs_in_out_eq; uint64_t tcs_temp_only_input_mask; uint8_t num_linked_outputs; + bool needs_base_instance; } vs; struct { uint8_t output_usage_mask[VARYING_SLOT_VAR31 + 1]; diff --git a/src/amd/vulkan/radv_shader_info.c b/src/amd/vulkan/radv_shader_info.c index afa86204578..75e9fd12339 100644 --- a/src/amd/vulkan/radv_shader_info.c +++ b/src/amd/vulkan/radv_shader_info.c @@ -158,6 +158,9 @@ gather_intrinsic_info(const nir_shader *nir, const nir_intrinsic_instr *instr, case nir_intrinsic_load_draw_id: info->vs.needs_draw_id = true; break; + case nir_intrinsic_load_base_instance: + info->vs.needs_base_instance = true; + break; case nir_intrinsic_load_instance_id: info->vs.needs_instance_id = true; break; @@ -323,8 +326,10 @@ gather_info_input_decl_vs(const nir_shader *nir, const nir_variable *var, for (unsigned i = 0; i < attrib_count; ++i) { unsigned attrib_index = var->data.location + i - VERT_ATTRIB_GENERIC0; - if (key->vs.instance_rate_inputs & (1u << attrib_index)) + if (key->vs.instance_rate_inputs & (1u << attrib_index)) { info->vs.needs_instance_id = true; + info->vs.needs_base_instance = true; + } } }