diff options
Diffstat (limited to 'src/shader_recompiler/backend/glsl/emit_glsl.cpp')
| -rw-r--r-- | src/shader_recompiler/backend/glsl/emit_glsl.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl.cpp b/src/shader_recompiler/backend/glsl/emit_glsl.cpp index b189f6c11..3e6add7cd 100644 --- a/src/shader_recompiler/backend/glsl/emit_glsl.cpp +++ b/src/shader_recompiler/backend/glsl/emit_glsl.cpp | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | #include <ranges> | 5 | #include <ranges> |
| 6 | #include <string> | 6 | #include <string> |
| 7 | 7 | ||
| 8 | #include "common/alignment.h" | ||
| 8 | #include "shader_recompiler/backend/glsl/emit_context.h" | 9 | #include "shader_recompiler/backend/glsl/emit_context.h" |
| 9 | #include "shader_recompiler/backend/glsl/emit_glsl.h" | 10 | #include "shader_recompiler/backend/glsl/emit_glsl.h" |
| 10 | #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h" | 11 | #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h" |
| @@ -159,8 +160,7 @@ void EmitCode(EmitContext& ctx, const IR::Program& program) { | |||
| 159 | ctx.var_alloc.Consume(node.data.repeat.cond)); | 160 | ctx.var_alloc.Consume(node.data.repeat.cond)); |
| 160 | break; | 161 | break; |
| 161 | default: | 162 | default: |
| 162 | throw NotImplementedException("AbstractSyntaxNode::Type {}", node.type); | 163 | throw NotImplementedException("AbstractSyntaxNode Type {}", node.type); |
| 163 | break; | ||
| 164 | } | 164 | } |
| 165 | } | 165 | } |
| 166 | } | 166 | } |
| @@ -209,10 +209,11 @@ std::string EmitGLSL(const Profile& profile, const RuntimeInfo& runtime_info, IR | |||
| 209 | const std::string version{fmt::format("#version 450{}\n", GlslVersionSpecifier(ctx))}; | 209 | const std::string version{fmt::format("#version 450{}\n", GlslVersionSpecifier(ctx))}; |
| 210 | ctx.header.insert(0, version); | 210 | ctx.header.insert(0, version); |
| 211 | if (program.local_memory_size > 0) { | 211 | if (program.local_memory_size > 0) { |
| 212 | ctx.header += fmt::format("uint lmem[{}];", program.local_memory_size / 4); | 212 | ctx.header += fmt::format("uint lmem[{}];", Common::AlignUp(program.local_memory_size, 4)); |
| 213 | } | 213 | } |
| 214 | if (program.shared_memory_size > 0) { | 214 | if (program.shared_memory_size > 0) { |
| 215 | ctx.header += fmt::format("shared uint smem[{}];", program.shared_memory_size / 4); | 215 | ctx.header += |
| 216 | fmt::format("shared uint smem[{}];", Common::AlignUp(program.shared_memory_size, 4)); | ||
| 216 | } | 217 | } |
| 217 | ctx.header += "\nvoid main(){\n"; | 218 | ctx.header += "\nvoid main(){\n"; |
| 218 | if (program.stage == Stage::VertexA || program.stage == Stage::VertexB) { | 219 | if (program.stage == Stage::VertexA || program.stage == Stage::VertexB) { |