nir/gl_nir_linker: Call add_vars_with_modes once for GL_PROGRAM_INPUT
authorJason Ekstrand <jason@jlekstrand.net>
Tue, 21 Jul 2020 16:55:27 +0000 (11:55 -0500)
committerMarge Bot <eric+marge@anholt.net>
Wed, 29 Jul 2020 17:38:58 +0000 (17:38 +0000)
Now that nir_foreach_variable_with_modes can handle multiple modes at
one time, we can simplify things a bit and only walk the list once.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5966>

src/compiler/glsl/gl_nir_linker.c

index 68ecc7e5851a7c9ead7069cf4e412c5a6849d9fc..aa8f0f3083be039cebe4edaf1b0c65336dacc004 100644 (file)
@@ -311,12 +311,12 @@ add_shader_variable(const struct gl_context *ctx,
 }
 
 static bool
-add_vars_with_mode(const struct gl_context *ctx,
-                   struct gl_shader_program *prog, struct set *resource_set,
-                   nir_shader *nir, nir_variable_mode mode,
-                   unsigned stage, GLenum programInterface)
+add_vars_with_modes(const struct gl_context *ctx,
+                    struct gl_shader_program *prog, struct set *resource_set,
+                    nir_shader *nir, nir_variable_mode modes,
+                    unsigned stage, GLenum programInterface)
 {
-   nir_foreach_variable_with_modes(var, nir, mode) {
+   nir_foreach_variable_with_modes(var, nir, modes) {
       if (var->data.how_declared == nir_var_hidden)
          continue;
 
@@ -405,18 +405,14 @@ add_interface_variables(const struct gl_context *ctx,
 
    switch (programInterface) {
    case GL_PROGRAM_INPUT: {
-      bool result = add_vars_with_mode(ctx, prog, resource_set,
-                                       nir, nir_var_shader_in,
-                                       stage, programInterface);
-      result &= add_vars_with_mode(ctx, prog, resource_set,
-                                   nir, nir_var_system_value,
-                                   stage, programInterface);
-      return result;
+      return add_vars_with_modes(ctx, prog, resource_set,
+                                 nir, nir_var_shader_in | nir_var_system_value,
+                                 stage, programInterface);
    }
    case GL_PROGRAM_OUTPUT:
-      return add_vars_with_mode(ctx, prog, resource_set,
-                                nir, nir_var_shader_out,
-                                stage, programInterface);
+      return add_vars_with_modes(ctx, prog, resource_set,
+                                 nir, nir_var_shader_out,
+                                 stage, programInterface);
    default:
       assert("!Should not get here");
       break;