glsl: Use nir_var_mem_image for images
authorJason Ekstrand <jason@jlekstrand.net>
Wed, 15 Sep 2021 16:41:09 +0000 (11:41 -0500)
committerMarge Bot <eric+marge@anholt.net>
Fri, 15 Oct 2021 14:58:56 +0000 (14:58 +0000)
We don't use it for bindless images because the uniforms in that case
just contain a bindless handle and aren't an actual image.  Bound
images, on the other hand, go in the nir_var_mem_image class.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4743>

src/compiler/glsl/glsl_to_nir.cpp

index b61b404..1a1252f 100644 (file)
@@ -545,6 +545,8 @@ nir_visitor::visit(ir_variable *ir)
    case ir_var_uniform:
       if (ir->get_interface_type())
          var->data.mode = nir_var_mem_ubo;
+      else if (ir->type->contains_image() && !ir->data.bindless)
+         var->data.mode = nir_var_mem_image;
       else
          var->data.mode = nir_var_uniform;
       break;