diff options
| author | 2021-05-27 17:51:00 -0300 | |
|---|---|---|
| committer | 2021-07-22 21:51:34 -0400 | |
| commit | b7764c3a796e53ac74009bc7d7cd153c64b6d743 (patch) | |
| tree | 592a8be7cd43349cbabfc3d84693b443ddc0b5d8 /src/shader_recompiler/frontend/maxwell/translate/translate.cpp | |
| parent | glasm: Use integer lod for TXQ (diff) | |
| download | yuzu-b7764c3a796e53ac74009bc7d7cd153c64b6d743.tar.gz yuzu-b7764c3a796e53ac74009bc7d7cd153c64b6d743.tar.xz yuzu-b7764c3a796e53ac74009bc7d7cd153c64b6d743.zip | |
shader: Handle host exceptions
Diffstat (limited to 'src/shader_recompiler/frontend/maxwell/translate/translate.cpp')
| -rw-r--r-- | src/shader_recompiler/frontend/maxwell/translate/translate.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/shader_recompiler/frontend/maxwell/translate/translate.cpp b/src/shader_recompiler/frontend/maxwell/translate/translate.cpp index 0f4e7a251..8e3c4c5d5 100644 --- a/src/shader_recompiler/frontend/maxwell/translate/translate.cpp +++ b/src/shader_recompiler/frontend/maxwell/translate/translate.cpp | |||
| @@ -30,16 +30,21 @@ void Translate(Environment& env, IR::Block* block, u32 location_begin, u32 locat | |||
| 30 | TranslatorVisitor visitor{env, *block}; | 30 | TranslatorVisitor visitor{env, *block}; |
| 31 | for (Location pc = location_begin; pc != location_end; ++pc) { | 31 | for (Location pc = location_begin; pc != location_end; ++pc) { |
| 32 | const u64 insn{env.ReadInstruction(pc.Offset())}; | 32 | const u64 insn{env.ReadInstruction(pc.Offset())}; |
| 33 | const Opcode opcode{Decode(insn)}; | 33 | try { |
| 34 | switch (opcode) { | 34 | const Opcode opcode{Decode(insn)}; |
| 35 | switch (opcode) { | ||
| 35 | #define INST(name, cute, mask) \ | 36 | #define INST(name, cute, mask) \ |
| 36 | case Opcode::name: \ | 37 | case Opcode::name: \ |
| 37 | Invoke<&TranslatorVisitor::name>(visitor, pc, insn); \ | 38 | Invoke<&TranslatorVisitor::name>(visitor, pc, insn); \ |
| 38 | break; | 39 | break; |
| 39 | #include "shader_recompiler/frontend/maxwell/maxwell.inc" | 40 | #include "shader_recompiler/frontend/maxwell/maxwell.inc" |
| 40 | #undef OPCODE | 41 | #undef OPCODE |
| 41 | default: | 42 | default: |
| 42 | throw LogicError("Invalid opcode {}", opcode); | 43 | throw LogicError("Invalid opcode {}", opcode); |
| 44 | } | ||
| 45 | } catch (Exception& exception) { | ||
| 46 | exception.Prepend(fmt::format("Translate {}: ", Decode(insn))); | ||
| 47 | throw; | ||
| 43 | } | 48 | } |
| 44 | } | 49 | } |
| 45 | } | 50 | } |