Address feedback

This commit is contained in:
ReinUsesLisp 2018-08-21 14:41:00 -03:00
parent 084bc4397f
commit 79f969f6b9

View file

@ -439,15 +439,13 @@ namespace Ryujinx.Graphics.Gal.Shader
private void PrintProgram(ShaderIrBlock[] Blocks, string Name) private void PrintProgram(ShaderIrBlock[] Blocks, string Name)
{ {
string Ident1 = IdentationStr; const string Ident1 = IdentationStr;
string Ident2 = Ident1 + IdentationStr; const string Ident2 = Ident1 + IdentationStr;
string Ident3 = Ident2 + IdentationStr; const string Ident3 = Ident2 + IdentationStr;
string Ident4 = Ident3 + IdentationStr; const string Ident4 = Ident3 + IdentationStr;
SB.AppendLine(Ident1 + "pc = " + GetBlockPosition(Blocks[0]) + ";"); SB.AppendLine(Ident1 + "pc = " + GetBlockPosition(Blocks[0]) + ";");
SB.AppendLine(Ident1 + "do {"); SB.AppendLine(Ident1 + "do {");
SB.AppendLine(Ident2 + "switch (pc) {"); SB.AppendLine(Ident2 + "switch (pc) {");
foreach (ShaderIrBlock Block in Blocks) foreach (ShaderIrBlock Block in Blocks)
@ -458,13 +456,10 @@ namespace Ryujinx.Graphics.Gal.Shader
} }
SB.AppendLine(Ident3 + "default:"); SB.AppendLine(Ident3 + "default:");
SB.AppendLine(Ident4 + "pc = 0;"); SB.AppendLine(Ident4 + "pc = 0;");
SB.AppendLine(Ident4 + "break;"); SB.AppendLine(Ident4 + "break;");
SB.AppendLine(Ident2 + "}"); SB.AppendLine(Ident2 + "}");
SB.AppendLine(Ident1 + "} while (pc != 0);"); SB.AppendLine(Ident1 + "} while (pc != 0);");
} }
@ -586,7 +581,7 @@ namespace Ryujinx.Graphics.Gal.Shader
{ {
ShaderIrNode Last = Nodes[Nodes.Length - 1]; ShaderIrNode Last = Nodes[Nodes.Length - 1];
bool TailBranch = false; bool UnconditionalFlowChange = false;
if (Last is ShaderIrOp Op) if (Last is ShaderIrOp Op)
{ {
@ -595,15 +590,13 @@ namespace Ryujinx.Graphics.Gal.Shader
case ShaderIrInst.Bra: case ShaderIrInst.Bra:
case ShaderIrInst.Exit: case ShaderIrInst.Exit:
case ShaderIrInst.Kil: case ShaderIrInst.Kil:
TailBranch = true; UnconditionalFlowChange = true;
break; break;
} }
} }
if (!TailBranch) if (!UnconditionalFlowChange)
{ {
SB.AppendLine(IdentationStr + "// Jump to next block");
SB.AppendLine(IdentationStr + "return " + GetBlockPosition(Block.Next) + ";"); SB.AppendLine(IdentationStr + "return " + GetBlockPosition(Block.Next) + ";");
} }
} }
@ -913,7 +906,7 @@ namespace Ryujinx.Graphics.Gal.Shader
private string GetCnumExpr(ShaderIrOp Op) => GetUnaryCall(Op, "!isnan"); private string GetCnumExpr(ShaderIrOp Op) => GetUnaryCall(Op, "!isnan");
private string GetExitExpr(ShaderIrOp Op) => "return 0"; private string GetExitExpr(ShaderIrOp Op) => "return 0u";
private string GetFcosExpr(ShaderIrOp Op) => GetUnaryCall(Op, "cos"); private string GetFcosExpr(ShaderIrOp Op) => GetUnaryCall(Op, "cos");