From 6e7d3c4b3e5f0214aa1faeb2839f3f8718d1747a Mon Sep 17 00:00:00 2001 From: Samson <16504129+sagudev@users.noreply.github.com> Date: Mon, 20 Jan 2025 18:59:11 +0100 Subject: [PATCH] [naga] Explicitly use global const ctx in offset (#6945) * Fix as_const on expr ctx Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com> * fixup Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com> --------- Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com> --- naga/src/front/wgsl/lower/mod.rs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/naga/src/front/wgsl/lower/mod.rs b/naga/src/front/wgsl/lower/mod.rs index eb6f919930..cf050281c0 100644 --- a/naga/src/front/wgsl/lower/mod.rs +++ b/naga/src/front/wgsl/lower/mod.rs @@ -372,6 +372,7 @@ pub struct ExpressionContext<'source, 'temp, 'out> { } impl<'source, 'temp, 'out> ExpressionContext<'source, 'temp, 'out> { + #[allow(dead_code)] fn as_const(&mut self) -> ExpressionContext<'source, '_, '_> { ExpressionContext { globals: self.globals, @@ -379,7 +380,21 @@ impl<'source, 'temp, 'out> ExpressionContext<'source, 'temp, 'out> { ast_expressions: self.ast_expressions, const_typifier: self.const_typifier, module: self.module, - expr_type: ExpressionContextType::Constant(None), + expr_type: ExpressionContextType::Constant(match self.expr_type { + ExpressionContextType::Runtime(ref mut local_expression_context) + | ExpressionContextType::Constant(Some(ref mut local_expression_context)) => { + Some(LocalExpressionContext { + local_table: local_expression_context.local_table, + function: local_expression_context.function, + block: local_expression_context.block, + emitter: local_expression_context.emitter, + typifier: local_expression_context.typifier, + local_expression_kind_tracker: local_expression_context + .local_expression_kind_tracker, + }) + } + ExpressionContextType::Constant(None) | ExpressionContextType::Override => None, + }), global_expression_kind_tracker: self.global_expression_kind_tracker, } } @@ -2903,7 +2918,7 @@ impl<'source, 'temp> Lowerer<'source, 'temp> { let offset = args .next() - .map(|arg| self.expression(arg, &mut ctx.as_const())) + .map(|arg| self.expression(arg, &mut ctx.as_global().as_const())) .ok() .transpose()?;