nir: don't create invalid inputs in `nir_create_passthrough_gs`
authorantonino <antonino.maniscalco@collabora.com>
Fri, 5 May 2023 09:53:55 +0000 (11:53 +0200)
committerMarge Bot <emma+marge@anholt.net>
Mon, 15 May 2023 11:04:41 +0000 (11:04 +0000)
The helper was creating input locations for some builtin bariables.

This caused validation errors in zink because those builtins can't be
used as input.

Fixes: d0342e28b32 ("nir: Add helper to create passthrough GS shader")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22871>

src/compiler/nir/nir_passthrough_gs.c

index 64f26a5..dc419b9 100644 (file)
@@ -186,6 +186,11 @@ nir_create_passthrough_gs(const nir_shader_compiler_options *options,
    nir_foreach_shader_out_variable(var, prev_stage) {
       assert(!var->data.patch);
 
+      /* input vars can't be created for those */
+      if (var->data.location == VARYING_SLOT_LAYER ||
+          var->data.location == VARYING_SLOT_VIEW_INDEX)
+         continue;
+
       char name[100];
       if (var->name)
          snprintf(name, sizeof(name), "in_%s", var->name);