From 470214cb82facb6eeff7b5583ab84e63912287e1 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Mon, 6 Mar 2023 16:26:14 -0800 Subject: [PATCH] glsl_to_nir: Use a variable's constant_value if it wasn't const-propped out. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit glsl has been constant-propagating out references to ir->constant_value (the value of a variable declared as const), but we can get rid of that whole pass if we just have glsl-to-nir hand the constant propagating problem off to NIR. Reviewed-by: Alyssa Rosenzweig Reviewed-by: Timothy Arceri Reviewed-by: Marek Olšák Part-of: --- src/compiler/glsl/glsl_to_nir.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index 9f791198dac..9032f760ec4 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -707,7 +707,13 @@ nir_visitor::visit(ir_variable *ir) var->state_slots = NULL; } - var->constant_initializer = constant_copy(ir->constant_initializer, var); + /* Values declared const will have ir->constant_value instead of + * ir->constant_initializer. + */ + if (ir->constant_initializer) + var->constant_initializer = constant_copy(ir->constant_initializer, var); + else + var->constant_initializer = constant_copy(ir->constant_value, var); if (var->data.mode == nir_var_function_temp) nir_function_impl_add_variable(impl, var);