glsl: Fix shared and local memory declarations

account for the fact that program.*memory_size is in units of bytes.
This commit is contained in:
ameerj 2021-06-25 16:34:40 -04:00
parent 8289eb108f
commit 65daec8b75

View File

@ -5,7 +5,7 @@
#include <ranges> #include <ranges>
#include <string> #include <string>
#include "common/alignment.h" #include "common/div_ceil.h"
#include "common/settings.h" #include "common/settings.h"
#include "shader_recompiler/backend/glsl/emit_context.h" #include "shader_recompiler/backend/glsl/emit_context.h"
#include "shader_recompiler/backend/glsl/emit_glsl.h" #include "shader_recompiler/backend/glsl/emit_glsl.h"
@ -219,11 +219,11 @@ std::string EmitGLSL(const Profile& profile, const RuntimeInfo& runtime_info, IR
ctx.header.insert(0, version); ctx.header.insert(0, version);
if (program.shared_memory_size > 0) { if (program.shared_memory_size > 0) {
ctx.header += ctx.header +=
fmt::format("shared uint smem[{}];", Common::AlignUp(program.shared_memory_size, 4)); fmt::format("shared uint smem[{}];", Common::DivCeil(program.shared_memory_size, 4U));
} }
ctx.header += "void main(){\n"; ctx.header += "void main(){\n";
if (program.local_memory_size > 0) { if (program.local_memory_size > 0) {
ctx.header += fmt::format("uint lmem[{}];", Common::AlignUp(program.local_memory_size, 4)); ctx.header += fmt::format("uint lmem[{}];", Common::DivCeil(program.local_memory_size, 4U));
} }
DefineVariables(ctx, ctx.header); DefineVariables(ctx, ctx.header);
if (ctx.uses_cc_carry) { if (ctx.uses_cc_carry) {