From: Timothy Arceri Date: Mon, 16 Sep 2019 09:39:40 +0000 (+1000) Subject: radeonsi/nir: fix number of used samplers X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=741cff91d3fbf920cc196d2607090d1350cb1ab6;p=mesa.git radeonsi/nir: fix number of used samplers Commit f3e978db incorrectly assumed the maximum number of samplers was equal to the max number of defined samplers e.g. where bindings skip slots. This fixes an assert in si_nir_load_sampler_desc() for an enemy territory quake wars shader. And fixes potential bugs with incorrect bounds limiting in the same code for production builds of mesa. Fixes: f3e978db ("radeonsi/nir: Remove uniform variable scanning") Reviewed-by: Connor Abbott --- diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c index 4970b01fd73..85cf53848e6 100644 --- a/src/gallium/drivers/radeonsi/si_shader_nir.c +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c @@ -783,7 +783,7 @@ void si_nir_scan_shader(const struct nir_shader *nir, if (nir->num_uniforms > 0) info->const_buffers_declared |= 1; info->images_declared = u_bit_consecutive(0, nir->info.num_images); - info->samplers_declared = u_bit_consecutive(0, nir->info.num_textures); + info->samplers_declared = nir->info.textures_used; info->num_written_clipdistance = nir->info.clip_distance_array_size; info->num_written_culldistance = nir->info.cull_distance_array_size;