<div dir="ltr">Thank you for reviewing. The change has been run through both Piglit and CTS. I'll ask Tapani to take another look just in case.</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 17, 2016 at 4:20 PM, Ilia Mirkin <span dir="ltr"><<a href="mailto:imirkin@alum.mit.edu" target="_blank">imirkin@alum.mit.edu</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 Wed, Feb 17, 2016 at 8:49 AM, Plamena Manolova<br>
<<a href="mailto:plamena.manolova@intel.com">plamena.manolova@intel.com</a>> wrote:<br>
> This patch moves the calculation of current uniforms to<br>
> link_uniforms, which makes use of UniformRemapTable which<br>
> stores all the reserved uniform locations.<br>
><br>
> Location assignment for implicit uniforms now tries to use<br>
> any gaps left in the table after the location assignment<br>
> for explicit uniforms. This gives us more space to store more<br>
> uniforms.<br>
><br>
> Patch is based on earlier patch with following changes/additions:<br>
><br>
>    1: Move the counting of explicit locations to<br>
>       check_explicit_uniform_locations and then pass<br>
>       the number to link_assign_uniform_locations.<br>
>    2: Count the number of empty slots in UniformRemapTable<br>
>       and store them in a list_head.<br>
>    3: Try to find an empty slot for implicit locations from<br>
>       the list, if that fails resize UniformRemapTable.<br>
><br>
> Fixes following CTS tests:<br>
>    ES31-CTS.explicit_uniform_location.uniform-loc-mix-with-implicit-max<br>
>    ES31-CTS.explicit_uniform_location.uniform-loc-mix-with-implicit-max-array<br>
><br>
> Signed-off-by: Tapani Pälli <<a href="mailto:tapani.palli@intel.com">tapani.palli@intel.com</a>><br>
> Signed-off-by: Plamena Manolova <<a href="mailto:plamena.manolova@intel.com">plamena.manolova@intel.com</a>><br>
> Bugzilla: <a href="https://bugs.freedesktop.org/show_bug.cgi?id=93696" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=93696</a><br>
> ---<br>
>  src/compiler/glsl/link_uniforms.cpp | 80 ++++++++++++++++++++++++++++++++-----<br>
>  src/compiler/glsl/linker.cpp        | 70 +++++++++++++++++++++-----------<br>
>  src/compiler/glsl/linker.h          | 17 +++++++-<br>
>  src/mesa/main/mtypes.h              |  8 ++++<br>
>  4 files changed, 140 insertions(+), 35 deletions(-)<br>
><br>
</div></div><span class="">> diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp<br>
> index bad1c17..5326bfd 100644<br>
> --- a/src/compiler/glsl/linker.cpp<br>
> +++ b/src/compiler/glsl/linker.cpp<br>
</span><span class="">> @@ -4129,6 +4148,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)<br>
><br>
>     tfeedback_decl *tfeedback_decls = NULL;<br>
>     unsigned num_tfeedback_decls = prog->TransformFeedback.NumVarying;<br>
> +   unsigned int num_explicit_uniform_locs = 0;<br>
<br>
</span>This initializer seems unnecessary, since you initialize it<br>
unconditionally further down. Otherwise this change is<br>
<br>
Reviewed-by: Ilia Mirkin <<a href="mailto:imirkin@alum.mit.edu">imirkin@alum.mit.edu</a>><br>
<br>
I assume you've also run this through piglit (if not, please do). It<br>
may be good for Tapani to have another look at this since he<br>
originally tried to implement this and is likely more aware of the<br>
various pitfalls.<br>
<br>
Cheers,<br>
<br>
  -ilia<br>
</blockquote></div><br></div>