diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index 5660a2a7821..6477f62ed4a 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -586,6 +586,8 @@ nir_visitor::visit(ir_variable *ir) var->data.bindless = ir->data.bindless; var->data.offset = ir->data.offset; var->data.access = (gl_access_qualifier)mem_access; + var->data.has_initializer = ir->data.has_initializer; + var->data.is_implicit_initializer = ir->data.is_implicit_initializer; if (glsl_type_is_image(glsl_without_array(var->type))) { var->data.image.format = ir->data.image_format; diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index 8c9636f2db0..033b6ee3b24 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -616,6 +616,19 @@ typedef struct nir_variable { */ int max_array_access; + /** + * Does this variable have an initializer? + * + * This is used by the linker to cross-validiate initializers of global + * variables. + */ + unsigned has_initializer:1; + + /** + * Is the initializer created by the compiler (glsl_zero_init) + */ + unsigned is_implicit_initializer:1; + /** * Is this varying used by transform feedback? *