diff options
| author | 2019-07-11 17:36:23 -0400 | |
|---|---|---|
| committer | 2019-07-11 17:36:23 -0400 | |
| commit | bb67091c774611ce2be1aa461438be3989601e59 (patch) | |
| tree | 58e29bd5d7114019a48a62ffadb8076d73627bee /src/video_core/renderer_vulkan | |
| parent | Merge pull request #2717 from SciresM/unmirror_memory (diff) | |
| parent | shader_ir: Add comments on missing instruction. (diff) | |
| download | yuzu-bb67091c774611ce2be1aa461438be3989601e59.tar.gz yuzu-bb67091c774611ce2be1aa461438be3989601e59.tar.xz yuzu-bb67091c774611ce2be1aa461438be3989601e59.zip | |
Merge pull request #2609 from FernandoS27/new-scan
Implement a New Shader Scanner, Decompile Flow Stack and implement BRX BRA.CC
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_shader_decompiler.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp b/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp index 97ce214b1..1bb04607b 100644 --- a/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp +++ b/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp | |||
| @@ -949,6 +949,14 @@ private: | |||
| 949 | return {}; | 949 | return {}; |
| 950 | } | 950 | } |
| 951 | 951 | ||
| 952 | Id BranchIndirect(Operation operation) { | ||
| 953 | const Id op_a = VisitOperand<Type::Uint>(operation, 0); | ||
| 954 | |||
| 955 | Emit(OpStore(jmp_to, op_a)); | ||
| 956 | BranchingOp([&]() { Emit(OpBranch(continue_label)); }); | ||
| 957 | return {}; | ||
| 958 | } | ||
| 959 | |||
| 952 | Id PushFlowStack(Operation operation) { | 960 | Id PushFlowStack(Operation operation) { |
| 953 | const auto target = std::get_if<ImmediateNode>(&*operation[0]); | 961 | const auto target = std::get_if<ImmediateNode>(&*operation[0]); |
| 954 | ASSERT(target); | 962 | ASSERT(target); |
| @@ -1334,6 +1342,7 @@ private: | |||
| 1334 | &SPIRVDecompiler::ImageStore, | 1342 | &SPIRVDecompiler::ImageStore, |
| 1335 | 1343 | ||
| 1336 | &SPIRVDecompiler::Branch, | 1344 | &SPIRVDecompiler::Branch, |
| 1345 | &SPIRVDecompiler::BranchIndirect, | ||
| 1337 | &SPIRVDecompiler::PushFlowStack, | 1346 | &SPIRVDecompiler::PushFlowStack, |
| 1338 | &SPIRVDecompiler::PopFlowStack, | 1347 | &SPIRVDecompiler::PopFlowStack, |
| 1339 | &SPIRVDecompiler::Exit, | 1348 | &SPIRVDecompiler::Exit, |