diff options
| author | 2019-09-23 22:55:25 -0400 | |
|---|---|---|
| committer | 2019-10-25 09:01:30 -0400 | |
| commit | 8909f52166bf9c27d52b5a722efbd46d1a11e876 (patch) | |
| tree | 2e21bbc3c3f5422325d8003d72cdb4bb120a26e5 /src/video_core/renderer_vulkan | |
| parent | Shader_Cache: setup connection of ConstBufferLocker (diff) | |
| download | yuzu-8909f52166bf9c27d52b5a722efbd46d1a11e876.tar.gz yuzu-8909f52166bf9c27d52b5a722efbd46d1a11e876.tar.xz yuzu-8909f52166bf9c27d52b5a722efbd46d1a11e876.zip | |
Shader_IR: Implement Fast BRX and allow multi-branches in the CFG.
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_shader_decompiler.cpp | 7 |
1 files changed, 7 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 0d943a826..42cf068b6 100644 --- a/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp +++ b/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp | |||
| @@ -1704,6 +1704,13 @@ public: | |||
| 1704 | return expr.value ? decomp.v_true : decomp.v_false; | 1704 | return expr.value ? decomp.v_true : decomp.v_false; |
| 1705 | } | 1705 | } |
| 1706 | 1706 | ||
| 1707 | Id operator()(const ExprGprEqual& expr) { | ||
| 1708 | const Id target = decomp.Constant(decomp.t_uint, expr.value); | ||
| 1709 | const Id gpr = decomp.BitcastTo<Type::Uint>( | ||
| 1710 | decomp.Emit(decomp.OpLoad(decomp.t_float, decomp.registers.at(expr.gpr)))); | ||
| 1711 | return decomp.Emit(decomp.OpLogicalEqual(decomp.t_uint, gpr, target)); | ||
| 1712 | } | ||
| 1713 | |||
| 1707 | Id Visit(const Expr& node) { | 1714 | Id Visit(const Expr& node) { |
| 1708 | return std::visit(*this, *node); | 1715 | return std::visit(*this, *node); |
| 1709 | } | 1716 | } |