diff options
| author | bunnei <bunneidev@gmail.com> | 2016-03-16 13:17:07 -0400 |
|---|---|---|
| committer | bunnei <bunneidev@gmail.com> | 2016-03-16 13:17:07 -0400 |
| commit | caba93fa455ff52a297db057ccae5d5108b115b9 (patch) | |
| tree | 8d7e8bfe85f72eaff15209cb7eccb391b84d25e5 /src/video_core/shader/shader_interpreter.cpp | |
| parent | becb758a84c3086b7d0cc14dd6312a2f194581c2 (diff) | |
| parent | 9aad2f29bb5106c840badcce8027f3e0271dfe1f (diff) | |
Merge pull request #1479 from JayFoxRox/mad-encoding
Fix MAD/MADI encoding
Diffstat (limited to 'src/video_core/shader/shader_interpreter.cpp')
| -rw-r--r-- | src/video_core/shader/shader_interpreter.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/video_core/shader/shader_interpreter.cpp b/src/video_core/shader/shader_interpreter.cpp index 79fcc56b9..295a2466b 100644 --- a/src/video_core/shader/shader_interpreter.cpp +++ b/src/video_core/shader/shader_interpreter.cpp @@ -413,9 +413,12 @@ void RunInterpreter(UnitState<Debug>& state) { bool is_inverted = (instr.opcode.Value().EffectiveOpCode() == OpCode::Id::MADI); + const int address_offset = (instr.mad.address_register_index == 0) + ? 0 : state.address_registers[instr.mad.address_register_index - 1]; + const float24* src1_ = LookupSourceRegister(instr.mad.GetSrc1(is_inverted)); - const float24* src2_ = LookupSourceRegister(instr.mad.GetSrc2(is_inverted)); - const float24* src3_ = LookupSourceRegister(instr.mad.GetSrc3(is_inverted)); + const float24* src2_ = LookupSourceRegister(instr.mad.GetSrc2(is_inverted) + (!is_inverted * address_offset)); + const float24* src3_ = LookupSourceRegister(instr.mad.GetSrc3(is_inverted) + ( is_inverted * address_offset)); const bool negate_src1 = ((bool)swizzle.negate_src1 != false); const bool negate_src2 = ((bool)swizzle.negate_src2 != false); |
