summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/glasm/emit_context.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/backend/glasm/emit_context.cpp')
-rw-r--r--src/shader_recompiler/backend/glasm/emit_context.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/shader_recompiler/backend/glasm/emit_context.cpp b/src/shader_recompiler/backend/glasm/emit_context.cpp
index b5b0e2204..e18526816 100644
--- a/src/shader_recompiler/backend/glasm/emit_context.cpp
+++ b/src/shader_recompiler/backend/glasm/emit_context.cpp
@@ -7,6 +7,7 @@
7#include "shader_recompiler/backend/bindings.h" 7#include "shader_recompiler/backend/bindings.h"
8#include "shader_recompiler/backend/glasm/emit_context.h" 8#include "shader_recompiler/backend/glasm/emit_context.h"
9#include "shader_recompiler/frontend/ir/program.h" 9#include "shader_recompiler/frontend/ir/program.h"
10#include "shader_recompiler/profile.h"
10 11
11namespace Shader::Backend::GLASM { 12namespace Shader::Backend::GLASM {
12namespace { 13namespace {
@@ -40,13 +41,21 @@ EmitContext::EmitContext(IR::Program& program, Bindings& bindings, const Profile
40 Add("CBUFFER c{}[]={{program.buffer[{}]}};", desc.index, cbuf_index); 41 Add("CBUFFER c{}[]={{program.buffer[{}]}};", desc.index, cbuf_index);
41 ++cbuf_index; 42 ++cbuf_index;
42 } 43 }
44 u32 ssbo_index{};
43 for (const auto& desc : info.storage_buffers_descriptors) { 45 for (const auto& desc : info.storage_buffers_descriptors) {
44 if (desc.count != 1) { 46 if (desc.count != 1) {
45 throw NotImplementedException("Storage buffer descriptor array"); 47 throw NotImplementedException("Storage buffer descriptor array");
46 } 48 }
49 if (runtime_info.glasm_use_storage_buffers) {
50 Add("STORAGE ssbo{}[]={{program.storage[{}]}};", ssbo_index, bindings.storage_buffer);
51 ++bindings.storage_buffer;
52 ++ssbo_index;
53 }
47 } 54 }
48 if (const size_t num = info.storage_buffers_descriptors.size(); num > 0) { 55 if (!runtime_info.glasm_use_storage_buffers) {
49 Add("PARAM c[{}]={{program.local[0..{}]}};", num, num - 1); 56 if (const size_t num = info.storage_buffers_descriptors.size(); num > 0) {
57 Add("PARAM c[{}]={{program.local[0..{}]}};", num, num - 1);
58 }
50 } 59 }
51 stage = program.stage; 60 stage = program.stage;
52 switch (program.stage) { 61 switch (program.stage) {