summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/glsl/emit_glsl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/backend/glsl/emit_glsl.cpp')
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl.cpp9
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) {