<div dir="ltr"><div dir="ltr">Hi Timothy,<div><br></div><div>Thanks for the review. Piglit patch is updated with the additional out var: <a href="https://patchwork.freedesktop.org/patch/258899/">https://patchwork.freedesktop.org/patch/258899/</a></div><div>Original reporter confirmed that issue is finally fixed with the current patch and closed it.</div><div><br></div><div>Can I ask to push the patch please ?</div><div><br></div><div>Regards,</div><div>Vadym </div></div></div><br><div class="gmail_quote"><div dir="ltr">сб, 27 окт. 2018 г. в 1:21, Timothy Arceri <<a href="mailto:tarceri@itsqueeze.com">tarceri@itsqueeze.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Wed, Oct 24, 2018, at 3:28 AM, Vadym Shovkoplias wrote:<br>
> Since out variables are copied from shader objects instruction<br>
> streams to linked shader instruction steam it should be cloned<br>
> at first to keep source instruction steam unaltered.<br>
> <br>
> Fixes: 966a797e433 glsl/linker: Link all out vars from a shader<br>
> objects on a single stage<br>
> Bugzilla: <a href="https://bugs.freedesktop.org/show_bug.cgi?id=105731" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=105731</a><br>
> Signed-off-by: Vadym Shovkoplias <<a href="mailto:vadym.shovkoplias@globallogic.com" target="_blank">vadym.shovkoplias@globallogic.com</a>><br>
<br>
Reviewed-by: Timothy Arceri <<a href="mailto:tarceri@itsqueeze.com" target="_blank">tarceri@itsqueeze.com</a>><br>
<br>
Also please either update the existing piglit or add a new one to better cover the use of the freed vars. From the bug report it seems adding another out var is enough to do it. Thanks.<br>
<br>
> ---<br>
>  src/compiler/glsl/linker.cpp | 3 ++-<br>
>  1 file changed, 2 insertions(+), 1 deletion(-)<br>
> <br>
> diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp<br>
> index 7db34ebf95..8b1b03322a 100644<br>
> --- a/src/compiler/glsl/linker.cpp<br>
> +++ b/src/compiler/glsl/linker.cpp<br>
> @@ -2269,10 +2269,11 @@ link_output_variables(struct gl_linked_shader <br>
> *linked_shader,<br>
>           if (ir->ir_type != ir_type_variable)<br>
>              continue;<br>
>  <br>
> -         ir_variable *const var = (ir_variable *) ir;<br>
> +         ir_variable *var = (ir_variable *) ir;<br>
>  <br>
>           if (var->data.mode == ir_var_shader_out &&<br>
>                 !symbols->get_variable(var->name)) {<br>
> +            var = var->clone(linked_shader, NULL);<br>
>              symbols->add_variable(var);<br>
>              linked_shader->ir->push_head(var);<br>
>           }<br>
> -- <br>
> 2.18.0<br>
> <br>
</blockquote></div>