From 5be6ec63648eec8ad108c3b4bd681e5397afb646 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Wed, 13 Jan 2021 21:07:50 -0300 Subject: Fix shader LOP3 predicate write condition (#1910) * Fix LOP3 predicate write condition * Bump shader cache version --- Ryujinx.Graphics.Shader/Instructions/InstEmitAlu.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'Ryujinx.Graphics.Shader/Instructions') diff --git a/Ryujinx.Graphics.Shader/Instructions/InstEmitAlu.cs b/Ryujinx.Graphics.Shader/Instructions/InstEmitAlu.cs index 64ac0eb7..37c17ecc 100644 --- a/Ryujinx.Graphics.Shader/Instructions/InstEmitAlu.cs +++ b/Ryujinx.Graphics.Shader/Instructions/InstEmitAlu.cs @@ -459,7 +459,7 @@ namespace Ryujinx.Graphics.Shader.Instructions case LogicalOperation.ExclusiveOr: res = context.BitwiseExclusiveOr(srcA, srcB); break; } - EmitLopPredWrite(context, op, res); + EmitLopPredWrite(context, op, res, (ConditionalOperation)context.CurrOp.RawOpCode.Extract(44, 2)); Operand dest = GetDest(context); @@ -486,7 +486,7 @@ namespace Ryujinx.Graphics.Shader.Instructions if (regVariant) { - EmitLopPredWrite(context, op, res); + EmitLopPredWrite(context, op, res, (ConditionalOperation)context.CurrOp.RawOpCode.Extract(36, 2)); } Operand dest = GetDest(context); @@ -917,21 +917,21 @@ namespace Ryujinx.Graphics.Shader.Instructions return res; } - private static void EmitLopPredWrite(EmitterContext context, IOpCodeLop op, Operand result) + private static void EmitLopPredWrite(EmitterContext context, IOpCodeLop op, Operand result, ConditionalOperation condOp) { if (op is OpCodeLop opLop && !opLop.Predicate48.IsPT) { Operand pRes; - if (opLop.CondOp == ConditionalOperation.False) + if (condOp == ConditionalOperation.False) { pRes = Const(IrConsts.False); } - else if (opLop.CondOp == ConditionalOperation.True) + else if (condOp == ConditionalOperation.True) { pRes = Const(IrConsts.True); } - else if (opLop.CondOp == ConditionalOperation.Zero) + else if (condOp == ConditionalOperation.Zero) { pRes = context.ICompareEqual(result, Const(0)); } -- cgit v1.2.3