Patch changes link_assign_uniform_locations to return bool to indicate success and adds context as a parameter so that function can access constant variables in the context.
Signed-off-by: Tapani Pälli <tapani.pa...@intel.com> --- src/glsl/link_uniforms.cpp | 9 +++++---- src/glsl/linker.cpp | 5 ++++- src/glsl/linker.h | 5 +++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/glsl/link_uniforms.cpp b/src/glsl/link_uniforms.cpp index 3fedf31..9c959f6 100644 --- a/src/glsl/link_uniforms.cpp +++ b/src/glsl/link_uniforms.cpp @@ -792,8 +792,9 @@ link_set_image_access_qualifiers(struct gl_shader_program *prog) } } -void -link_assign_uniform_locations(struct gl_shader_program *prog) +bool +link_assign_uniform_locations(struct gl_context *ctx, + struct gl_shader_program *prog) { ralloc_free(prog->UniformStorage); prog->UniformStorage = NULL; @@ -875,7 +876,7 @@ link_assign_uniform_locations(struct gl_shader_program *prog) /* On the outside chance that there were no uniforms, bail out. */ if (num_user_uniforms == 0) - return; + return true; struct gl_uniform_storage *uniforms = rzalloc_array(prog, struct gl_uniform_storage, num_user_uniforms); @@ -952,5 +953,5 @@ link_assign_uniform_locations(struct gl_shader_program *prog) link_set_image_access_qualifiers(prog); link_set_uniform_initializers(prog); - return; + return true; } diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index 43db824..c31948e 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -2445,7 +2445,10 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) goto done; update_array_sizes(prog); - link_assign_uniform_locations(prog); + + if (!link_assign_uniform_locations(ctx, prog)) + goto done; + link_assign_atomic_counter_resources(ctx, prog); store_fragdepth_layout(prog); diff --git a/src/glsl/linker.h b/src/glsl/linker.h index 130915d..f91b49e 100644 --- a/src/glsl/linker.h +++ b/src/glsl/linker.h @@ -33,8 +33,9 @@ link_function_calls(gl_shader_program *prog, gl_shader *main, extern void link_invalidate_variable_locations(exec_list *ir); -extern void -link_assign_uniform_locations(struct gl_shader_program *prog); +extern bool +link_assign_uniform_locations(struct gl_context *ctx, + struct gl_shader_program *prog); extern void link_set_uniform_initializers(struct gl_shader_program *prog); -- 1.8.3.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev