From a65216cabe60e13e6ef1b95c8d565faadd7a0f65 Mon Sep 17 00:00:00 2001 From: sagudev <16504129+sagudev@users.noreply.github.com> Date: Wed, 15 Jan 2025 10:19:17 +0100 Subject: [PATCH] [naga] wgsl automatic conversion for override initializers Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com> --- naga/src/front/wgsl/lower/mod.rs | 34 +++++--------------------------- 1 file changed, 5 insertions(+), 29 deletions(-) diff --git a/naga/src/front/wgsl/lower/mod.rs b/naga/src/front/wgsl/lower/mod.rs index 425f86af4b..eb6f919930 100644 --- a/naga/src/front/wgsl/lower/mod.rs +++ b/naga/src/front/wgsl/lower/mod.rs @@ -1106,18 +1106,14 @@ impl<'source, 'temp> Lowerer<'source, 'temp> { .insert(c.name.name, LoweredGlobalDecl::Const(handle)); } ast::GlobalDeclKind::Override(ref o) => { - let init = o - .init - .map(|init| self.expression(init, &mut ctx.as_override())) - .transpose()?; - let inferred_type = init - .map(|init| ctx.as_const().register_type(init)) - .transpose()?; - let explicit_ty = - o.ty.map(|ty| self.resolve_ast_type(ty, &mut ctx)) + o.ty.map(|ast| self.resolve_ast_type(ast, &mut ctx)) .transpose()?; + let mut ectx = ctx.as_override(); + + let (ty, init) = self.type_and_init(o.name, o.init, explicit_ty, &mut ectx)?; + let id = o.id.map(|id| self.const_u32(id, &mut ctx.as_const())) .transpose()?; @@ -1131,26 +1127,6 @@ impl<'source, 'temp> Lowerer<'source, 'temp> { None }; - let ty = match (explicit_ty, inferred_type) { - (Some(explicit_ty), Some(inferred_type)) => { - if explicit_ty == inferred_type { - explicit_ty - } else { - let gctx = ctx.module.to_ctx(); - return Err(Error::InitializationTypeMismatch { - name: o.name.span, - expected: explicit_ty.to_wgsl(&gctx).into(), - got: inferred_type.to_wgsl(&gctx).into(), - }); - } - } - (Some(explicit_ty), None) => explicit_ty, - (None, Some(inferred_type)) => inferred_type, - (None, None) => { - return Err(Error::DeclMissingTypeAndInit(o.name.span)); - } - }; - let handle = ctx.module.overrides.append( crate::Override { name: Some(o.name.name.to_string()),