glsl: create a new link_and_validate_uniforms() helper

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>
This commit is contained in:
Timothy Arceri
2016-12-04 21:42:14 +11:00
parent ce4fb3c8a1
commit c054bbf0d4

View 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;