Fix because of rebase

This commit is contained in:
Thog 2019-02-13 19:10:29 +01:00
commit d7da8758db
No known key found for this signature in database
GPG key ID: 0CD291558FAFDBC6

View file

@ -306,16 +306,14 @@ namespace Ryujinx.Graphics.Gal.Shader
CoordReg.Index += Index; CoordReg.Index += Index;
Coords[Index].Index += IndexExtraCoord; CoordReg.Index += IndexExtraCoord;
if (!CoordReg.IsValidRegister) if (!CoordReg.IsValidRegister)
{ {
CoordReg.Index = ShaderIrOperGpr.ZRIndex; CoordReg.Index = ShaderIrOperGpr.ZRIndex;
} }
Coords[Index] = ShaderIrOperGpr.MakeTemporary(Index); Coords[Index] = CoordReg;
Block.AddNode(new ShaderIrAsg(Coords[Index], CoordReg));
} }
int ChMask = OpCode.Read(31, 0xf); int ChMask = OpCode.Read(31, 0xf);
@ -361,6 +359,8 @@ namespace Ryujinx.Graphics.Gal.Shader
ShaderIrInst Inst = GprHandle ? ShaderIrInst.Texb : ShaderIrInst.Texs; ShaderIrInst Inst = GprHandle ? ShaderIrInst.Texb : ShaderIrInst.Texs;
Coords = CoordsRegistersToTempRegisters(Block, Coords);
int RegInc = 0; int RegInc = 0;
for (int Ch = 0; Ch < 4; Ch++) for (int Ch = 0; Ch < 4; Ch++)
@ -694,6 +694,7 @@ namespace Ryujinx.Graphics.Gal.Shader
} }
ShaderIrNode OperC = OpCode.Imm13_36(); ShaderIrNode OperC = OpCode.Imm13_36();
Coords = CoordsRegistersToTempRegisters(Block, Coords);
for (int Ch = 0; Ch < 4; Ch++) for (int Ch = 0; Ch < 4; Ch++)
{ {
@ -820,28 +821,7 @@ namespace Ryujinx.Graphics.Gal.Shader
OperBIndex++; OperBIndex++;
} }
Coords = CoordsRegistersToTempRegisters(Block, Coords);
for (int Ch = 0; Ch < 4; Ch++)
{
// Avoid usuless variable creation
if (!IsChannelUsed(ChMask, Ch))
{
continue;
}
ShaderIrOperGpr Dst = new ShaderIrOperGpr(TempRegStart + Ch);
ShaderIrMetaTex Meta = new ShaderIrMetaTex(Ch, TextureType, TextureInstructionSuffix, Coords)
{
Component = Component,
Offset = Offset,
DepthCompare = DepthCompare
};
ShaderIrOp Op = new ShaderIrOp(ShaderIrInst.Tld4, OperA, OperB, OperC, Meta);
Block.AddNode(OpCode.PredNode(new ShaderIrAsg(Dst, Op)));
}
int RegInc = 0; int RegInc = 0;
@ -852,18 +832,25 @@ namespace Ryujinx.Graphics.Gal.Shader
continue; continue;
} }
ShaderIrOperGpr Src = new ShaderIrOperGpr(TempRegStart + Ch);
ShaderIrOperGpr Dst = OpCode.Gpr0(); ShaderIrOperGpr Dst = OpCode.Gpr0();
Dst.Index += RegInc++; Dst.Index += RegInc++;
if (Dst.Index >= ShaderIrOperGpr.ZRIndex) if (!Dst.IsValidRegister || Dst.IsConst)
{ {
continue; continue;
} }
Block.AddNode(OpCode.PredNode(new ShaderIrAsg(Dst, Src))); ShaderIrMetaTex Meta = new ShaderIrMetaTex(Ch, TextureType, TextureInstructionSuffix, Coords)
{
Component = Component,
Offset = Offset,
DepthCompare = DepthCompare
};
ShaderIrOp Op = new ShaderIrOp(ShaderIrInst.Tld4, OperA, OperB, OperC, Meta);
Block.AddNode(OpCode.PredNode(new ShaderIrAsg(Dst, Op)));
} }
} }