Hey Kenneth,
while hunting the cause of fdo#95285 down, I tested these patches from your
tombraider-2 branch. But when applied the game started crashing, see
<https://bugs.freedesktop.org/show_bug.cgi?id=95285#c4>. Now, it might be that
the omitted "glsl: Make lower_const_arrays_to_uniforms work directly on
constants." was the cause for that and you left it out because of that. If not,
please have a look at <https://bugs.freedesktop.org/show_bug.cgi?id=95285#c4>.
If there is some additional test I should run, let me know.

Cheers,
Kai


Kenneth Graunke wrote on 09.05.2016 08:50:
> The pass ultimately skips over any entries with assignment_count != 1,
> so there's no need to do further work once we've determined that there
> are multiple assignments.
> 
> The constant value could be a large array (i.e. uvec4[327]), at which
> point skipping the constant_expression_value() call (and the clone()
> call within) can save us piles of memory.
> 
> No change in shader-db.
> 
> Signed-off-by: Kenneth Graunke <kenn...@whitecape.org>
> ---
>  src/compiler/glsl/opt_constant_variable.cpp | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/src/compiler/glsl/opt_constant_variable.cpp 
> b/src/compiler/glsl/opt_constant_variable.cpp
> index 3ddb129..1c06ffe 100644
> --- a/src/compiler/glsl/opt_constant_variable.cpp
> +++ b/src/compiler/glsl/opt_constant_variable.cpp
> @@ -102,6 +102,13 @@ ir_constant_variable_visitor::visit_enter(ir_assignment 
> *ir)
>     assert(entry);
>     entry->assignment_count++;
>  
> +   /* If there's more than one assignment, don't bother - we won't do 
> anything
> +    * with this variable anyway, and continuing just wastes memory cloning
> +    * constant expressions.
> +    */
> +   if (entry->assignment_count > 1)
> +      return visit_continue;
> +
>     /* If it's already constant, don't do the work. */
>     if (entry->var->constant_value)
>        return visit_continue;
> 

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to