From 679b6a308f077121b6f9568aa167d998015049dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Capucho?= Date: Tue, 1 Jun 2021 19:21:49 +0100 Subject: [PATCH] [glsl-in] Fix emitting issues --- src/front/glsl/ast.rs | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/front/glsl/ast.rs b/src/front/glsl/ast.rs index 491af32c66..ed2eecc8c1 100644 --- a/src/front/glsl/ast.rs +++ b/src/front/glsl/ast.rs @@ -204,8 +204,6 @@ impl<'function> Context<'function> { emitter: Emitter::default(), }; - this.emit_start(); - for &(ref name, handle) in program.constants.iter() { let expr = this.expressions.append(Expression::Constant(handle)); let var = VariableReference { @@ -218,24 +216,32 @@ impl<'function> Context<'function> { this.lookup_global_var_exps.insert(name.into(), var); } + this.emit_start(); + for &(ref name, lookup) in program.global_variables.iter() { this.emit_flush(body); let GlobalLookup { kind, entry_arg } = lookup; let (expr, load) = match kind { - GlobalLookupKind::Variable(v) => ( - Expression::GlobalVariable(v), - program.module.global_variables[v].class != StorageClass::Handle, - ), + GlobalLookupKind::Variable(v) => { + let res = ( + this.expressions.append(Expression::GlobalVariable(v)), + program.module.global_variables[v].class != StorageClass::Handle, + ); + this.emit_start(); + + res + } GlobalLookupKind::BlockSelect(handle, index) => { let base = this.expressions.append(Expression::GlobalVariable(handle)); + this.emit_start(); + let expr = this + .expressions + .append(Expression::AccessIndex { base, index }); - (Expression::AccessIndex { base, index }, true) + (expr, true) } }; - let expr = this.expressions.append(expr); - this.emit_start(); - let var = VariableReference { expr, load: if load {