diff options
Diffstat (limited to 'src/shader_recompiler/frontend')
| -rw-r--r-- | src/shader_recompiler/frontend/maxwell/program.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/shader_recompiler/frontend/maxwell/program.cpp b/src/shader_recompiler/frontend/maxwell/program.cpp index a4fa4319d..0d3f00699 100644 --- a/src/shader_recompiler/frontend/maxwell/program.cpp +++ b/src/shader_recompiler/frontend/maxwell/program.cpp | |||
| @@ -88,17 +88,20 @@ void AddNVNStorageBuffers(IR::Program& program) { | |||
| 88 | }()}; | 88 | }()}; |
| 89 | auto& descs{program.info.storage_buffers_descriptors}; | 89 | auto& descs{program.info.storage_buffers_descriptors}; |
| 90 | for (u32 index = 0; index < num_buffers; ++index) { | 90 | for (u32 index = 0; index < num_buffers; ++index) { |
| 91 | if (!program.info.nvn_buffer_used[index]) { | ||
| 92 | continue; | ||
| 93 | } | ||
| 91 | const u32 offset{base + index * descriptor_size}; | 94 | const u32 offset{base + index * descriptor_size}; |
| 92 | const auto it{std::ranges::find(descs, offset, &StorageBufferDescriptor::cbuf_offset)}; | 95 | const auto it{std::ranges::find(descs, offset, &StorageBufferDescriptor::cbuf_offset)}; |
| 93 | if (it != descs.end()) { | 96 | if (it != descs.end()) { |
| 97 | it->is_written |= program.info.stores_global_memory; | ||
| 94 | continue; | 98 | continue; |
| 95 | } | 99 | } |
| 96 | // Assume these are written for now | ||
| 97 | descs.push_back({ | 100 | descs.push_back({ |
| 98 | .cbuf_index = driver_cbuf, | 101 | .cbuf_index = driver_cbuf, |
| 99 | .cbuf_offset = offset, | 102 | .cbuf_offset = offset, |
| 100 | .count = 1, | 103 | .count = 1, |
| 101 | .is_written = true, | 104 | .is_written = program.info.stores_global_memory, |
| 102 | }); | 105 | }); |
| 103 | } | 106 | } |
| 104 | } | 107 | } |