Move and rename some instruction enums
This commit is contained in:
parent
1a675a104a
commit
ba15713cf4
14 changed files with 109 additions and 109 deletions
9
Ryujinx.Graphics/Shader/Decoders/IntegerHalfPart.cs
Normal file
9
Ryujinx.Graphics/Shader/Decoders/IntegerHalfPart.cs
Normal file
|
@ -0,0 +1,9 @@
|
|||
namespace Ryujinx.Graphics.Shader.Decoders
|
||||
{
|
||||
enum IntegerHalfPart
|
||||
{
|
||||
B32 = 0,
|
||||
H0 = 1,
|
||||
H1 = 2
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
namespace Ryujinx.Graphics.Shader.Instructions
|
||||
namespace Ryujinx.Graphics.Shader.Decoders
|
||||
{
|
||||
enum Iadd3Mode
|
||||
enum IntegerShift
|
||||
{
|
||||
NoShift = 0,
|
||||
ShiftRight = 1,
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Graphics.Shader.Instructions
|
||||
namespace Ryujinx.Graphics.Shader.Decoders
|
||||
{
|
||||
enum MufuOperation
|
||||
{
|
|
@ -4,7 +4,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
|
|||
{
|
||||
class OpCodeTexs : OpCodeTextureScalar
|
||||
{
|
||||
public TexsType Type => (TexsType)RawType;
|
||||
public TextureScalarType Type => (TextureScalarType)RawType;
|
||||
|
||||
public OpCodeTexs(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode) { }
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
|
|||
{
|
||||
class OpCodeTlds : OpCodeTextureScalar
|
||||
{
|
||||
public TldsType Type => (TldsType)RawType;
|
||||
public TexelLoadScalarType Type => (TexelLoadScalarType)RawType;
|
||||
|
||||
public OpCodeTlds(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode) { }
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
namespace Ryujinx.Graphics.Shader.Decoders
|
||||
{
|
||||
enum TldsType
|
||||
enum TexelLoadScalarType
|
||||
{
|
||||
Texture1DLodZero = 0x0,
|
||||
Texture1DLodLevel = 0x1,
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Graphics.Shader.Instructions
|
||||
namespace Ryujinx.Graphics.Shader.Decoders
|
||||
{
|
||||
enum TextureGatherOffset
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
namespace Ryujinx.Graphics.Shader.Instructions
|
||||
namespace Ryujinx.Graphics.Shader.Decoders
|
||||
{
|
||||
enum TextureProperty
|
||||
{
|
|
@ -1,6 +1,6 @@
|
|||
namespace Ryujinx.Graphics.Shader.Decoders
|
||||
{
|
||||
enum TexsType
|
||||
enum TextureScalarType
|
||||
{
|
||||
Texture1DLodZero = 0x0,
|
||||
Texture2D = 0x1,
|
|
@ -1,6 +1,6 @@
|
|||
namespace Ryujinx.Graphics.Shader.Instructions
|
||||
namespace Ryujinx.Graphics.Shader.Decoders
|
||||
{
|
||||
enum XmadMode
|
||||
enum XmadCMode
|
||||
{
|
||||
Cfull = 0,
|
||||
Clo = 1,
|
|
@ -1,9 +0,0 @@
|
|||
namespace Ryujinx.Graphics.Shader.Instructions
|
||||
{
|
||||
enum Iadd3Part
|
||||
{
|
||||
B32 = 0,
|
||||
H0 = 1,
|
||||
H1 = 2
|
||||
}
|
||||
}
|
|
@ -75,28 +75,28 @@ namespace Ryujinx.Graphics.Shader.Instructions
|
|||
{
|
||||
OpCodeAlu op = (OpCodeAlu)context.CurrOp;
|
||||
|
||||
Iadd3Part partC = (Iadd3Part)op.RawOpCode.Extract(31, 2);
|
||||
Iadd3Part partB = (Iadd3Part)op.RawOpCode.Extract(33, 2);
|
||||
Iadd3Part partA = (Iadd3Part)op.RawOpCode.Extract(35, 2);
|
||||
IntegerHalfPart partC = (IntegerHalfPart)op.RawOpCode.Extract(31, 2);
|
||||
IntegerHalfPart partB = (IntegerHalfPart)op.RawOpCode.Extract(33, 2);
|
||||
IntegerHalfPart partA = (IntegerHalfPart)op.RawOpCode.Extract(35, 2);
|
||||
|
||||
Iadd3Mode mode = (Iadd3Mode)op.RawOpCode.Extract(37, 2);
|
||||
IntegerShift mode = (IntegerShift)op.RawOpCode.Extract(37, 2);
|
||||
|
||||
bool negateC = op.RawOpCode.Extract(49);
|
||||
bool negateB = op.RawOpCode.Extract(50);
|
||||
bool negateA = op.RawOpCode.Extract(51);
|
||||
|
||||
Operand Extend(Operand src, Iadd3Part part)
|
||||
Operand Extend(Operand src, IntegerHalfPart part)
|
||||
{
|
||||
if (!(op is OpCodeAluReg) || part == Iadd3Part.B32)
|
||||
if (!(op is OpCodeAluReg) || part == IntegerHalfPart.B32)
|
||||
{
|
||||
return src;
|
||||
}
|
||||
|
||||
if (part == Iadd3Part.H0)
|
||||
if (part == IntegerHalfPart.H0)
|
||||
{
|
||||
return context.BitwiseAnd(src, Const(0xffff));
|
||||
}
|
||||
else if (part == Iadd3Part.H1)
|
||||
else if (part == IntegerHalfPart.H1)
|
||||
{
|
||||
return context.ShiftRightU32(src, Const(16));
|
||||
}
|
||||
|
@ -114,13 +114,13 @@ namespace Ryujinx.Graphics.Shader.Instructions
|
|||
|
||||
Operand res = context.IAdd(srcA, srcB);
|
||||
|
||||
if (op is OpCodeAluReg && mode != Iadd3Mode.NoShift)
|
||||
if (op is OpCodeAluReg && mode != IntegerShift.NoShift)
|
||||
{
|
||||
if (mode == Iadd3Mode.ShiftLeft)
|
||||
if (mode == IntegerShift.ShiftLeft)
|
||||
{
|
||||
res = context.ShiftLeft(res, Const(16));
|
||||
}
|
||||
else if (mode == Iadd3Mode.ShiftRight)
|
||||
else if (mode == IntegerShift.ShiftRight)
|
||||
{
|
||||
res = context.ShiftRightU32(res, Const(16));
|
||||
}
|
||||
|
@ -432,17 +432,17 @@ namespace Ryujinx.Graphics.Shader.Instructions
|
|||
bool highA = context.CurrOp.RawOpCode.Extract(53);
|
||||
bool highB = false;
|
||||
|
||||
XmadMode mode;
|
||||
XmadCMode mode;
|
||||
|
||||
if (op is OpCodeAluReg)
|
||||
{
|
||||
highB = context.CurrOp.RawOpCode.Extract(35);
|
||||
|
||||
mode = (XmadMode)context.CurrOp.RawOpCode.Extract(50, 3);
|
||||
mode = (XmadCMode)context.CurrOp.RawOpCode.Extract(50, 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
mode = (XmadMode)context.CurrOp.RawOpCode.Extract(50, 2);
|
||||
mode = (XmadCMode)context.CurrOp.RawOpCode.Extract(50, 2);
|
||||
|
||||
if (!(op is OpCodeAluImm))
|
||||
{
|
||||
|
@ -512,19 +512,19 @@ namespace Ryujinx.Graphics.Shader.Instructions
|
|||
|
||||
switch (mode)
|
||||
{
|
||||
case XmadMode.Cfull: break;
|
||||
case XmadCMode.Cfull: break;
|
||||
|
||||
case XmadMode.Clo: srcC = Extend16To32(srcC, high: false, signed: false); break;
|
||||
case XmadMode.Chi: srcC = Extend16To32(srcC, high: true, signed: false); break;
|
||||
case XmadCMode.Clo: srcC = Extend16To32(srcC, high: false, signed: false); break;
|
||||
case XmadCMode.Chi: srcC = Extend16To32(srcC, high: true, signed: false); break;
|
||||
|
||||
case XmadMode.Cbcc:
|
||||
case XmadCMode.Cbcc:
|
||||
{
|
||||
srcC = context.IAdd(srcC, context.ShiftLeft(GetSrcB(context), Const(16)));
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case XmadMode.Csfu:
|
||||
case XmadCMode.Csfu:
|
||||
{
|
||||
Operand signAdjustA = context.ShiftLeft(context.ShiftRightU32(srcA, Const(31)), Const(16));
|
||||
Operand signAdjustB = context.ShiftLeft(context.ShiftRightU32(srcB, Const(31)), Const(16));
|
||||
|
|
|
@ -222,40 +222,40 @@ namespace Ryujinx.Graphics.Shader.Instructions
|
|||
{
|
||||
switch (texsOp.Type)
|
||||
{
|
||||
case TexsType.Texture1DLodZero:
|
||||
case TextureScalarType.Texture1DLodZero:
|
||||
sourcesList.Add(Ra());
|
||||
break;
|
||||
|
||||
case TexsType.Texture2D:
|
||||
case TextureScalarType.Texture2D:
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Rb());
|
||||
break;
|
||||
|
||||
case TexsType.Texture2DLodZero:
|
||||
case TextureScalarType.Texture2DLodZero:
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Rb());
|
||||
sourcesList.Add(ConstF(0));
|
||||
break;
|
||||
|
||||
case TexsType.Texture2DLodLevel:
|
||||
case TexsType.Texture2DDepthCompare:
|
||||
case TexsType.Texture3D:
|
||||
case TexsType.TextureCube:
|
||||
case TextureScalarType.Texture2DLodLevel:
|
||||
case TextureScalarType.Texture2DDepthCompare:
|
||||
case TextureScalarType.Texture3D:
|
||||
case TextureScalarType.TextureCube:
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Rb());
|
||||
break;
|
||||
|
||||
case TexsType.Texture2DLodZeroDepthCompare:
|
||||
case TexsType.Texture3DLodZero:
|
||||
case TextureScalarType.Texture2DLodZeroDepthCompare:
|
||||
case TextureScalarType.Texture3DLodZero:
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Rb());
|
||||
sourcesList.Add(ConstF(0));
|
||||
break;
|
||||
|
||||
case TexsType.Texture2DLodLevelDepthCompare:
|
||||
case TexsType.TextureCubeLodLevel:
|
||||
case TextureScalarType.Texture2DLodLevelDepthCompare:
|
||||
case TextureScalarType.TextureCubeLodLevel:
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Rb());
|
||||
|
@ -271,51 +271,51 @@ namespace Ryujinx.Graphics.Shader.Instructions
|
|||
|
||||
switch (tldsOp.Type)
|
||||
{
|
||||
case TldsType.Texture1DLodZero:
|
||||
case TexelLoadScalarType.Texture1DLodZero:
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Const(0));
|
||||
break;
|
||||
|
||||
case TldsType.Texture1DLodLevel:
|
||||
case TexelLoadScalarType.Texture1DLodLevel:
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Rb());
|
||||
break;
|
||||
|
||||
case TldsType.Texture2DLodZero:
|
||||
case TexelLoadScalarType.Texture2DLodZero:
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Rb());
|
||||
sourcesList.Add(Const(0));
|
||||
break;
|
||||
|
||||
case TldsType.Texture2DLodZeroOffset:
|
||||
case TldsType.Texture2DLodZeroMultisample:
|
||||
case TexelLoadScalarType.Texture2DLodZeroOffset:
|
||||
case TexelLoadScalarType.Texture2DLodZeroMultisample:
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Const(0));
|
||||
sourcesList.Add(Rb());
|
||||
break;
|
||||
|
||||
case TldsType.Texture2DLodLevel:
|
||||
case TexelLoadScalarType.Texture2DLodLevel:
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Rb());
|
||||
break;
|
||||
|
||||
case TldsType.Texture3DLodZero:
|
||||
case TexelLoadScalarType.Texture3DLodZero:
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Rb());
|
||||
sourcesList.Add(Const(0));
|
||||
break;
|
||||
|
||||
case TldsType.Texture2DArrayLodZero:
|
||||
case TexelLoadScalarType.Texture2DArrayLodZero:
|
||||
sourcesList.Add(Rb());
|
||||
sourcesList.Add(Rb());
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Const(0));
|
||||
break;
|
||||
|
||||
case TldsType.Texture2DLodLevelOffset:
|
||||
case TexelLoadScalarType.Texture2DLodLevelOffset:
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Ra());
|
||||
sourcesList.Add(Rb());
|
||||
|
@ -781,110 +781,110 @@ namespace Ryujinx.Graphics.Shader.Instructions
|
|||
throw new ArgumentException($"Invalid texture dimensions \"{dimensions}\".");
|
||||
}
|
||||
|
||||
private static TextureType GetTextureType(TexsType type)
|
||||
private static TextureType GetTextureType(TextureScalarType type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case TexsType.Texture1DLodZero:
|
||||
case TextureScalarType.Texture1DLodZero:
|
||||
return TextureType.Texture1D;
|
||||
|
||||
case TexsType.Texture2D:
|
||||
case TexsType.Texture2DLodZero:
|
||||
case TexsType.Texture2DLodLevel:
|
||||
case TextureScalarType.Texture2D:
|
||||
case TextureScalarType.Texture2DLodZero:
|
||||
case TextureScalarType.Texture2DLodLevel:
|
||||
return TextureType.Texture2D;
|
||||
|
||||
case TexsType.Texture2DDepthCompare:
|
||||
case TexsType.Texture2DLodLevelDepthCompare:
|
||||
case TexsType.Texture2DLodZeroDepthCompare:
|
||||
case TextureScalarType.Texture2DDepthCompare:
|
||||
case TextureScalarType.Texture2DLodLevelDepthCompare:
|
||||
case TextureScalarType.Texture2DLodZeroDepthCompare:
|
||||
return TextureType.Texture2D | TextureType.Shadow;
|
||||
|
||||
case TexsType.Texture2DArray:
|
||||
case TexsType.Texture2DArrayLodZero:
|
||||
case TextureScalarType.Texture2DArray:
|
||||
case TextureScalarType.Texture2DArrayLodZero:
|
||||
return TextureType.Texture2D | TextureType.Array;
|
||||
|
||||
case TexsType.Texture2DArrayLodZeroDepthCompare:
|
||||
case TextureScalarType.Texture2DArrayLodZeroDepthCompare:
|
||||
return TextureType.Texture2D | TextureType.Array | TextureType.Shadow;
|
||||
|
||||
case TexsType.Texture3D:
|
||||
case TexsType.Texture3DLodZero:
|
||||
case TextureScalarType.Texture3D:
|
||||
case TextureScalarType.Texture3DLodZero:
|
||||
return TextureType.Texture3D;
|
||||
|
||||
case TexsType.TextureCube:
|
||||
case TexsType.TextureCubeLodLevel:
|
||||
case TextureScalarType.TextureCube:
|
||||
case TextureScalarType.TextureCubeLodLevel:
|
||||
return TextureType.TextureCube;
|
||||
}
|
||||
|
||||
throw new ArgumentException($"Invalid texture type \"{type}\".");
|
||||
}
|
||||
|
||||
private static TextureType GetTextureType(TldsType type)
|
||||
private static TextureType GetTextureType(TexelLoadScalarType type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case TldsType.Texture1DLodZero:
|
||||
case TldsType.Texture1DLodLevel:
|
||||
case TexelLoadScalarType.Texture1DLodZero:
|
||||
case TexelLoadScalarType.Texture1DLodLevel:
|
||||
return TextureType.Texture1D;
|
||||
|
||||
case TldsType.Texture2DLodZero:
|
||||
case TldsType.Texture2DLodZeroOffset:
|
||||
case TldsType.Texture2DLodLevel:
|
||||
case TldsType.Texture2DLodLevelOffset:
|
||||
case TexelLoadScalarType.Texture2DLodZero:
|
||||
case TexelLoadScalarType.Texture2DLodZeroOffset:
|
||||
case TexelLoadScalarType.Texture2DLodLevel:
|
||||
case TexelLoadScalarType.Texture2DLodLevelOffset:
|
||||
return TextureType.Texture2D;
|
||||
|
||||
case TldsType.Texture2DLodZeroMultisample:
|
||||
case TexelLoadScalarType.Texture2DLodZeroMultisample:
|
||||
return TextureType.Texture2D | TextureType.Multisample;
|
||||
|
||||
case TldsType.Texture3DLodZero:
|
||||
case TexelLoadScalarType.Texture3DLodZero:
|
||||
return TextureType.Texture3D;
|
||||
|
||||
case TldsType.Texture2DArrayLodZero:
|
||||
case TexelLoadScalarType.Texture2DArrayLodZero:
|
||||
return TextureType.Texture2D | TextureType.Array;
|
||||
}
|
||||
|
||||
throw new ArgumentException($"Invalid texture type \"{type}\".");
|
||||
}
|
||||
|
||||
private static TextureFlags GetTextureFlags(TexsType type)
|
||||
private static TextureFlags GetTextureFlags(TextureScalarType type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case TexsType.Texture1DLodZero:
|
||||
case TexsType.Texture2DLodZero:
|
||||
case TexsType.Texture2DLodLevel:
|
||||
case TexsType.Texture2DLodLevelDepthCompare:
|
||||
case TexsType.Texture2DLodZeroDepthCompare:
|
||||
case TexsType.Texture2DArrayLodZero:
|
||||
case TexsType.Texture2DArrayLodZeroDepthCompare:
|
||||
case TexsType.Texture3DLodZero:
|
||||
case TexsType.TextureCubeLodLevel:
|
||||
case TextureScalarType.Texture1DLodZero:
|
||||
case TextureScalarType.Texture2DLodZero:
|
||||
case TextureScalarType.Texture2DLodLevel:
|
||||
case TextureScalarType.Texture2DLodLevelDepthCompare:
|
||||
case TextureScalarType.Texture2DLodZeroDepthCompare:
|
||||
case TextureScalarType.Texture2DArrayLodZero:
|
||||
case TextureScalarType.Texture2DArrayLodZeroDepthCompare:
|
||||
case TextureScalarType.Texture3DLodZero:
|
||||
case TextureScalarType.TextureCubeLodLevel:
|
||||
return TextureFlags.LodLevel;
|
||||
|
||||
case TexsType.Texture2D:
|
||||
case TexsType.Texture2DDepthCompare:
|
||||
case TexsType.Texture2DArray:
|
||||
case TexsType.Texture3D:
|
||||
case TexsType.TextureCube:
|
||||
case TextureScalarType.Texture2D:
|
||||
case TextureScalarType.Texture2DDepthCompare:
|
||||
case TextureScalarType.Texture2DArray:
|
||||
case TextureScalarType.Texture3D:
|
||||
case TextureScalarType.TextureCube:
|
||||
return TextureFlags.None;
|
||||
}
|
||||
|
||||
throw new ArgumentException($"Invalid texture type \"{type}\".");
|
||||
}
|
||||
|
||||
private static TextureFlags GetTextureFlags(TldsType type)
|
||||
private static TextureFlags GetTextureFlags(TexelLoadScalarType type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case TldsType.Texture1DLodZero:
|
||||
case TldsType.Texture1DLodLevel:
|
||||
case TldsType.Texture2DLodZero:
|
||||
case TldsType.Texture2DLodLevel:
|
||||
case TldsType.Texture2DLodZeroMultisample:
|
||||
case TldsType.Texture3DLodZero:
|
||||
case TldsType.Texture2DArrayLodZero:
|
||||
case TexelLoadScalarType.Texture1DLodZero:
|
||||
case TexelLoadScalarType.Texture1DLodLevel:
|
||||
case TexelLoadScalarType.Texture2DLodZero:
|
||||
case TexelLoadScalarType.Texture2DLodLevel:
|
||||
case TexelLoadScalarType.Texture2DLodZeroMultisample:
|
||||
case TexelLoadScalarType.Texture3DLodZero:
|
||||
case TexelLoadScalarType.Texture2DArrayLodZero:
|
||||
return TextureFlags.LodLevel;
|
||||
|
||||
case TldsType.Texture2DLodZeroOffset:
|
||||
case TldsType.Texture2DLodLevelOffset:
|
||||
case TexelLoadScalarType.Texture2DLodZeroOffset:
|
||||
case TexelLoadScalarType.Texture2DLodLevelOffset:
|
||||
return TextureFlags.LodLevel | TextureFlags.Offset;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue