diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/engines/shader_bytecode.h | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h index 51dcc0d08..d748026b8 100644 --- a/src/video_core/engines/shader_bytecode.h +++ b/src/video_core/engines/shader_bytecode.h | |||
| @@ -414,6 +414,7 @@ class OpCode { | |||
| 414 | public: | 414 | public: |
| 415 | enum class Id { | 415 | enum class Id { |
| 416 | KIL, | 416 | KIL, |
| 417 | SSY, | ||
| 417 | BFE_C, | 418 | BFE_C, |
| 418 | BFE_R, | 419 | BFE_R, |
| 419 | BFE_IMM, | 420 | BFE_IMM, |
| @@ -603,6 +604,7 @@ private: | |||
| 603 | std::vector<Matcher> table = { | 604 | std::vector<Matcher> table = { |
| 604 | #define INST(bitstring, op, type, name) Detail::GetMatcher(bitstring, op, type, name) | 605 | #define INST(bitstring, op, type, name) Detail::GetMatcher(bitstring, op, type, name) |
| 605 | INST("111000110011----", Id::KIL, Type::Flow, "KIL"), | 606 | INST("111000110011----", Id::KIL, Type::Flow, "KIL"), |
| 607 | INST("111000101001----", Id::SSY, Type::Flow, "SSY"), | ||
| 606 | INST("111000100100----", Id::BRA, Type::Flow, "BRA"), | 608 | INST("111000100100----", Id::BRA, Type::Flow, "BRA"), |
| 607 | INST("1110111111011---", Id::LD_A, Type::Memory, "LD_A"), | 609 | INST("1110111111011---", Id::LD_A, Type::Memory, "LD_A"), |
| 608 | INST("1110111110010---", Id::LD_C, Type::Memory, "LD_C"), | 610 | INST("1110111110010---", Id::LD_C, Type::Memory, "LD_C"), |
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index 07a90f5ad..37fbb94da 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp | |||
| @@ -1478,6 +1478,11 @@ private: | |||
| 1478 | regs.SetRegisterToInputAttibute(instr.gpr0, attribute.element, attribute.index); | 1478 | regs.SetRegisterToInputAttibute(instr.gpr0, attribute.element, attribute.index); |
| 1479 | break; | 1479 | break; |
| 1480 | } | 1480 | } |
| 1481 | case OpCode::Id::SSY: { | ||
| 1482 | // The SSY opcode tells the GPU where to re-converge divergent execution paths, we | ||
| 1483 | // can ignore this when generating GLSL code. | ||
| 1484 | break; | ||
| 1485 | } | ||
| 1481 | default: { | 1486 | default: { |
| 1482 | NGLOG_CRITICAL(HW_GPU, "Unhandled instruction: {}", opcode->GetName()); | 1487 | NGLOG_CRITICAL(HW_GPU, "Unhandled instruction: {}", opcode->GetName()); |
| 1483 | UNREACHABLE(); | 1488 | UNREACHABLE(); |