diff options
author | Jeroen Bakker <jeroen@blender.org> | 2022-01-19 12:28:19 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2022-01-19 12:28:19 +0300 |
commit | 71386c08f110d402a7b4f5fbd5a7629829d8364f (patch) | |
tree | c14ce043ed5df4ac74b0034ef9722991ac288688 /source | |
parent | eb63646605ddce336da7a8779ab86336133786b1 (diff) |
Fix T95039,T94998: Shaders compilation errors on Mac.
Cause was incorrect logic when generating the resource layout. It the
explicit_location_support setting was ignored and the binding were
generated for image, uniform buffers and storage buffers.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/gpu/opengl/gl_shader.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/source/blender/gpu/opengl/gl_shader.cc b/source/blender/gpu/opengl/gl_shader.cc index fe5ffe5a2ad..9af5aeb3582 100644 --- a/source/blender/gpu/opengl/gl_shader.cc +++ b/source/blender/gpu/opengl/gl_shader.cc @@ -285,8 +285,7 @@ static std::ostream &print_qualifier(std::ostream &os, const Qualifier &qualifie static void print_resource(std::ostream &os, const ShaderCreateInfo::Resource &res) { - if (res.bind_type != ShaderCreateInfo::Resource::BindType::SAMPLER || - GLContext::explicit_location_support) { + if (GLContext::explicit_location_support) { os << "layout(binding = " << res.slot; if (res.bind_type == ShaderCreateInfo::Resource::BindType::IMAGE) { os << ", " << res.image.format; @@ -299,6 +298,9 @@ static void print_resource(std::ostream &os, const ShaderCreateInfo::Resource &r } os << ") "; } + else if (res.bind_type == ShaderCreateInfo::Resource::BindType::UNIFORM_BUFFER) { + os << "layout(std140) "; + } int64_t array_offset; StringRef name_no_array; |