diff options
Diffstat (limited to 'src/shader_recompiler/frontend')
| -rw-r--r-- | src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch.cpp index b691b4d1f..d2626f3e7 100644 --- a/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch.cpp +++ b/src/shader_recompiler/frontend/maxwell/translate/impl/texture_fetch.cpp | |||
| @@ -188,6 +188,7 @@ void Impl(TranslatorVisitor& v, u64 insn, bool aoffi, Blod blod, bool lc, | |||
| 188 | } | 188 | } |
| 189 | }()}; | 189 | }()}; |
| 190 | 190 | ||
| 191 | IR::Reg dest_reg{tex.dest_reg}; | ||
| 191 | for (int element = 0; element < 4; ++element) { | 192 | for (int element = 0; element < 4; ++element) { |
| 192 | if (((tex.mask >> element) & 1) == 0) { | 193 | if (((tex.mask >> element) & 1) == 0) { |
| 193 | continue; | 194 | continue; |
| @@ -198,7 +199,8 @@ void Impl(TranslatorVisitor& v, u64 insn, bool aoffi, Blod blod, bool lc, | |||
| 198 | } else { | 199 | } else { |
| 199 | value = IR::F32{v.ir.CompositeExtract(sample, element)}; | 200 | value = IR::F32{v.ir.CompositeExtract(sample, element)}; |
| 200 | } | 201 | } |
| 201 | v.F(tex.dest_reg + element, value); | 202 | v.F(dest_reg, value); |
| 203 | ++dest_reg; | ||
| 202 | } | 204 | } |
| 203 | if (tex.sparse_pred != IR::Pred::PT) { | 205 | if (tex.sparse_pred != IR::Pred::PT) { |
| 204 | v.ir.SetPred(tex.sparse_pred, v.ir.LogicalNot(v.ir.GetSparseFromOp(sample))); | 206 | v.ir.SetPred(tex.sparse_pred, v.ir.LogicalNot(v.ir.GetSparseFromOp(sample))); |