glsl/nir: set new_style_shadow for sparse tex ops as necessary
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Fri, 22 Apr 2022 13:05:26 +0000 (09:05 -0400)
committerMarge Bot <emma+marge@anholt.net>
Sun, 24 Apr 2022 15:56:05 +0000 (15:56 +0000)
this needs the sparse result type, which is not the ir type

Fixes: f4a972b7483 ("glsl/nir: convert sparse ir_texture to nir")

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16097>

src/compiler/glsl/glsl_to_nir.cpp

index bbc0aa9..47e9b0d 100644 (file)
@@ -2478,12 +2478,12 @@ nir_visitor::visit(ir_texture *ir)
       (glsl_sampler_dim) ir->sampler->type->sampler_dimensionality;
    instr->is_array = ir->sampler->type->sampler_array;
    instr->is_shadow = ir->sampler->type->sampler_shadow;
-   if (instr->is_shadow)
-      instr->is_new_style_shadow = (ir->type->vector_elements == 1);
 
    const glsl_type *dest_type
       = ir->is_sparse ? ir->type->field_type("texel") : ir->type;
    assert(dest_type != glsl_type::error_type);
+   if (instr->is_shadow)
+      instr->is_new_style_shadow = (dest_type->vector_elements == 1);
    instr->dest_type = nir_get_nir_type_for_glsl_type(dest_type);
    instr->is_sparse = ir->is_sparse;