nir/lower_io: Identify Mesh output as arrayed
authorCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Fri, 30 Apr 2021 07:01:07 +0000 (00:01 -0700)
committerMarge Bot <eric+marge@anholt.net>
Sat, 28 Aug 2021 03:56:42 +0000 (03:56 +0000)
Mesh shader outputs are either:

- non-array builtins
- array builtins that are either per-primitive or per-vertex
- user-defined outputs that must be either per-primitive or per-vertex

So we can identify any array output as "arrayed" for the purposes of
I/O lowering.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10600>

src/compiler/nir/nir_lower_io.c

index c9aa0b2..899f0e0 100644 (file)
@@ -158,7 +158,8 @@ nir_is_arrayed_io(const nir_variable *var, gl_shader_stage stage)
              stage == MESA_SHADER_TESS_EVAL;
 
    if (var->data.mode == nir_var_shader_out)
-      return stage == MESA_SHADER_TESS_CTRL;
+      return stage == MESA_SHADER_TESS_CTRL ||
+             stage == MESA_SHADER_MESH;
 
    return false;
 }