<div dir="ltr"><div><div>Agreed, I didn't see that check_explicit_uniform_locations() was<br></div>only used in link_shaders(). I will submit a v2 with those changes.<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 7, 2016 at 11:24 PM, Timothy Arceri <span dir="ltr"><<a href="mailto:timothy.arceri@collabora.com" target="_blank">timothy.arceri@collabora.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Thu, 2016-04-07 at 11:22 -0400, Lars Hamre wrote:<br>
> NOTES:<br>
> * Reposting due to no response last week<br>
> * Someone with access will need to commit this patch after the review<br>
>   process<br>
><br>
> check_explicit_uniform_locations() returns a -1 when the extension<br>
> ARB_explicit_uniform_location is not found.<br>
><br>
> We were storing the result in num_explicit_uniform_locs as an<br>
> unsigned int which caused it to be 4294967295 when a -1 was returned.<br>
><br>
> This in turn would cause the following error during linking:<br>
> error: count of uniform locations > MAX_UNIFORM_LOCATIONS(4294967295<br>
> > 98304)<br>
><br>
> Here are the results from running piglit tests/all with this patch:<br>
> changes:     178<br>
> fixes:       176<br>
> regressions: 2<br>
><br>
> The two regressions are for the following tests:<br>
> glean@glsl1-matrix column check (1)<br>
> glean@glsl1-matrix column check (2)<br>
> which regress from FAIL to CRASH.<br>
><br>
> I am okay with these regressions because the tests are currently<br>
> failing due to the aforementioned linker error.<br>
><br>
> Signed-off-by: Lars Hamre <<a href="mailto:chemecse@gmail.com">chemecse@gmail.com</a>><br>
><br>
> ---<br>
>  src/compiler/glsl/linker.cpp | 6 ++++--<br>
>  1 file changed, 4 insertions(+), 2 deletions(-)<br>
><br>
> diff --git a/src/compiler/glsl/linker.cpp<br>
> b/src/compiler/glsl/linker.cpp<br>
> index cd35464..a0a9104 100644<br>
> --- a/src/compiler/glsl/linker.cpp<br>
> +++ b/src/compiler/glsl/linker.cpp<br>
> @@ -4171,7 +4171,7 @@ link_shaders(struct gl_context *ctx, struct<br>
> gl_shader_program *prog)<br>
><br>
>     tfeedback_decl *tfeedback_decls = NULL;<br>
>     unsigned num_tfeedback_decls = prog-<br>
> >TransformFeedback.NumVarying;<br>
> -   unsigned int num_explicit_uniform_locs = 0;<br>
> +   int num_explicit_uniform_locs = 0;<br>
><br>
>     void *mem_ctx = ralloc_context(NULL); // temporary linker context<br>
><br>
> @@ -4354,6 +4354,8 @@ link_shaders(struct gl_context *ctx, struct<br>
> gl_shader_program *prog)<br>
>     }<br>
><br>
>     num_explicit_uniform_locs = check_explicit_uniform_locations(ctx,<br>
> prog);<br>
> +   if (num_explicit_uniform_locs < 0)<br>
> +      num_explicit_uniform_locs = 0;<br>
<br>
</div></div>Thanks for spotting this. However the just hacks around the problem.<br>
<br>
Since we never do anything with the -1 I would rather<br>
see check_explicit_uniform_locations() changed to return an unsigned 0<br>
rather than -1.<br>
<span class=""><br>
<br>
>     link_assign_subroutine_types(prog);<br>
><br>
>     if (!prog->LinkStatus)<br>
> @@ -4585,7 +4587,7 @@ link_shaders(struct gl_context *ctx, struct<br>
> gl_shader_program *prog)<br>
><br>
>     update_array_sizes(prog);<br>
>     link_assign_uniform_locations(prog, ctx-<br>
> >Const.UniformBooleanTrue,<br>
> -                                 num_explicit_uniform_locs,<br>
> +                                 (unsigned<br>
> int)num_explicit_uniform_locs,<br>
>                                   ctx-<br>
> >Const.MaxUserAssignableUniformLocations);<br>
>     link_assign_atomic_counter_resources(ctx, prog);<br>
>     store_fragdepth_layout(prog);<br>
> --<br>
> 2.5.5<br>
><br>
</span>> _______________________________________________<br>
> mesa-dev mailing list<br>
> <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div><br></div>