Reviewed-by: Iago Toral Quiroga <ito...@igalia.com>

On Mon, 2016-12-19 at 15:29 -0800, Kenneth Graunke wrote:
> We were using ir_var_auto for the inlined function parameter
> variables,
> which is wrong, as it suggests that those are real variables declared
> by the program.
> 
> Normally this doesn't matter.  However, if you called built-ins at
> global scope, it would pollute the global variable namespace with
> these new parameter temporaries.  If the shader already had variables
> with those names, the linker might see contradictory global variable
> declarations and raise an error.
> 
> Making them temporaries indicates that these are just things
> generated
> by the compiler internally.  This avoids confusing the linker.
> 
> Fixes a new Piglit test: glsl-fs-multiple-builtins.
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99097
> Reported-by: Niels Ole Salscheider <niels_...@salscheider-online.de>
> Signed-off-by: Kenneth Graunke <kenn...@whitecape.org>
> ---
>  src/compiler/glsl/opt_function_inlining.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/compiler/glsl/opt_function_inlining.cpp
> b/src/compiler/glsl/opt_function_inlining.cpp
> index 62c1f4b..78a726b 100644
> --- a/src/compiler/glsl/opt_function_inlining.cpp
> +++ b/src/compiler/glsl/opt_function_inlining.cpp
> @@ -164,7 +164,7 @@ ir_call::generate_inline(ir_instruction *next_ir)
>        parameters[i] = NULL;
>        } else {
>        parameters[i] = sig_param->clone(ctx, ht);
> -      parameters[i]->data.mode = ir_var_auto;
> +      parameters[i]->data.mode = ir_var_temporary;
>  
>        /* Remove the read-only decoration because we're going to
> write
>         * directly to this variable.  If the cloned variable is
> left
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to