[Mesa-dev] [PATCH 1/5] glsl: Make opt_constant_variable() bail in useless cases.
Ian Romanick
idr at freedesktop.org
Mon May 9 17:42:44 UTC 2016
On 05/09/2016 08:50 AM, Kenneth Graunke wrote:
> 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.
Any change in run time?
This seems like a good change either way. This patch is
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
>
> Signed-off-by: Kenneth Graunke <kenneth at 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;
>
More information about the mesa-dev
mailing list