From 6e37f336bd1a095de3e49ca8e2bcd28607657b29 Mon Sep 17 00:00:00 2001 From: Igor Shaposhnik Date: Tue, 2 Mar 2021 19:12:00 +0000 Subject: [PATCH] [glsl-out] Set workgroup_size for compute shaders --- src/back/glsl/mod.rs | 10 ++++++++++ tests/out/empty-Compute.glsl.snap | 2 ++ 2 files changed, 12 insertions(+) diff --git a/src/back/glsl/mod.rs b/src/back/glsl/mod.rs index c5de5a1d8e..d5a091a866 100644 --- a/src/back/glsl/mod.rs +++ b/src/back/glsl/mod.rs @@ -376,6 +376,16 @@ impl<'a, W: Write> Writer<'a, W> { writeln!(self.out)?; } + if self.options.shader_stage == ShaderStage::Compute { + let workgroup_size = self.entry_point.workgroup_size; + writeln!( + self.out, + "layout(local_size_x = {}, local_size_y = {}, local_size_z = {}) in;", + workgroup_size[0], workgroup_size[1], workgroup_size[2] + )?; + writeln!(self.out)?; + } + // Enable early depth tests if needed if let Some(depth_test) = self.entry_point.early_depth_test { writeln!(self.out, "layout(early_fragment_tests) in;")?; diff --git a/tests/out/empty-Compute.glsl.snap b/tests/out/empty-Compute.glsl.snap index 2a8a2b72e1..1ec91e280b 100644 --- a/tests/out/empty-Compute.glsl.snap +++ b/tests/out/empty-Compute.glsl.snap @@ -6,6 +6,8 @@ expression: string precision highp float; +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; + void main() { return; }