Address PR feedback

This commit is contained in:
gdkchan 2020-01-01 12:39:09 -03:00 committed by Thog
parent 40ef18d759
commit 92703af555
39 changed files with 285 additions and 228 deletions

View file

@ -86,6 +86,10 @@ namespace Ryujinx.Graphics.Shader.Instructions
{
context.Barrier();
}
else
{
context.Config.PrintLog($"Invalid barrier mode: {op.Mode}.");
}
}
public static void Ipa(EmitterContext context)
@ -101,8 +105,6 @@ namespace Ryujinx.Graphics.Shader.Instructions
Operand srcA = Attribute(op.AttributeOffset, iq);
Operand srcB = GetSrcB(context);
Operand res = context.FPSaturate(srcA, op.Saturate);
context.Copy(GetDest(context), res);
@ -128,7 +130,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
if (op.Size > IntegerSize.B64)
{
// TODO: Warning.
context.Config.PrintLog($"Invalid LDC size: {op.Size}.");
}
bool isSmallInt = op.Size < IntegerSize.B32;
@ -156,7 +158,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
if (isSmallInt)
{
value = ExtractSmallInt(context, op.Size, wordOffset, value);
value = ExtractSmallInt(context, op.Size, bitOffset, value);
}
context.Copy(Register(rd), value);
@ -261,7 +263,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
}
else
{
// Not supported or invalid.
context.Config.PrintLog($"Invalid reduction type: {type}.");
}
break;
case AtomicOp.BitwiseAnd:
@ -271,7 +273,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
}
else
{
// Not supported or invalid.
context.Config.PrintLog($"Invalid reduction type: {type}.");
}
break;
case AtomicOp.BitwiseExclusiveOr:
@ -281,7 +283,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
}
else
{
// Not supported or invalid.
context.Config.PrintLog($"Invalid reduction type: {type}.");
}
break;
case AtomicOp.BitwiseOr:
@ -291,7 +293,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
}
else
{
// Not supported or invalid.
context.Config.PrintLog($"Invalid reduction type: {type}.");
}
break;
case AtomicOp.Maximum:
@ -305,7 +307,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
}
else
{
// Not supported or invalid.
context.Config.PrintLog($"Invalid reduction type: {type}.");
}
break;
case AtomicOp.Minimum:
@ -319,7 +321,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
}
else
{
// Not supported or invalid.
context.Config.PrintLog($"Invalid reduction type: {type}.");
}
break;
}
@ -333,7 +335,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
if (op.Size > IntegerSize.B128)
{
// TODO: Warning.
context.Config.PrintLog($"Invalid load size: {op.Size}.");
}
bool isSmallInt = op.Size < IntegerSize.B32;
@ -419,7 +421,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
if (op.Size > IntegerSize.B128)
{
// TODO: Warning.
context.Config.PrintLog($"Invalid store size: {op.Size}.");
}
bool isSmallInt = op.Size < IntegerSize.B32;

View file

@ -11,8 +11,6 @@ namespace Ryujinx.Graphics.Shader.Instructions
{
public static void Mov(EmitterContext context)
{
OpCodeAlu op = (OpCodeAlu)context.CurrOp;
context.Copy(GetDest(context), GetSrcB(context));
}
@ -33,7 +31,8 @@ namespace Ryujinx.Graphics.Shader.Instructions
if (isCC)
{
// TODO.
// TODO: Support Register to condition code flags copy.
context.Config.PrintLog("R2P.CC not implemented.");
}
else
{

View file

@ -18,7 +18,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
if (type == SamplerType.None)
{
// TODO: Error, encoding is invalid.
context.Config.PrintLog("Invalid image store sampler type.");
return;
}
@ -86,7 +86,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
}
else
{
// TODO.
context.Config.PrintLog("Unsized image store not supported.");
}
Operand[] sources = sourcesList.ToArray();
@ -180,7 +180,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
if (type == SamplerType.None)
{
// TODO: Error, encoding is invalid.
context.Config.PrintLog("Invalid texture sampler type.");
return;
}
@ -210,40 +210,40 @@ namespace Ryujinx.Graphics.Shader.Instructions
{
switch (texsOp.Target)
{
case Decoders.TextureTarget.Texture1DLodZero:
case TextureTarget.Texture1DLodZero:
sourcesList.Add(Ra());
break;
case Decoders.TextureTarget.Texture2D:
case TextureTarget.Texture2D:
sourcesList.Add(Ra());
sourcesList.Add(Rb());
break;
case Decoders.TextureTarget.Texture2DLodZero:
case TextureTarget.Texture2DLodZero:
sourcesList.Add(Ra());
sourcesList.Add(Rb());
sourcesList.Add(ConstF(0));
break;
case Decoders.TextureTarget.Texture2DLodLevel:
case Decoders.TextureTarget.Texture2DDepthCompare:
case Decoders.TextureTarget.Texture3D:
case Decoders.TextureTarget.TextureCube:
case TextureTarget.Texture2DLodLevel:
case TextureTarget.Texture2DDepthCompare:
case TextureTarget.Texture3D:
case TextureTarget.TextureCube:
sourcesList.Add(Ra());
sourcesList.Add(Ra());
sourcesList.Add(Rb());
break;
case Decoders.TextureTarget.Texture2DLodZeroDepthCompare:
case Decoders.TextureTarget.Texture3DLodZero:
case TextureTarget.Texture2DLodZeroDepthCompare:
case TextureTarget.Texture3DLodZero:
sourcesList.Add(Ra());
sourcesList.Add(Ra());
sourcesList.Add(Rb());
sourcesList.Add(ConstF(0));
break;
case Decoders.TextureTarget.Texture2DLodLevelDepthCompare:
case Decoders.TextureTarget.TextureCubeLodLevel:
case TextureTarget.Texture2DLodLevelDepthCompare:
case TextureTarget.TextureCubeLodLevel:
sourcesList.Add(Ra());
sourcesList.Add(Ra());
sourcesList.Add(Rb());
@ -258,7 +258,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
if (type == SamplerType.None)
{
// TODO: Error, encoding is invalid.
context.Config.PrintLog("Invalid texel fetch sampler type.");
return;
}
@ -742,8 +742,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
{
OpCodeTexture op = (OpCodeTexture)context.CurrOp;
bool isBindless = (flags & TextureFlags.Bindless) != 0;
bool intCoords = (flags & TextureFlags.IntCoords) != 0;
bool isBindless = (flags & TextureFlags.Bindless) != 0;
if (op.Rd.IsRZ)
{
@ -920,36 +919,36 @@ namespace Ryujinx.Graphics.Shader.Instructions
throw new ArgumentException($"Invalid texture dimensions \"{dimensions}\".");
}
private static SamplerType ConvertSamplerType(Decoders.TextureTarget type)
private static SamplerType ConvertSamplerType(TextureTarget type)
{
switch (type)
{
case Decoders.TextureTarget.Texture1DLodZero:
case TextureTarget.Texture1DLodZero:
return SamplerType.Texture1D;
case Decoders.TextureTarget.Texture2D:
case Decoders.TextureTarget.Texture2DLodZero:
case Decoders.TextureTarget.Texture2DLodLevel:
case TextureTarget.Texture2D:
case TextureTarget.Texture2DLodZero:
case TextureTarget.Texture2DLodLevel:
return SamplerType.Texture2D;
case Decoders.TextureTarget.Texture2DDepthCompare:
case Decoders.TextureTarget.Texture2DLodLevelDepthCompare:
case Decoders.TextureTarget.Texture2DLodZeroDepthCompare:
case TextureTarget.Texture2DDepthCompare:
case TextureTarget.Texture2DLodLevelDepthCompare:
case TextureTarget.Texture2DLodZeroDepthCompare:
return SamplerType.Texture2D | SamplerType.Shadow;
case Decoders.TextureTarget.Texture2DArray:
case Decoders.TextureTarget.Texture2DArrayLodZero:
case TextureTarget.Texture2DArray:
case TextureTarget.Texture2DArrayLodZero:
return SamplerType.Texture2D | SamplerType.Array;
case Decoders.TextureTarget.Texture2DArrayLodZeroDepthCompare:
case TextureTarget.Texture2DArrayLodZeroDepthCompare:
return SamplerType.Texture2D | SamplerType.Array | SamplerType.Shadow;
case Decoders.TextureTarget.Texture3D:
case Decoders.TextureTarget.Texture3DLodZero:
case TextureTarget.Texture3D:
case TextureTarget.Texture3DLodZero:
return SamplerType.Texture3D;
case Decoders.TextureTarget.TextureCube:
case Decoders.TextureTarget.TextureCubeLodLevel:
case TextureTarget.TextureCube:
case TextureTarget.TextureCubeLodLevel:
return SamplerType.TextureCube;
}
@ -987,22 +986,22 @@ namespace Ryujinx.Graphics.Shader.Instructions
{
switch (type)
{
case Decoders.TextureTarget.Texture1DLodZero:
case Decoders.TextureTarget.Texture2DLodZero:
case Decoders.TextureTarget.Texture2DLodLevel:
case Decoders.TextureTarget.Texture2DLodLevelDepthCompare:
case Decoders.TextureTarget.Texture2DLodZeroDepthCompare:
case Decoders.TextureTarget.Texture2DArrayLodZero:
case Decoders.TextureTarget.Texture2DArrayLodZeroDepthCompare:
case Decoders.TextureTarget.Texture3DLodZero:
case Decoders.TextureTarget.TextureCubeLodLevel:
case TextureTarget.Texture1DLodZero:
case TextureTarget.Texture2DLodZero:
case TextureTarget.Texture2DLodLevel:
case TextureTarget.Texture2DLodLevelDepthCompare:
case TextureTarget.Texture2DLodZeroDepthCompare:
case TextureTarget.Texture2DArrayLodZero:
case TextureTarget.Texture2DArrayLodZeroDepthCompare:
case TextureTarget.Texture3DLodZero:
case TextureTarget.TextureCubeLodLevel:
return TextureFlags.LodLevel;
case Decoders.TextureTarget.Texture2D:
case Decoders.TextureTarget.Texture2DDepthCompare:
case Decoders.TextureTarget.Texture2DArray:
case Decoders.TextureTarget.Texture3D:
case Decoders.TextureTarget.TextureCube:
case TextureTarget.Texture2D:
case TextureTarget.Texture2DDepthCompare:
case TextureTarget.Texture2DArray:
case TextureTarget.Texture3D:
case TextureTarget.TextureCube:
return TextureFlags.None;
}

View file

@ -36,7 +36,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
}
else
{
// Invalid.
context.Config.PrintLog($"Invalid vote operation: {op.VoteOp}.");
}
if (!op.Rd.IsRZ)