diff options
| author | 2021-05-16 17:52:30 -0300 | |
|---|---|---|
| committer | 2021-07-22 21:51:31 -0400 | |
| commit | db2f0f410810d3d8310a6a476a8bcfd5e509869e (patch) | |
| tree | 8431a001ed82b69250d45047e5efd2405851f92f /src/shader_recompiler/backend | |
| parent | emit_glasm: Add support for reading position attributes (diff) | |
| download | yuzu-db2f0f410810d3d8310a6a476a8bcfd5e509869e.tar.gz yuzu-db2f0f410810d3d8310a6a476a8bcfd5e509869e.tar.xz yuzu-db2f0f410810d3d8310a6a476a8bcfd5e509869e.zip | |
emit_glasm: Enable ARB_draw_buffers when needed
Diffstat (limited to 'src/shader_recompiler/backend')
| -rw-r--r-- | src/shader_recompiler/backend/glasm/emit_context.cpp | 2 | ||||
| -rw-r--r-- | src/shader_recompiler/backend/glasm/emit_glasm.cpp | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/shader_recompiler/backend/glasm/emit_context.cpp b/src/shader_recompiler/backend/glasm/emit_context.cpp index 66c954ff6..4903e9d8e 100644 --- a/src/shader_recompiler/backend/glasm/emit_context.cpp +++ b/src/shader_recompiler/backend/glasm/emit_context.cpp | |||
| @@ -71,7 +71,7 @@ EmitContext::EmitContext(IR::Program& program) { | |||
| 71 | if (index == 0) { | 71 | if (index == 0) { |
| 72 | Add("OUTPUT frag_color0=result.color;"); | 72 | Add("OUTPUT frag_color0=result.color;"); |
| 73 | } else { | 73 | } else { |
| 74 | Add("OUTPUT frag_color{}[]=result.color[{}];", index, index); | 74 | Add("OUTPUT frag_color{}=result.color[{}];", index, index); |
| 75 | } | 75 | } |
| 76 | } | 76 | } |
| 77 | for (size_t index = 0; index < program.info.stores_generics.size(); ++index) { | 77 | for (size_t index = 0; index < program.info.stores_generics.size(); ++index) { |
diff --git a/src/shader_recompiler/backend/glasm/emit_glasm.cpp b/src/shader_recompiler/backend/glasm/emit_glasm.cpp index 0a76423f4..0c591f73c 100644 --- a/src/shader_recompiler/backend/glasm/emit_glasm.cpp +++ b/src/shader_recompiler/backend/glasm/emit_glasm.cpp | |||
| @@ -283,6 +283,10 @@ void SetupOptions(std::string& header, Info info) { | |||
| 283 | if (info.uses_subgroup_shuffles) { | 283 | if (info.uses_subgroup_shuffles) { |
| 284 | header += "OPTION NV_shader_thread_shuffle;"; | 284 | header += "OPTION NV_shader_thread_shuffle;"; |
| 285 | } | 285 | } |
| 286 | const auto non_zero_frag_colors{info.stores_frag_color | std::views::drop(1)}; | ||
| 287 | if (std::ranges::find(non_zero_frag_colors, true) != non_zero_frag_colors.end()) { | ||
| 288 | header += "OPTION ARB_draw_buffers;"; | ||
| 289 | } | ||
| 286 | } | 290 | } |
| 287 | 291 | ||
| 288 | std::string_view StageHeader(Stage stage) { | 292 | std::string_view StageHeader(Stage stage) { |