summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2018-04-20 16:17:39 +0200
committerSubv <subv2112@gmail.com>2018-04-21 04:09:34 +0200
commit17a0ef1e1eb65ceb41232e694f779e1645e2b2d7 (patch)
tree99c74915936c3716266b18e6203aad76b9265da0
parentShaderGen: Implemented predicated instruction execution. (diff)
downloadyuzu-17a0ef1e1eb65ceb41232e694f779e1645e2b2d7.tar
yuzu-17a0ef1e1eb65ceb41232e694f779e1645e2b2d7.tar.gz
yuzu-17a0ef1e1eb65ceb41232e694f779e1645e2b2d7.tar.bz2
yuzu-17a0ef1e1eb65ceb41232e694f779e1645e2b2d7.tar.lz
yuzu-17a0ef1e1eb65ceb41232e694f779e1645e2b2d7.tar.xz
yuzu-17a0ef1e1eb65ceb41232e694f779e1645e2b2d7.tar.zst
yuzu-17a0ef1e1eb65ceb41232e694f779e1645e2b2d7.zip
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index 7aaee9464..2395945c3 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -566,10 +566,16 @@ private:
default: {
switch (instr.opcode.EffectiveOpCode()) {
case OpCode::Id::EXIT: {
+ ASSERT_MSG(instr.pred.pred_index == static_cast<u64>(Pred::UnusedIndex),
+ "Predicated exits not implemented");
shader.AddLine("return true;");
offset = PROGRAM_END - 1;
break;
}
+ case OpCode::Id::KIL: {
+ shader.AddLine("discard;");
+ break;
+ }
case OpCode::Id::IPA: {
const auto& attribute = instr.attribute.fmt28;
std::string dest = GetRegister(instr.gpr0);
@@ -589,7 +595,7 @@ private:
}
// Close the predicate condition scope.
- if (instr.pred != Pred::UnusedIndex) {
+ if (instr.pred.pred_index != static_cast<u64>(Pred::UnusedIndex)) {
--shader.scope;
shader.AddLine('}');
}