summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-09-07 01:19:04 +0200
committerGitHub <noreply@github.com>2018-09-07 01:19:04 +0200
commit6faf1b0972a5bdc563491ca6bc1a9633f32e6666 (patch)
treeb25152a76618497ef6397c3af84b9b0780d80897
parentMerge pull request #1248 from degasus/shader_fix (diff)
parentgl_shader_decompiler: Implement saturate mode for IPA. (diff)
downloadyuzu-6faf1b0972a5bdc563491ca6bc1a9633f32e6666.tar
yuzu-6faf1b0972a5bdc563491ca6bc1a9633f32e6666.tar.gz
yuzu-6faf1b0972a5bdc563491ca6bc1a9633f32e6666.tar.bz2
yuzu-6faf1b0972a5bdc563491ca6bc1a9633f32e6666.tar.lz
yuzu-6faf1b0972a5bdc563491ca6bc1a9633f32e6666.tar.xz
yuzu-6faf1b0972a5bdc563491ca6bc1a9633f32e6666.tar.zst
yuzu-6faf1b0972a5bdc563491ca6bc1a9633f32e6666.zip
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp6
1 files changed, 5 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 781ddb073..841647ebe 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -2197,11 +2197,15 @@ private:
case OpCode::Id::IPA: {
const auto& attribute = instr.attribute.fmt28;
const auto& reg = instr.gpr0;
- ASSERT_MSG(instr.ipa.saturate == 0, "IPA saturate not implemented");
+
Tegra::Shader::IpaMode input_mode{instr.ipa.interp_mode.Value(),
instr.ipa.sample_mode.Value()};
regs.SetRegisterToInputAttibute(reg, attribute.element, attribute.index,
input_mode);
+
+ if (instr.ipa.saturate) {
+ regs.SetRegisterToFloat(reg, 0, regs.GetRegisterAsFloat(reg), 1, 1, true);
+ }
break;
}
case OpCode::Id::SSY: {