[Mesa-dev] [PATCH] glsl: Use ir_var_temporary when generating inline functions.
Ilia Mirkin
imirkin at alum.mit.edu
Mon Dec 19 23:34:45 UTC 2016
Makes sense.
Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
On Mon, Dec 19, 2016 at 6:33 PM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> 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_ole at salscheider-online.de>
>> Signed-off-by: Kenneth Graunke <kenneth at 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list