glsl: create a new link_and_validate_uniforms() helper
authorTimothy Arceri <timothy.arceri@collabora.com>
Sun, 4 Dec 2016 10:42:14 +0000 (21:42 +1100)
committerTimothy Arceri <timothy.arceri@collabora.com>
Thu, 19 Jan 2017 04:55:02 +0000 (15:55 +1100)
Currently this just breaks up the linking code a bit but in the
future i965 will call this from the backend via Driver.LinkShader()
so that we can do NIR optimisations before assigning uniform
locations.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/compiler/glsl/linker.cpp

index 61360df8a6e2a21d197dbdb179574f81a5a426c0..4db3ad1dea4383e560150c68506dd6d2257547d5 100644 (file)
@@ -4531,6 +4531,22 @@ disable_varying_optimizations_for_sso(struct gl_shader_program *prog)
    }
 }
 
+static void
+link_and_validate_uniforms(struct gl_context *ctx,
+                           struct gl_shader_program *prog,
+                           unsigned num_explicit_uniform_locs)
+{
+   update_array_sizes(prog);
+   link_assign_uniform_locations(prog, ctx, num_explicit_uniform_locs);
+
+   link_assign_atomic_counter_resources(ctx, prog);
+   link_calculate_subroutine_compat(prog);
+   check_resources(ctx, prog);
+   check_subroutine_resources(prog);
+   check_image_resources(ctx, prog);
+   link_check_atomic_counter_resources(ctx, prog);
+}
+
 static bool
 link_varyings_and_uniforms(unsigned first, unsigned last,
                            unsigned num_explicit_uniform_locs,
@@ -4579,15 +4595,7 @@ link_varyings_and_uniforms(unsigned first, unsigned last,
    if (!link_varyings(prog, first, last, ctx, mem_ctx))
       return false;
 
-   update_array_sizes(prog);
-   link_assign_uniform_locations(prog, ctx, num_explicit_uniform_locs);
-   link_assign_atomic_counter_resources(ctx, prog);
-
-   link_calculate_subroutine_compat(prog);
-   check_resources(ctx, prog);
-   check_subroutine_resources(prog);
-   check_image_resources(ctx, prog);
-   link_check_atomic_counter_resources(ctx, prog);
+   link_and_validate_uniforms(ctx, prog, num_explicit_uniform_locs);
 
    if (!prog->data->LinkStatus)
       return false;