diff --git a/src/front/glsl/builtins.rs b/src/front/glsl/builtins.rs index dedaf93dc1..905f039d3c 100644 --- a/src/front/glsl/builtins.rs +++ b/src/front/glsl/builtins.rs @@ -995,6 +995,9 @@ fn inject_standard_builtins( .push(module.add_builtin(args, MacroCall::Clamp(size))) } } + "barrier" => declaration + .overloads + .push(module.add_builtin(Vec::new(), MacroCall::Barrier)), // Add common builtins with floats _ => inject_common_builtin(declaration, module, name, 4), } @@ -1587,6 +1590,7 @@ pub enum MacroCall { Clamp(Option), BitCast(Sk), Derivate(DerivativeAxis), + Barrier, } impl MacroCall { @@ -1992,6 +1996,12 @@ impl MacroCall { Span::default(), body, ), + MacroCall::Barrier => { + ctx.emit_flush(body); + ctx.emit_start(); + body.push(crate::Statement::Barrier(crate::Barrier::all()), meta); + return Ok(None); + } })) } }