When we encounter a bindless image here, lower_deref returns a
NULL-pointer, and calling record_images_used will try to dereference
that NULL-pointer.
So let's dig out the var from the source instruction instead of the
result of the lowering.
Fixes:
5910c938a29 ("nir/glsl: gather bitmask of images used by program")
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9895>
static void
record_images_used(struct shader_info *info,
- nir_deref_instr *deref)
+ nir_intrinsic_instr *instr)
{
- nir_variable *var = nir_deref_instr_get_variable(deref);
+ nir_variable *var =
+ nir_deref_instr_get_variable(nir_src_as_deref(instr->src[0]));
/* Structs have been lowered already, so get_aoa_size is sufficient. */
const unsigned size =
nir_deref_instr *deref =
lower_deref(b, state, nir_src_as_deref(instr->src[0]));
- record_images_used(&state->shader->info, deref);
+ record_images_used(&state->shader->info, instr);
/* don't lower bindless: */
if (!deref)