summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Lioncash2019-10-15 19:38:47 -0400
committerGravatar Lioncash2019-10-15 19:38:55 -0400
commitb42a74ff2cd621649edd2c21243547efa736271a (patch)
treea69a6bac37c4a884fb58c9e0f0faca7baa2abb74 /src
parentMerge pull request #2977 from lioncash/algorithm (diff)
downloadyuzu-b42a74ff2cd621649edd2c21243547efa736271a.tar.gz
yuzu-b42a74ff2cd621649edd2c21243547efa736271a.tar.xz
yuzu-b42a74ff2cd621649edd2c21243547efa736271a.zip
gl_shader_decompiler: Resolve fallthrough within ExprDecompiler's ExprCondCode operator()
This would previously result in NeverExecute and UnusedIndex being treated as regular predicates.
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index 6a610a3bc..bb972bf37 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -2316,10 +2316,13 @@ public:
2316 switch (index) { 2316 switch (index) {
2317 case Tegra::Shader::Pred::NeverExecute: 2317 case Tegra::Shader::Pred::NeverExecute:
2318 target = "false"; 2318 target = "false";
2319 break;
2319 case Tegra::Shader::Pred::UnusedIndex: 2320 case Tegra::Shader::Pred::UnusedIndex:
2320 target = "true"; 2321 target = "true";
2322 break;
2321 default: 2323 default:
2322 target = decomp.GetPredicate(index); 2324 target = decomp.GetPredicate(index);
2325 break;
2323 } 2326 }
2324 } else if (const auto flag = std::get_if<InternalFlagNode>(&*cc)) { 2327 } else if (const auto flag = std::get_if<InternalFlagNode>(&*cc)) {
2325 target = decomp.GetInternalFlag(flag->GetFlag()); 2328 target = decomp.GetInternalFlag(flag->GetFlag());