On Monday, December 19, 2016 3:29:13 PM PST 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
That should be Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99154 (fixed locally) > 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 >
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev