From 7624d6c78e34bb9d111140f84c63d797bc575d67 Mon Sep 17 00:00:00 2001 From: Nicolas Silva Date: Tue, 4 Jul 2023 15:53:29 +0200 Subject: [PATCH] [glsl-out] textureSize level must be a signed integer. (#2397) --- src/back/glsl/mod.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/back/glsl/mod.rs b/src/back/glsl/mod.rs index 03e3338d1a..af7cb522bf 100644 --- a/src/back/glsl/mod.rs +++ b/src/back/glsl/mod.rs @@ -2589,8 +2589,25 @@ impl<'a, W: Write> Writer<'a, W> { write!(self.out, "textureSize(")?; self.write_expr(image, ctx)?; if let Some(expr) = level { + let cast_to_int = matches!( + *ctx.info[expr].ty.inner_with(&self.module.types), + crate::TypeInner::Scalar { + kind: crate::ScalarKind::Uint, + .. + } + ); + write!(self.out, ", ")?; + + if cast_to_int { + write!(self.out, "int(")?; + } + self.write_expr(expr, ctx)?; + + if cast_to_int { + write!(self.out, ")")?; + } } else if !multi { // All textureSize calls requires an lod argument // except for multisampled samplers