aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics/Gal/Shader
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Graphics/Gal/Shader')
-rw-r--r--Ryujinx.Graphics/Gal/Shader/GlslDecl.cs265
-rw-r--r--Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs1234
-rw-r--r--Ryujinx.Graphics/Gal/Shader/GlslProgram.cs12
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderDecodeAlu.cs1208
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderDecodeFlow.cs32
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderDecodeFunc.cs2
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderDecodeHelper.cs58
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderDecodeMem.cs696
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs352
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderDecodeOpCode.cs224
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderDecodeSpecial.cs18
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderDecoder.cs170
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderHeader.cs102
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderIrAsg.cs6
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderIrBlock.cs8
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderIrCmnt.cs4
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderIrCond.cs8
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderIrMetaIpa.cs4
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderIrMetaTex.cs10
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderIrMetaTexq.cs6
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderIrOp.cs20
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderIrOperAbuf.cs6
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderIrOperCbuf.cs8
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderIrOperGpr.cs20
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderIrOperImm.cs4
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderIrOperImmf.cs4
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderIrOperPred.cs4
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderOpCodeTable.cs62
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderOper.cs6
29 files changed, 2277 insertions, 2276 deletions
diff --git a/Ryujinx.Graphics/Gal/Shader/GlslDecl.cs b/Ryujinx.Graphics/Gal/Shader/GlslDecl.cs
index f7ae34fa..73426762 100644
--- a/Ryujinx.Graphics/Gal/Shader/GlslDecl.cs
+++ b/Ryujinx.Graphics/Gal/Shader/GlslDecl.cs
@@ -1,4 +1,3 @@
-using Ryujinx.Graphics.Gal.OpenGL;
using Ryujinx.Graphics.Texture;
using System;
using System.Collections.Generic;
@@ -51,9 +50,9 @@ namespace Ryujinx.Graphics.Gal.Shader
public const string SsyStackName = "ssy_stack";
public const string SsyCursorName = "ssy_cursor";
- private string[] StagePrefixes = new string[] { "vp", "tcp", "tep", "gp", "fp" };
+ private string[] _stagePrefixes = new string[] { "vp", "tcp", "tep", "gp", "fp" };
- private string StagePrefix;
+ private string _stagePrefix;
private Dictionary<ShaderIrOp, ShaderDeclInfo> m_CbTextures;
@@ -83,9 +82,9 @@ namespace Ryujinx.Graphics.Gal.Shader
public GalShaderType ShaderType { get; private set; }
- private GlslDecl(GalShaderType ShaderType)
+ private GlslDecl(GalShaderType shaderType)
{
- this.ShaderType = ShaderType;
+ ShaderType = shaderType;
m_CbTextures = new Dictionary<ShaderIrOp, ShaderDeclInfo>();
@@ -101,187 +100,187 @@ namespace Ryujinx.Graphics.Gal.Shader
m_Preds = new Dictionary<int, ShaderDeclInfo>();
}
- public GlslDecl(ShaderIrBlock[] Blocks, GalShaderType ShaderType, ShaderHeader Header) : this(ShaderType)
+ public GlslDecl(ShaderIrBlock[] blocks, GalShaderType shaderType, ShaderHeader header) : this(shaderType)
{
- StagePrefix = StagePrefixes[(int)ShaderType] + "_";
+ _stagePrefix = _stagePrefixes[(int)shaderType] + "_";
- if (ShaderType == GalShaderType.Fragment)
+ if (shaderType == GalShaderType.Fragment)
{
- int Index = 0;
+ int index = 0;
- for (int Attachment = 0; Attachment < 8; Attachment++)
+ for (int attachment = 0; attachment < 8; attachment++)
{
- for (int Component = 0; Component < 4; Component++)
+ for (int component = 0; component < 4; component++)
{
- if (Header.OmapTargets[Attachment].ComponentEnabled(Component))
+ if (header.OmapTargets[attachment].ComponentEnabled(component))
{
- m_Gprs.TryAdd(Index, new ShaderDeclInfo(GetGprName(Index), Index));
+ m_Gprs.TryAdd(index, new ShaderDeclInfo(GetGprName(index), index));
- Index++;
+ index++;
}
}
}
- if (Header.OmapDepth)
+ if (header.OmapDepth)
{
- Index = Header.DepthRegister;
+ index = header.DepthRegister;
- m_Gprs.TryAdd(Index, new ShaderDeclInfo(GetGprName(Index), Index));
+ m_Gprs.TryAdd(index, new ShaderDeclInfo(GetGprName(index), index));
}
}
- foreach (ShaderIrBlock Block in Blocks)
+ foreach (ShaderIrBlock block in blocks)
{
- ShaderIrNode[] Nodes = Block.GetNodes();
+ ShaderIrNode[] nodes = block.GetNodes();
- foreach (ShaderIrNode Node in Nodes)
+ foreach (ShaderIrNode node in nodes)
{
- Traverse(Nodes, null, Node);
+ Traverse(nodes, null, node);
}
}
}
- public static GlslDecl Merge(GlslDecl VpA, GlslDecl VpB)
+ public static GlslDecl Merge(GlslDecl vpA, GlslDecl vpB)
{
- GlslDecl Combined = new GlslDecl(GalShaderType.Vertex);
+ GlslDecl combined = new GlslDecl(GalShaderType.Vertex);
- Merge(Combined.m_Textures, VpA.m_Textures, VpB.m_Textures);
- Merge(Combined.m_Uniforms, VpA.m_Uniforms, VpB.m_Uniforms);
+ Merge(combined.m_Textures, vpA.m_Textures, vpB.m_Textures);
+ Merge(combined.m_Uniforms, vpA.m_Uniforms, vpB.m_Uniforms);
- Merge(Combined.m_Attributes, VpA.m_Attributes, VpB.m_Attributes);
- Merge(Combined.m_OutAttributes, VpA.m_OutAttributes, VpB.m_OutAttributes);
+ Merge(combined.m_Attributes, vpA.m_Attributes, vpB.m_Attributes);
+ Merge(combined.m_OutAttributes, vpA.m_OutAttributes, vpB.m_OutAttributes);
- Merge(Combined.m_Gprs, VpA.m_Gprs, VpB.m_Gprs);
- Merge(Combined.m_GprsHalf, VpA.m_GprsHalf, VpB.m_GprsHalf);
- Merge(Combined.m_Preds, VpA.m_Preds, VpB.m_Preds);
+ Merge(combined.m_Gprs, vpA.m_Gprs, vpB.m_Gprs);
+ Merge(combined.m_GprsHalf, vpA.m_GprsHalf, vpB.m_GprsHalf);
+ Merge(combined.m_Preds, vpA.m_Preds, vpB.m_Preds);
//Merge input attributes.
- foreach (KeyValuePair<int, ShaderDeclInfo> KV in VpA.m_InAttributes)
+ foreach (KeyValuePair<int, ShaderDeclInfo> kv in vpA.m_InAttributes)
{
- Combined.m_InAttributes.TryAdd(KV.Key, KV.Value);
+ combined.m_InAttributes.TryAdd(kv.Key, kv.Value);
}
- foreach (KeyValuePair<int, ShaderDeclInfo> KV in VpB.m_InAttributes)
+ foreach (KeyValuePair<int, ShaderDeclInfo> kv in vpB.m_InAttributes)
{
//If Vertex Program A already writes to this attribute,
//then we don't need to add it as an input attribute since
//Vertex Program A will already have written to it anyway,
//and there's no guarantee that there is an input attribute
//for this slot.
- if (!VpA.m_OutAttributes.ContainsKey(KV.Key))
+ if (!vpA.m_OutAttributes.ContainsKey(kv.Key))
{
- Combined.m_InAttributes.TryAdd(KV.Key, KV.Value);
+ combined.m_InAttributes.TryAdd(kv.Key, kv.Value);
}
}
- return Combined;
+ return combined;
}
- public static string GetGprName(int Index)
+ public static string GetGprName(int index)
{
- return GprName + Index;
+ return GprName + index;
}
private static void Merge(
- Dictionary<int, ShaderDeclInfo> C,
- Dictionary<int, ShaderDeclInfo> A,
- Dictionary<int, ShaderDeclInfo> B)
+ Dictionary<int, ShaderDeclInfo> c,
+ Dictionary<int, ShaderDeclInfo> a,
+ Dictionary<int, ShaderDeclInfo> b)
{
- foreach (KeyValuePair<int, ShaderDeclInfo> KV in A)
+ foreach (KeyValuePair<int, ShaderDeclInfo> kv in a)
{
- C.TryAdd(KV.Key, KV.Value);
+ c.TryAdd(kv.Key, kv.Value);
}
- foreach (KeyValuePair<int, ShaderDeclInfo> KV in B)
+ foreach (KeyValuePair<int, ShaderDeclInfo> kv in b)
{
- C.TryAdd(KV.Key, KV.Value);
+ c.TryAdd(kv.Key, kv.Value);
}
}
- private void Traverse(ShaderIrNode[] Nodes, ShaderIrNode Parent, ShaderIrNode Node)
+ private void Traverse(ShaderIrNode[] nodes, ShaderIrNode parent, ShaderIrNode node)
{
- switch (Node)
+ switch (node)
{
- case ShaderIrAsg Asg:
+ case ShaderIrAsg asg:
{
- Traverse(Nodes, Asg, Asg.Dst);
- Traverse(Nodes, Asg, Asg.Src);
+ Traverse(nodes, asg, asg.Dst);
+ Traverse(nodes, asg, asg.Src);
break;
}
- case ShaderIrCond Cond:
+ case ShaderIrCond cond:
{
- Traverse(Nodes, Cond, Cond.Pred);
- Traverse(Nodes, Cond, Cond.Child);
+ Traverse(nodes, cond, cond.Pred);
+ Traverse(nodes, cond, cond.Child);
break;
}
- case ShaderIrOp Op:
+ case ShaderIrOp op:
{
- Traverse(Nodes, Op, Op.OperandA);
- Traverse(Nodes, Op, Op.OperandB);
- Traverse(Nodes, Op, Op.OperandC);
-
- if (Op.Inst == ShaderIrInst.Texq ||
- Op.Inst == ShaderIrInst.Texs ||
- Op.Inst == ShaderIrInst.Tld4 ||
- Op.Inst == ShaderIrInst.Txlf)
+ Traverse(nodes, op, op.OperandA);
+ Traverse(nodes, op, op.OperandB);
+ Traverse(nodes, op, op.OperandC);
+
+ if (op.Inst == ShaderIrInst.Texq ||
+ op.Inst == ShaderIrInst.Texs ||
+ op.Inst == ShaderIrInst.Tld4 ||
+ op.Inst == ShaderIrInst.Txlf)
{
- int Handle = ((ShaderIrOperImm)Op.OperandC).Value;
+ int handle = ((ShaderIrOperImm)op.OperandC).Value;
- int Index = Handle - TexStartIndex;
+ int index = handle - TexStartIndex;
- string Name = StagePrefix + TextureName + Index;
+ string name = _stagePrefix + TextureName + index;
- GalTextureTarget TextureTarget;
+ GalTextureTarget textureTarget;
- TextureInstructionSuffix TextureInstructionSuffix;
+ TextureInstructionSuffix textureInstructionSuffix;
// TODO: Non 2D texture type for TEXQ?
- if (Op.Inst == ShaderIrInst.Texq)
+ if (op.Inst == ShaderIrInst.Texq)
{
- TextureTarget = GalTextureTarget.TwoD;
- TextureInstructionSuffix = TextureInstructionSuffix.None;
+ textureTarget = GalTextureTarget.TwoD;
+ textureInstructionSuffix = TextureInstructionSuffix.None;
}
else
{
- ShaderIrMetaTex Meta = ((ShaderIrMetaTex)Op.MetaData);
+ ShaderIrMetaTex meta = ((ShaderIrMetaTex)op.MetaData);
- TextureTarget = Meta.TextureTarget;
- TextureInstructionSuffix = Meta.TextureInstructionSuffix;
+ textureTarget = meta.TextureTarget;
+ textureInstructionSuffix = meta.TextureInstructionSuffix;
}
- m_Textures.TryAdd(Handle, new ShaderDeclInfo(Name, Handle, false, 0, 1, TextureTarget, TextureInstructionSuffix));
+ m_Textures.TryAdd(handle, new ShaderDeclInfo(name, handle, false, 0, 1, textureTarget, textureInstructionSuffix));
}
- else if (Op.Inst == ShaderIrInst.Texb)
+ else if (op.Inst == ShaderIrInst.Texb)
{
- ShaderIrNode HandleSrc = null;
+ ShaderIrNode handleSrc = null;
- int Index = Array.IndexOf(Nodes, Parent) - 1;
+ int index = Array.IndexOf(nodes, parent) - 1;
- for (; Index >= 0; Index--)
+ for (; index >= 0; index--)
{
- ShaderIrNode Curr = Nodes[Index];
+ ShaderIrNode curr = nodes[index];
- if (Curr is ShaderIrAsg Asg && Asg.Dst is ShaderIrOperGpr Gpr)
+ if (curr is ShaderIrAsg asg && asg.Dst is ShaderIrOperGpr gpr)
{
- if (Gpr.Index == ((ShaderIrOperGpr)Op.OperandC).Index)
+ if (gpr.Index == ((ShaderIrOperGpr)op.OperandC).Index)
{
- HandleSrc = Asg.Src;
+ handleSrc = asg.Src;
break;
}
}
}
- if (HandleSrc != null && HandleSrc is ShaderIrOperCbuf Cbuf)
+ if (handleSrc != null && handleSrc is ShaderIrOperCbuf cbuf)
{
- ShaderIrMetaTex Meta = ((ShaderIrMetaTex)Op.MetaData);
- string Name = StagePrefix + TextureName + "_cb" + Cbuf.Index + "_" + Cbuf.Pos;
+ ShaderIrMetaTex meta = ((ShaderIrMetaTex)op.MetaData);
+ string name = _stagePrefix + TextureName + "_cb" + cbuf.Index + "_" + cbuf.Pos;
- m_CbTextures.Add(Op, new ShaderDeclInfo(Name, Cbuf.Pos, true, Cbuf.Index, 1, Meta.TextureTarget, Meta.TextureInstructionSuffix));
+ m_CbTextures.Add(op, new ShaderDeclInfo(name, cbuf.Pos, true, cbuf.Index, 1, meta.TextureTarget, meta.TextureInstructionSuffix));
}
else
{
@@ -291,93 +290,93 @@ namespace Ryujinx.Graphics.Gal.Shader
break;
}
- case ShaderIrOperCbuf Cbuf:
+ case ShaderIrOperCbuf cbuf:
{
- if (!m_Uniforms.ContainsKey(Cbuf.Index))
+ if (!m_Uniforms.ContainsKey(cbuf.Index))
{
- string Name = StagePrefix + UniformName + Cbuf.Index;
+ string name = _stagePrefix + UniformName + cbuf.Index;
- ShaderDeclInfo DeclInfo = new ShaderDeclInfo(Name, Cbuf.Pos, true, Cbuf.Index);
+ ShaderDeclInfo declInfo = new ShaderDeclInfo(name, cbuf.Pos, true, cbuf.Index);
- m_Uniforms.Add(Cbuf.Index, DeclInfo);
+ m_Uniforms.Add(cbuf.Index, declInfo);
}
break;
}
- case ShaderIrOperAbuf Abuf:
+ case ShaderIrOperAbuf abuf:
{
//This is a built-in variable.
- if (Abuf.Offs == LayerAttr ||
- Abuf.Offs == PointSizeAttr ||
- Abuf.Offs == PointCoordAttrX ||
- Abuf.Offs == PointCoordAttrY ||
- Abuf.Offs == VertexIdAttr ||
- Abuf.Offs == InstanceIdAttr ||
- Abuf.Offs == FaceAttr)
+ if (abuf.Offs == LayerAttr ||
+ abuf.Offs == PointSizeAttr ||
+ abuf.Offs == PointCoordAttrX ||
+ abuf.Offs == PointCoordAttrY ||
+ abuf.Offs == VertexIdAttr ||
+ abuf.Offs == InstanceIdAttr ||
+ abuf.Offs == FaceAttr)
{
break;
}
- int Index = Abuf.Offs >> 4;
- int Elem = (Abuf.Offs >> 2) & 3;
+ int index = abuf.Offs >> 4;
+ int elem = (abuf.Offs >> 2) & 3;
- int GlslIndex = Index - AttrStartIndex;
+ int glslIndex = index - AttrStartIndex;
- if (GlslIndex < 0)
+ if (glslIndex < 0)
{
return;
}
- ShaderDeclInfo DeclInfo;
+ ShaderDeclInfo declInfo;
- if (Parent is ShaderIrAsg Asg && Asg.Dst == Node)
+ if (parent is ShaderIrAsg asg && asg.Dst == node)
{
- if (!m_OutAttributes.TryGetValue(Index, out DeclInfo))
+ if (!m_OutAttributes.TryGetValue(index, out declInfo))
{
- DeclInfo = new ShaderDeclInfo(OutAttrName + GlslIndex, GlslIndex);
+ declInfo = new ShaderDeclInfo(OutAttrName + glslIndex, glslIndex);
- m_OutAttributes.Add(Index, DeclInfo);
+ m_OutAttributes.Add(index, declInfo);
}
}
else
{
- if (!m_InAttributes.TryGetValue(Index, out DeclInfo))
+ if (!m_InAttributes.TryGetValue(index, out declInfo))
{
- DeclInfo = new ShaderDeclInfo(InAttrName + GlslIndex, GlslIndex);
+ declInfo = new ShaderDeclInfo(InAttrName + glslIndex, glslIndex);
- m_InAttributes.Add(Index, DeclInfo);
+ m_InAttributes.Add(index, declInfo);
}
}
- DeclInfo.Enlarge(Elem + 1);
+ declInfo.Enlarge(elem + 1);
- if (!m_Attributes.ContainsKey(Index))
+ if (!m_Attributes.ContainsKey(index))
{
- DeclInfo = new ShaderDeclInfo(AttrName + GlslIndex, GlslIndex, false, 0, 4);
+ declInfo = new ShaderDeclInfo(AttrName + glslIndex, glslIndex, false, 0, 4);
- m_Attributes.Add(Index, DeclInfo);
+ m_Attributes.Add(index, declInfo);
}
- Traverse(Nodes, Abuf, Abuf.Vertex);
+ Traverse(nodes, abuf, abuf.Vertex);
break;
}
- case ShaderIrOperGpr Gpr:
+ case ShaderIrOperGpr gpr:
{
- if (!Gpr.IsConst)
+ if (!gpr.IsConst)
{
- string Name = GetGprName(Gpr.Index);
+ string name = GetGprName(gpr.Index);
- if (Gpr.RegisterSize == ShaderRegisterSize.Single)
+ if (gpr.RegisterSize == ShaderRegisterSize.Single)
{
- m_Gprs.TryAdd(Gpr.Index, new ShaderDeclInfo(Name, Gpr.Index));
+ m_Gprs.TryAdd(gpr.Index, new ShaderDeclInfo(name, gpr.Index));
}
- else if (Gpr.RegisterSize == ShaderRegisterSize.Half)
+ else if (gpr.RegisterSize == ShaderRegisterSize.Half)
{
- Name += "_h" + Gpr.HalfPart;
+ name += "_h" + gpr.HalfPart;
- m_GprsHalf.TryAdd((Gpr.Index << 1) | Gpr.HalfPart, new ShaderDeclInfo(Name, Gpr.Index));
+ m_GprsHalf.TryAdd((gpr.Index << 1) | gpr.HalfPart, new ShaderDeclInfo(name, gpr.Index));
}
else /* if (Gpr.RegisterSize == ShaderRegisterSize.Double) */
{
@@ -387,35 +386,35 @@ namespace Ryujinx.Graphics.Gal.Shader
break;
}
- case ShaderIrOperPred Pred:
+ case ShaderIrOperPred pred:
{
- if (!Pred.IsConst && !HasName(m_Preds, Pred.Index))
+ if (!pred.IsConst && !HasName(m_Preds, pred.Index))
{
- string Name = PredName + Pred.Index;
+ string name = PredName + pred.Index;
- m_Preds.TryAdd(Pred.Index, new ShaderDeclInfo(Name, Pred.Index));
+ m_Preds.TryAdd(pred.Index, new ShaderDeclInfo(name, pred.Index));
}
break;
}
}
}
- private bool HasName(Dictionary<int, ShaderDeclInfo> Decls, int Index)
+ private bool HasName(Dictionary<int, ShaderDeclInfo> decls, int index)
{
//This is used to check if the dictionary already contains
//a entry for a vector at a given index position.
//Used to enable turning gprs into vectors.
- int VecIndex = Index & ~3;
+ int vecIndex = index & ~3;
- if (Decls.TryGetValue(VecIndex, out ShaderDeclInfo DeclInfo))
+ if (decls.TryGetValue(vecIndex, out ShaderDeclInfo declInfo))
{
- if (DeclInfo.Size > 1 && Index < VecIndex + DeclInfo.Size)
+ if (declInfo.Size > 1 && index < vecIndex + declInfo.Size)
{
return true;
}
}
- return Decls.ContainsKey(Index);
+ return decls.ContainsKey(index);
}
}
}
diff --git a/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs b/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs
index 5f809525..228a9018 100644
--- a/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs
+++ b/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs
@@ -10,9 +10,9 @@ namespace Ryujinx.Graphics.Gal.Shader
{
public class GlslDecompiler
{
- private delegate string GetInstExpr(ShaderIrOp Op);
+ private delegate string GetInstExpr(ShaderIrOp op);
- private Dictionary<ShaderIrInst, GetInstExpr> InstsExpr;
+ private Dictionary<ShaderIrInst, GetInstExpr> _instsExpr;
private enum OperType
{
@@ -25,21 +25,21 @@ namespace Ryujinx.Graphics.Gal.Shader
private const int MaxVertexInput = 3;
- private GlslDecl Decl;
+ private GlslDecl _decl;
- private ShaderHeader Header, HeaderB;
+ private ShaderHeader _header, _headerB;
- private ShaderIrBlock[] Blocks, BlocksB;
+ private ShaderIrBlock[] _blocks, _blocksB;
- private StringBuilder SB;
+ private StringBuilder _sb;
public int MaxUboSize { get; }
- private bool IsNvidiaDriver;
+ private bool _isNvidiaDriver;
- public GlslDecompiler(int MaxUboSize, bool IsNvidiaDriver)
+ public GlslDecompiler(int maxUboSize, bool isNvidiaDriver)
{
- InstsExpr = new Dictionary<ShaderIrInst, GetInstExpr>()
+ _instsExpr = new Dictionary<ShaderIrInst, GetInstExpr>()
{
{ ShaderIrInst.Abs, GetAbsExpr },
{ ShaderIrInst.Add, GetAddExpr },
@@ -114,48 +114,48 @@ namespace Ryujinx.Graphics.Gal.Shader
{ ShaderIrInst.Xor, GetXorExpr }
};
- this.MaxUboSize = MaxUboSize / 16;
- this.IsNvidiaDriver = IsNvidiaDriver;
+ MaxUboSize = maxUboSize / 16;
+ _isNvidiaDriver = isNvidiaDriver;
}
public GlslProgram Decompile(
- IGalMemory Memory,
- long VpAPosition,
- long VpBPosition,
- GalShaderType ShaderType)
+ IGalMemory memory,
+ long vpAPosition,
+ long vpBPosition,
+ GalShaderType shaderType)
{
- Header = new ShaderHeader(Memory, VpAPosition);
- HeaderB = new ShaderHeader(Memory, VpBPosition);
+ _header = new ShaderHeader(memory, vpAPosition);
+ _headerB = new ShaderHeader(memory, vpBPosition);
- Blocks = ShaderDecoder.Decode(Memory, VpAPosition);
- BlocksB = ShaderDecoder.Decode(Memory, VpBPosition);
+ _blocks = ShaderDecoder.Decode(memory, vpAPosition);
+ _blocksB = ShaderDecoder.Decode(memory, vpBPosition);
- GlslDecl DeclVpA = new GlslDecl(Blocks, ShaderType, Header);
- GlslDecl DeclVpB = new GlslDecl(BlocksB, ShaderType, HeaderB);
+ GlslDecl declVpA = new GlslDecl(_blocks, shaderType, _header);
+ GlslDecl declVpB = new GlslDecl(_blocksB, shaderType, _headerB);
- Decl = GlslDecl.Merge(DeclVpA, DeclVpB);
+ _decl = GlslDecl.Merge(declVpA, declVpB);
return Decompile();
}
- public GlslProgram Decompile(IGalMemory Memory, long Position, GalShaderType ShaderType)
+ public GlslProgram Decompile(IGalMemory memory, long position, GalShaderType shaderType)
{
- Header = new ShaderHeader(Memory, Position);
- HeaderB = null;
+ _header = new ShaderHeader(memory, position);
+ _headerB = null;
- Blocks = ShaderDecoder.Decode(Memory, Position);
- BlocksB = null;
+ _blocks = ShaderDecoder.Decode(memory, position);
+ _blocksB = null;
- Decl = new GlslDecl(Blocks, ShaderType, Header);
+ _decl = new GlslDecl(_blocks, shaderType, _header);
return Decompile();
}
private GlslProgram Decompile()
{
- SB = new StringBuilder();
+ _sb = new StringBuilder();
- SB.AppendLine("#version 410 core");
+ _sb.AppendLine("#version 410 core");
PrintDeclHeader();
PrintDeclTextures();
@@ -167,599 +167,599 @@ namespace Ryujinx.Graphics.Gal.Shader
PrintDeclPreds();
PrintDeclSsy();
- if (BlocksB != null)
+ if (_blocksB != null)
{
- PrintBlockScope(Blocks, GlslDecl.BasicBlockAName);
+ PrintBlockScope(_blocks, GlslDecl.BasicBlockAName);
- SB.AppendLine();
+ _sb.AppendLine();
- PrintBlockScope(BlocksB, GlslDecl.BasicBlockBName);
+ PrintBlockScope(_blocksB, GlslDecl.BasicBlockBName);
}
else
{
- PrintBlockScope(Blocks, GlslDecl.BasicBlockName);
+ PrintBlockScope(_blocks, GlslDecl.BasicBlockName);
}
- SB.AppendLine();
+ _sb.AppendLine();
PrintMain();
- string GlslCode = SB.ToString();
+ string glslCode = _sb.ToString();
- List<ShaderDeclInfo> TextureInfo = new List<ShaderDeclInfo>();
+ List<ShaderDeclInfo> textureInfo = new List<ShaderDeclInfo>();
- TextureInfo.AddRange(Decl.Textures.Values);
- TextureInfo.AddRange(IterateCbTextures());
+ textureInfo.AddRange(_decl.Textures.Values);
+ textureInfo.AddRange(IterateCbTextures());
- return new GlslProgram(GlslCode, TextureInfo, Decl.Uniforms.Values);
+ return new GlslProgram(glslCode, textureInfo, _decl.Uniforms.Values);
}
private void PrintDeclHeader()
{
- if (Decl.ShaderType == GalShaderType.Geometry)
+ if (_decl.ShaderType == GalShaderType.Geometry)
{
- int MaxVertices = Header.MaxOutputVertexCount;
+ int maxVertices = _header.MaxOutputVertexCount;
- string OutputTopology;
+ string outputTopology;
- switch (Header.OutputTopology)
+ switch (_header.OutputTopology)
{
- case ShaderHeader.PointList: OutputTopology = "points"; break;
- case ShaderHeader.LineStrip: OutputTopology = "line_strip"; break;
- case ShaderHeader.TriangleStrip: OutputTopology = "triangle_strip"; break;
+ case ShaderHeader.PointList: outputTopology = "points"; break;
+ case ShaderHeader.LineStrip: outputTopology = "line_strip"; break;
+ case ShaderHeader.TriangleStrip: outputTopology = "triangle_strip"; break;
default: throw new InvalidOperationException();
}
- SB.AppendLine("#extension GL_ARB_enhanced_layouts : require");
+ _sb.AppendLine("#extension GL_ARB_enhanced_layouts : require");
- SB.AppendLine();
+ _sb.AppendLine();
- SB.AppendLine("// Stubbed. Maxwell geometry shaders don't inform input geometry type");
+ _sb.AppendLine("// Stubbed. Maxwell geometry shaders don't inform input geometry type");
- SB.AppendLine("layout(triangles) in;" + Environment.NewLine);
+ _sb.AppendLine("layout(triangles) in;" + Environment.NewLine);
- SB.AppendLine($"layout({OutputTopology}, max_vertices = {MaxVertices}) out;");
+ _sb.AppendLine($"layout({outputTopology}, max_vertices = {maxVertices}) out;");
- SB.AppendLine();
+ _sb.AppendLine();
}
}
- private string GetSamplerType(TextureTarget TextureTarget, bool HasShadow)
+ private string GetSamplerType(TextureTarget textureTarget, bool hasShadow)
{
- string Result;
+ string result;
- switch (TextureTarget)
+ switch (textureTarget)
{
case TextureTarget.Texture1D:
- Result = "sampler1D";
+ result = "sampler1D";
break;
case TextureTarget.Texture2D:
- Result = "sampler2D";
+ result = "sampler2D";
break;
case TextureTarget.Texture3D:
- Result = "sampler3D";
+ result = "sampler3D";
break;
case TextureTarget.TextureCubeMap:
- Result = "samplerCube";
+ result = "samplerCube";
break;
case TextureTarget.TextureRectangle:
- Result = "sampler2DRect";
+ result = "sampler2DRect";
break;
case TextureTarget.Texture1DArray:
- Result = "sampler1DArray";
+ result = "sampler1DArray";
break;
case TextureTarget.Texture2DArray:
- Result = "sampler2DArray";
+ result = "sampler2DArray";
break;
case TextureTarget.TextureCubeMapArray:
- Result = "samplerCubeArray";
+ result = "samplerCubeArray";
break;
case TextureTarget.TextureBuffer:
- Result = "samplerBuffer";
+ result = "samplerBuffer";
break;
case TextureTarget.Texture2DMultisample:
- Result = "sampler2DMS";
+ result = "sampler2DMS";
break;
case TextureTarget.Texture2DMultisampleArray:
- Result = "sampler2DMSArray";
+ result = "sampler2DMSArray";
break;
default:
throw new NotSupportedException();
}
- if (HasShadow)
- Result += "Shadow";
+ if (hasShadow)
+ result += "Shadow";
- return Result;
+ return result;
}
private void PrintDeclTextures()
{
- foreach (ShaderDeclInfo DeclInfo in IterateCbTextures())
+ foreach (ShaderDeclInfo declInfo in IterateCbTextures())
{
- TextureTarget Target = ImageUtils.GetTextureTarget(DeclInfo.TextureTarget);
- SB.AppendLine($"// {DeclInfo.TextureSuffix}");
- SB.AppendLine("uniform " + GetSamplerType(Target, (DeclInfo.TextureSuffix & TextureInstructionSuffix.DC) != 0) + " " + DeclInfo.Name + ";");
+ TextureTarget target = ImageUtils.GetTextureTarget(declInfo.TextureTarget);
+ _sb.AppendLine($"// {declInfo.TextureSuffix}");
+ _sb.AppendLine("uniform " + GetSamplerType(target, (declInfo.TextureSuffix & TextureInstructionSuffix.Dc) != 0) + " " + declInfo.Name + ";");
}
- foreach (ShaderDeclInfo DeclInfo in Decl.Textures.Values.OrderBy(DeclKeySelector))
+ foreach (ShaderDeclInfo declInfo in _decl.Textures.Values.OrderBy(DeclKeySelector))
{
- TextureTarget Target = ImageUtils.GetTextureTarget(DeclInfo.TextureTarget);
- SB.AppendLine($"// {DeclInfo.TextureSuffix}");
- SB.AppendLine("uniform " + GetSamplerType(Target, (DeclInfo.TextureSuffix & TextureInstructionSuffix.DC) != 0) + " " + DeclInfo.Name + ";");
+ TextureTarget target = ImageUtils.GetTextureTarget(declInfo.TextureTarget);
+ _sb.AppendLine($"// {declInfo.TextureSuffix}");
+ _sb.AppendLine("uniform " + GetSamplerType(target, (declInfo.TextureSuffix & TextureInstructionSuffix.Dc) != 0) + " " + declInfo.Name + ";");
}
}
private IEnumerable<ShaderDeclInfo> IterateCbTextures()
{
- HashSet<string> Names = new HashSet<string>();
+ HashSet<string> names = new HashSet<string>();
- foreach (ShaderDeclInfo DeclInfo in Decl.CbTextures.Values.OrderBy(DeclKeySelector))
+ foreach (ShaderDeclInfo declInfo in _decl.CbTextures.Values.OrderBy(DeclKeySelector))
{
- if (Names.Add(DeclInfo.Name))
+ if (names.Add(declInfo.Name))
{
- yield return DeclInfo;
+ yield return declInfo;
}
}
}
private void PrintDeclUniforms()
{
- if (Decl.ShaderType == GalShaderType.Vertex)
+ if (_decl.ShaderType == GalShaderType.Vertex)
{
//Memory layout here is [flip_x, flip_y, instance, unused]
//It's using 4 bytes, not 8
- SB.AppendLine("layout (std140) uniform " + GlslDecl.ExtraUniformBlockName + " {");
+ _sb.AppendLine("layout (std140) uniform " + GlslDecl.ExtraUniformBlockName + " {");
- SB.AppendLine(IdentationStr + "vec2 " + GlslDecl.FlipUniformName + ";");
+ _sb.AppendLine(IdentationStr + "vec2 " + GlslDecl.FlipUniformName + ";");
- SB.AppendLine(IdentationStr + "int " + GlslDecl.InstanceUniformName + ";");
+ _sb.AppendLine(IdentationStr + "int " + GlslDecl.InstanceUniformName + ";");
- SB.AppendLine("};");
- SB.AppendLine();
+ _sb.AppendLine("};");
+ _sb.AppendLine();
}
- foreach (ShaderDeclInfo DeclInfo in Decl.Uniforms.Values.OrderBy(DeclKeySelector))
+ foreach (ShaderDeclInfo declInfo in _decl.Uniforms.Values.OrderBy(DeclKeySelector))
{
- SB.AppendLine($"layout (std140) uniform {DeclInfo.Name} {{");
+ _sb.AppendLine($"layout (std140) uniform {declInfo.Name} {{");
- SB.AppendLine($"{IdentationStr}vec4 {DeclInfo.Name}_data[{MaxUboSize}];");
+ _sb.AppendLine($"{IdentationStr}vec4 {declInfo.Name}_data[{MaxUboSize}];");
- SB.AppendLine("};");
+ _sb.AppendLine("};");
}
- if (Decl.Uniforms.Count > 0)
+ if (_decl.Uniforms.Count > 0)
{
- SB.AppendLine();
+ _sb.AppendLine();
}
}
private void PrintDeclAttributes()
{
- string GeometryArray = (Decl.ShaderType == GalShaderType.Geometry) ? "[" + MaxVertexInput + "]" : "";
+ string geometryArray = (_decl.ShaderType == GalShaderType.Geometry) ? "[" + MaxVertexInput + "]" : "";
- PrintDecls(Decl.Attributes, Suffix: GeometryArray);
+ PrintDecls(_decl.Attributes, suffix: geometryArray);
}
private void PrintDeclInAttributes()
{
- if (Decl.ShaderType == GalShaderType.Fragment)
+ if (_decl.ShaderType == GalShaderType.Fragment)
{
- SB.AppendLine("layout (location = " + GlslDecl.PositionOutAttrLocation + ") in vec4 " + GlslDecl.PositionOutAttrName + ";");
+ _sb.AppendLine("layout (location = " + GlslDecl.PositionOutAttrLocation + ") in vec4 " + GlslDecl.PositionOutAttrName + ";");
}
- if (Decl.ShaderType == GalShaderType.Geometry)
+ if (_decl.ShaderType == GalShaderType.Geometry)
{
- if (Decl.InAttributes.Count > 0)
+ if (_decl.InAttributes.Count > 0)
{
- SB.AppendLine("in Vertex {");
+ _sb.AppendLine("in Vertex {");
- foreach (ShaderDeclInfo DeclInfo in Decl.InAttributes.Values.OrderBy(DeclKeySelector))
+ foreach (ShaderDeclInfo declInfo in _decl.InAttributes.Values.OrderBy(DeclKeySelector))
{
- if (DeclInfo.Index >= 0)
+ if (declInfo.Index >= 0)
{
- SB.AppendLine(IdentationStr + "layout (location = " + DeclInfo.Index + ") vec4 " + DeclInfo.Name + "; ");
+ _sb.AppendLine(IdentationStr + "layout (location = " + declInfo.Index + ") vec4 " + declInfo.Name + "; ");
}
}
- SB.AppendLine("} block_in[];" + Environment.NewLine);
+ _sb.AppendLine("} block_in[];" + Environment.NewLine);
}
}
else
{
- PrintDeclAttributes(Decl.InAttributes.Values, "in");
+ PrintDeclAttributes(_decl.InAttributes.Values, "in");
}
}
private void PrintDeclOutAttributes()
{
- if (Decl.ShaderType == GalShaderType.Fragment)
+ if (_decl.ShaderType == GalShaderType.Fragment)
{
- int Count = 0;
+ int count = 0;
- for (int Attachment = 0; Attachment < 8; Attachment++)
+ for (int attachment = 0; attachment < 8; attachment++)
{
- if (Header.OmapTargets[Attachment].Enabled)
+ if (_header.OmapTargets[attachment].Enabled)
{
- SB.AppendLine("layout (location = " + Attachment + ") out vec4 " + GlslDecl.FragmentOutputName + Attachment + ";");
+ _sb.AppendLine("layout (location = " + attachment + ") out vec4 " + GlslDecl.FragmentOutputName + attachment + ";");
- Count++;
+ count++;
}
}
- if (Count > 0)
+ if (count > 0)
{
- SB.AppendLine();
+ _sb.AppendLine();
}
}
else
{
- SB.AppendLine("layout (location = " + GlslDecl.PositionOutAttrLocation + ") out vec4 " + GlslDecl.PositionOutAttrName + ";");
- SB.AppendLine();
+ _sb.AppendLine("layout (location = " + GlslDecl.PositionOutAttrLocation + ") out vec4 " + GlslDecl.PositionOutAttrName + ";");
+ _sb.AppendLine();
}
- PrintDeclAttributes(Decl.OutAttributes.Values, "out");
+ PrintDeclAttributes(_decl.OutAttributes.Values, "out");
}
- private void PrintDeclAttributes(IEnumerable<ShaderDeclInfo> Decls, string InOut)
+ private void PrintDeclAttributes(IEnumerable<ShaderDeclInfo> decls, string inOut)
{
- int Count = 0;
+ int count = 0;
- foreach (ShaderDeclInfo DeclInfo in Decls.OrderBy(DeclKeySelector))
+ foreach (ShaderDeclInfo declInfo in decls.OrderBy(DeclKeySelector))
{
- if (DeclInfo.Index >= 0)
+ if (declInfo.Index >= 0)
{
- SB.AppendLine("layout (location = " + DeclInfo.Index + ") " + InOut + " vec4 " + DeclInfo.Name + ";");
+ _sb.AppendLine("layout (location = " + declInfo.Index + ") " + inOut + " vec4 " + declInfo.Name + ";");
- Count++;
+ count++;
}
}
- if (Count > 0)
+ if (count > 0)
{
- SB.AppendLine();
+ _sb.AppendLine();
}
}
private void PrintDeclGprs()
{
- PrintDecls(Decl.Gprs);
- PrintDecls(Decl.GprsHalf);
+ PrintDecls(_decl.Gprs);
+ PrintDecls(_decl.GprsHalf);
}
private void PrintDeclPreds()
{
- PrintDecls(Decl.Preds, "bool");
+ PrintDecls(_decl.Preds, "bool");
}
private void PrintDeclSsy()
{
- SB.AppendLine("uint " + GlslDecl.SsyCursorName + " = 0;");
+ _sb.AppendLine("uint " + GlslDecl.SsyCursorName + " = 0;");
- SB.AppendLine("uint " + GlslDecl.SsyStackName + "[" + GlslDecl.SsyStackSize + "];" + Environment.NewLine);
+ _sb.AppendLine("uint " + GlslDecl.SsyStackName + "[" + GlslDecl.SsyStackSize + "];" + Environment.NewLine);
}
- private void PrintDecls(IReadOnlyDictionary<int, ShaderDeclInfo> Dict, string CustomType = null, string Suffix = "")
+ private void PrintDecls(IReadOnlyDictionary<int, ShaderDeclInfo> dict, string customType = null, string suffix = "")
{
- foreach (ShaderDeclInfo DeclInfo in Dict.Values.OrderBy(DeclKeySelector))
+ foreach (ShaderDeclInfo declInfo in dict.Values.OrderBy(DeclKeySelector))
{
- string Name;
+ string name;
- if (CustomType != null)
+ if (customType != null)
{
- Name = CustomType + " " + DeclInfo.Name + Suffix + ";";
+ name = customType + " " + declInfo.Name + suffix + ";";
}
- else if (DeclInfo.Name.Contains(GlslDecl.FragmentOutputName))
+ else if (declInfo.Name.Contains(GlslDecl.FragmentOutputName))
{
- Name = "layout (location = " + DeclInfo.Index / 4 + ") out vec4 " + DeclInfo.Name + Suffix + ";";
+ name = "layout (location = " + declInfo.Index / 4 + ") out vec4 " + declInfo.Name + suffix + ";";
}
else
{
- Name = GetDecl(DeclInfo) + Suffix + ";";
+ name = GetDecl(declInfo) + suffix + ";";
}
- SB.AppendLine(Name);
+ _sb.AppendLine(name);
}
- if (Dict.Count > 0)
+ if (dict.Count > 0)
{
- SB.AppendLine();
+ _sb.AppendLine();
}
}
- private int DeclKeySelector(ShaderDeclInfo DeclInfo)
+ private int DeclKeySelector(ShaderDeclInfo declInfo)
{
- return DeclInfo.Cbuf << 24 | DeclInfo.Index;
+ return declInfo.Cbuf << 24 | declInfo.Index;
}
- private string GetDecl(ShaderDeclInfo DeclInfo)
+ private string GetDecl(ShaderDeclInfo declInfo)
{
- if (DeclInfo.Size == 4)
+ if (declInfo.Size == 4)
{
- return "vec4 " + DeclInfo.Name;
+ return "vec4 " + declInfo.Name;
}
else
{
- return "float " + DeclInfo.Name;
+ return "float " + declInfo.Name;
}
}
private void PrintMain()
{
- SB.AppendLine("void main() {");
+ _sb.AppendLine("void main() {");
- foreach (KeyValuePair<int, ShaderDeclInfo> KV in Decl.InAttributes)
+ foreach (KeyValuePair<int, ShaderDeclInfo> kv in _decl.InAttributes)
{
- if (!Decl.Attributes.TryGetValue(KV.Key, out ShaderDeclInfo Attr))
+ if (!_decl.Attributes.TryGetValue(kv.Key, out ShaderDeclInfo attr))
{
continue;
}
- ShaderDeclInfo DeclInfo = KV.Value;
+ ShaderDeclInfo declInfo = kv.Value;
- if (Decl.ShaderType == GalShaderType.Geometry)
+ if (_decl.ShaderType == GalShaderType.Geometry)
{
- for (int Vertex = 0; Vertex < MaxVertexInput; Vertex++)
+ for (int vertex = 0; vertex < MaxVertexInput; vertex++)
{
- string Dst = Attr.Name + "[" + Vertex + "]";
+ string dst = attr.Name + "[" + vertex + "]";
- string Src = "block_in[" + Vertex + "]." + DeclInfo.Name;
+ string src = "block_in[" + vertex + "]." + declInfo.Name;
- SB.AppendLine(IdentationStr + Dst + " = " + Src + ";");
+ _sb.AppendLine(IdentationStr + dst + " = " + src + ";");
}
}
else
{
- SB.AppendLine(IdentationStr + Attr.Name + " = " + DeclInfo.Name + ";");
+ _sb.AppendLine(IdentationStr + attr.Name + " = " + declInfo.Name + ";");
}
}
- SB.AppendLine(IdentationStr + "uint pc;");
+ _sb.AppendLine(IdentationStr + "uint pc;");
- if (BlocksB != null)
+ if (_blocksB != null)
{
- PrintProgram(Blocks, GlslDecl.BasicBlockAName);
- PrintProgram(BlocksB, GlslDecl.BasicBlockBName);
+ PrintProgram(_blocks, GlslDecl.BasicBlockAName);
+ PrintProgram(_blocksB, GlslDecl.BasicBlockBName);
}
else
{
- PrintProgram(Blocks, GlslDecl.BasicBlockName);
+ PrintProgram(_blocks, GlslDecl.BasicBlockName);
}
- if (Decl.ShaderType != GalShaderType.Geometry)
+ if (_decl.ShaderType != GalShaderType.Geometry)
{
PrintAttrToOutput();
}
- if (Decl.ShaderType == GalShaderType.Fragment)
+ if (_decl.ShaderType == GalShaderType.Fragment)
{
- if (Header.OmapDepth)
+ if (_header.OmapDepth)
{
- SB.AppendLine(IdentationStr + "gl_FragDepth = " + GlslDecl.GetGprName(Header.DepthRegister) + ";");
+ _sb.AppendLine(IdentationStr + "gl_FragDepth = " + GlslDecl.GetGprName(_header.DepthRegister) + ";");
}
- int GprIndex = 0;
+ int gprIndex = 0;
- for (int Attachment = 0; Attachment < 8; Attachment++)
+ for (int attachment = 0; attachment < 8; attachment++)
{
- string Output = GlslDecl.FragmentOutputName + Attachment;
+ string output = GlslDecl.FragmentOutputName + attachment;
- OmapTarget Target = Header.OmapTargets[Attachment];
+ OmapTarget target = _header.OmapTargets[attachment];
- for (int Component = 0; Component < 4; Component++)
+ for (int component = 0; component < 4; component++)
{
- if (Target.ComponentEnabled(Component))
+ if (target.ComponentEnabled(component))
{
- SB.AppendLine(IdentationStr + Output + "[" + Component + "] = " + GlslDecl.GetGprName(GprIndex) + ";");
+ _sb.AppendLine(IdentationStr + output + "[" + component + "] = " + GlslDecl.GetGprName(gprIndex) + ";");
- GprIndex++;
+ gprIndex++;
}
}
}
}
- SB.AppendLine("}");
+ _sb.AppendLine("}");
}
- private void PrintProgram(ShaderIrBlock[] Blocks, string Name)
+ private void PrintProgram(ShaderIrBlock[] blocks, string name)
{
- const string Ident1 = IdentationStr;
- const string Ident2 = Ident1 + IdentationStr;
- const string Ident3 = Ident2 + IdentationStr;
- const string Ident4 = Ident3 + IdentationStr;
+ const string ident1 = IdentationStr;
+ const string ident2 = ident1 + IdentationStr;
+ const string ident3 = ident2 + IdentationStr;
+ const string ident4 = ident3 + IdentationStr;
- SB.AppendLine(Ident1 + "pc = " + GetBlockPosition(Blocks[0]) + ";");
- SB.AppendLine(Ident1 + "do {");
- SB.AppendLine(Ident2 + "switch (pc) {");
+ _sb.AppendLine(ident1 + "pc = " + GetBlockPosition(blocks[0]) + ";");
+ _sb.AppendLine(ident1 + "do {");
+ _sb.AppendLine(ident2 + "switch (pc) {");
- foreach (ShaderIrBlock Block in Blocks)
+ foreach (ShaderIrBlock block in blocks)
{
- string FunctionName = Block.Position.ToString("x8");
+ string functionName = block.Position.ToString("x8");
- SB.AppendLine(Ident3 + "case 0x" + FunctionName + ": pc = " + Name + "_" + FunctionName + "(); break;");
+ _sb.AppendLine(ident3 + "case 0x" + functionName + ": pc = " + name + "_" + functionName + "(); break;");
}
- SB.AppendLine(Ident3 + "default:");
- SB.AppendLine(Ident4 + "pc = 0;");
- SB.AppendLine(Ident4 + "break;");
+ _sb.AppendLine(ident3 + "default:");
+ _sb.AppendLine(ident4 + "pc = 0;");
+ _sb.AppendLine(ident4 + "break;");
- SB.AppendLine(Ident2 + "}");
- SB.AppendLine(Ident1 + "} while (pc != 0);");
+ _sb.AppendLine(ident2 + "}");
+ _sb.AppendLine(ident1 + "} while (pc != 0);");
}
- private void PrintAttrToOutput(string Identation = IdentationStr)
+ private void PrintAttrToOutput(string identation = IdentationStr)
{
- foreach (KeyValuePair<int, ShaderDeclInfo> KV in Decl.OutAttributes)
+ foreach (KeyValuePair<int, ShaderDeclInfo> kv in _decl.OutAttributes)
{
- if (!Decl.Attributes.TryGetValue(KV.Key, out ShaderDeclInfo Attr))
+ if (!_decl.Attributes.TryGetValue(kv.Key, out ShaderDeclInfo attr))
{
continue;
}
- ShaderDeclInfo DeclInfo = KV.Value;
+ ShaderDeclInfo declInfo = kv.Value;
- string Name = Attr.Name;
+ string name = attr.Name;
- if (Decl.ShaderType == GalShaderType.Geometry)
+ if (_decl.ShaderType == GalShaderType.Geometry)
{
- Name += "[0]";
+ name += "[0]";
}
- SB.AppendLine(Identation + DeclInfo.Name + " = " + Name + ";");
+ _sb.AppendLine(identation + declInfo.Name + " = " + name + ";");
}
- if (Decl.ShaderType == GalShaderType.Vertex)
+ if (_decl.ShaderType == GalShaderType.Vertex)
{
- SB.AppendLine(Identation + "gl_Position.xy *= " + GlslDecl.FlipUniformName + ";");
+ _sb.AppendLine(identation + "gl_Position.xy *= " + GlslDecl.FlipUniformName + ";");
}
- if (Decl.ShaderType != GalShaderType.Fragment)
+ if (_decl.ShaderType != GalShaderType.Fragment)
{
- SB.AppendLine(Identation + GlslDecl.PositionOutAttrName + " = gl_Position;");
- SB.AppendLine(Identation + GlslDecl.PositionOutAttrName + ".w = 1;");
+ _sb.AppendLine(identation + GlslDecl.PositionOutAttrName + " = gl_Position;");
+ _sb.AppendLine(identation + GlslDecl.PositionOutAttrName + ".w = 1;");
}
}
- private void PrintBlockScope(ShaderIrBlock[] Blocks, string Name)
+ private void PrintBlockScope(ShaderIrBlock[] blocks, string name)
{
- foreach (ShaderIrBlock Block in Blocks)
+ foreach (ShaderIrBlock block in blocks)
{
- SB.AppendLine("uint " + Name + "_" + Block.Position.ToString("x8") + "() {");
+ _sb.AppendLine("uint " + name + "_" + block.Position.ToString("x8") + "() {");
- PrintNodes(Block, Block.GetNodes());
+ PrintNodes(block, block.GetNodes());
- SB.AppendLine("}" + Environment.NewLine);
+ _sb.AppendLine("}" + Environment.NewLine);
}
}
- private void PrintNodes(ShaderIrBlock Block, ShaderIrNode[] Nodes)
+ private void PrintNodes(ShaderIrBlock block, ShaderIrNode[] nodes)
{
- foreach (ShaderIrNode Node in Nodes)
+ foreach (ShaderIrNode node in nodes)
{
- PrintNode(Block, Node, IdentationStr);
+ PrintNode(block, node, IdentationStr);
}
- if (Nodes.Length == 0)
+ if (nodes.Length == 0)
{
- SB.AppendLine(IdentationStr + "return 0u;");
+ _sb.AppendLine(IdentationStr + "return 0u;");
return;
}
- ShaderIrNode Last = Nodes[Nodes.Length - 1];
+ ShaderIrNode last = nodes[nodes.Length - 1];
- bool UnconditionalFlowChange = false;
+ bool unconditionalFlowChange = false;
- if (Last is ShaderIrOp Op)
+ if (last is ShaderIrOp op)
{
- switch (Op.Inst)
+ switch (op.Inst)
{
case ShaderIrInst.Bra:
case ShaderIrInst.Exit:
case ShaderIrInst.Sync:
- UnconditionalFlowChange = true;
+ unconditionalFlowChange = true;
break;
}
}
- if (!UnconditionalFlowChange)
+ if (!unconditionalFlowChange)
{
- if (Block.Next != null)
+ if (block.Next != null)
{
- SB.AppendLine(IdentationStr + "return " + GetBlockPosition(Block.Next) + ";");
+ _sb.AppendLine(IdentationStr + "return " + GetBlockPosition(block.Next) + ";");
}
else
{
- SB.AppendLine(IdentationStr + "return 0u;");
+ _sb.AppendLine(IdentationStr + "return 0u;");
}
}
}
- private void PrintNode(ShaderIrBlock Block, ShaderIrNode Node, string Identation)
+ private void PrintNode(ShaderIrBlock block, ShaderIrNode node, string identation)
{
- if (Node is ShaderIrCond Cond)
+ if (node is ShaderIrCond cond)
{
- string IfExpr = GetSrcExpr(Cond.Pred, true);
+ string ifExpr = GetSrcExpr(cond.Pred, true);
- if (Cond.Not)
+ if (cond.Not)
{
- IfExpr = "!(" + IfExpr + ")";
+ ifExpr = "!(" + ifExpr + ")";
}
- SB.AppendLine(Identation + "if (" + IfExpr + ") {");
+ _sb.AppendLine(identation + "if (" + ifExpr + ") {");
- PrintNode(Block, Cond.Child, Identation + IdentationStr);
+ PrintNode(block, cond.Child, identation + IdentationStr);
- SB.AppendLine(Identation + "}");
+ _sb.AppendLine(identation + "}");
}
- else if (Node is ShaderIrAsg Asg)
+ else if (node is ShaderIrAsg asg)
{
- if (IsValidOutOper(Asg.Dst))
+ if (IsValidOutOper(asg.Dst))
{
- string Expr = GetSrcExpr(Asg.Src, true);
+ string expr = GetSrcExpr(asg.Src, true);
- Expr = GetExprWithCast(Asg.Dst, Asg.Src, Expr);
+ expr = GetExprWithCast(asg.Dst, asg.Src, expr);
- SB.AppendLine(Identation + GetDstOperName(Asg.Dst) + " = " + Expr + ";");
+ _sb.AppendLine(identation + GetDstOperName(asg.Dst) + " = " + expr + ";");
}
}
- else if (Node is ShaderIrOp Op)
+ else if (node is ShaderIrOp op)
{
- switch (Op.Inst)
+ switch (op.Inst)
{
case ShaderIrInst.Bra:
{
- SB.AppendLine(Identation + "return " + GetBlockPosition(Block.Branch) + ";");
+ _sb.AppendLine(identation + "return " + GetBlockPosition(block.Branch) + ";");
break;
}
case ShaderIrInst.Emit:
{
- PrintAttrToOutput(Identation);
+ PrintAttrToOutput(identation);
- SB.AppendLine(Identation + "EmitVertex();");
+ _sb.AppendLine(identation + "EmitVertex();");
break;
}
case ShaderIrInst.Ssy:
{
- string StackIndex = GlslDecl.SsyStackName + "[" + GlslDecl.SsyCursorName + "]";
+ string stackIndex = GlslDecl.SsyStackName + "[" + GlslDecl.SsyCursorName + "]";
- int TargetPosition = (Op.OperandA as ShaderIrOperImm).Value;
+ int targetPosition = (op.OperandA as ShaderIrOperImm).Value;
- string Target = "0x" + TargetPosition.ToString("x8") + "u";
+ string target = "0x" + targetPosition.ToString("x8") + "u";
- SB.AppendLine(Identation + StackIndex + " = " + Target + ";");
+ _sb.AppendLine(identation + stackIndex + " = " + target + ";");
- SB.AppendLine(Identation + GlslDecl.SsyCursorName + "++;");
+ _sb.AppendLine(identation + GlslDecl.SsyCursorName + "++;");
break;
}
case ShaderIrInst.Sync:
{
- SB.AppendLine(Identation + GlslDecl.SsyCursorName + "--;");
+ _sb.AppendLine(identation + GlslDecl.SsyCursorName + "--;");
- string Target = GlslDecl.SsyStackName + "[" + GlslDecl.SsyCursorName + "]";
+ string target = GlslDecl.SsyStackName + "[" + GlslDecl.SsyCursorName + "]";
- SB.AppendLine(Identation + "return " + Target + ";");
+ _sb.AppendLine(identation + "return " + target + ";");
break;
}
default:
- SB.AppendLine(Identation + GetSrcExpr(Op, true) + ";");
+ _sb.AppendLine(identation + GetSrcExpr(op, true) + ";");
break;
}
}
- else if (Node is ShaderIrCmnt Cmnt)
+ else if (node is ShaderIrCmnt cmnt)
{
- SB.AppendLine(Identation + "// " + Cmnt.Comment);
+ _sb.AppendLine(identation + "// " + cmnt.Comment);
}
else
{
@@ -767,13 +767,13 @@ namespace Ryujinx.Graphics.Gal.Shader
}
}
- private bool IsValidOutOper(ShaderIrNode Node)
+ private bool IsValidOutOper(ShaderIrNode node)
{
- if (Node is ShaderIrOperGpr Gpr && Gpr.IsConst)
+ if (node is ShaderIrOperGpr gpr && gpr.IsConst)
{
return false;
}
- else if (Node is ShaderIrOperPred Pred && Pred.IsConst)
+ else if (node is ShaderIrOperPred pred && pred.IsConst)
{
return false;
}
@@ -781,61 +781,61 @@ namespace Ryujinx.Graphics.Gal.Shader
return true;
}
- private string GetDstOperName(ShaderIrNode Node)
+ private string GetDstOperName(ShaderIrNode node)
{
- if (Node is ShaderIrOperAbuf Abuf)
+ if (node is ShaderIrOperAbuf abuf)
{
- return GetOutAbufName(Abuf);
+ return GetOutAbufName(abuf);
}
- else if (Node is ShaderIrOperGpr Gpr)
+ else if (node is ShaderIrOperGpr gpr)
{
- return GetName(Gpr);
+ return GetName(gpr);
}
- else if (Node is ShaderIrOperPred Pred)
+ else if (node is ShaderIrOperPred pred)
{
- return GetName(Pred);
+ return GetName(pred);
}
- throw new ArgumentException(nameof(Node));
+ throw new ArgumentException(nameof(node));
}
- private string GetSrcExpr(ShaderIrNode Node, bool Entry = false)
+ private string GetSrcExpr(ShaderIrNode node, bool entry = false)
{
- switch (Node)
+ switch (node)
{
- case ShaderIrOperAbuf Abuf: return GetName (Abuf);
- case ShaderIrOperCbuf Cbuf: return GetName (Cbuf);
- case ShaderIrOperGpr Gpr: return GetName (Gpr);
- case ShaderIrOperImm Imm: return GetValue(Imm);
- case ShaderIrOperImmf Immf: return GetValue(Immf);
- case ShaderIrOperPred Pred: return GetName (Pred);
+ case ShaderIrOperAbuf abuf: return GetName (abuf);
+ case ShaderIrOperCbuf cbuf: return GetName (cbuf);
+ case ShaderIrOperGpr gpr: return GetName (gpr);
+ case ShaderIrOperImm imm: return GetValue(imm);
+ case ShaderIrOperImmf immf: return GetValue(immf);
+ case ShaderIrOperPred pred: return GetName (pred);
- case ShaderIrOp Op:
- string Expr;
+ case ShaderIrOp op:
+ string expr;
- if (InstsExpr.TryGetValue(Op.Inst, out GetInstExpr GetExpr))
+ if (_instsExpr.TryGetValue(op.Inst, out GetInstExpr getExpr))
{
- Expr = GetExpr(Op);
+ expr = getExpr(op);
}
else
{
- throw new NotImplementedException(Op.Inst.ToString());
+ throw new NotImplementedException(op.Inst.ToString());
}
- if (!Entry && NeedsParentheses(Op))
+ if (!entry && NeedsParentheses(op))
{
- Expr = "(" + Expr + ")";
+ expr = "(" + expr + ")";
}
- return Expr;
+ return expr;
- default: throw new ArgumentException(nameof(Node));
+ default: throw new ArgumentException(nameof(node));
}
}
- private static bool NeedsParentheses(ShaderIrOp Op)
+ private static bool NeedsParentheses(ShaderIrOp op)
{
- switch (Op.Inst)
+ switch (op.Inst)
{
case ShaderIrInst.Ipa:
case ShaderIrInst.Texq:
@@ -848,63 +848,63 @@ namespace Ryujinx.Graphics.Gal.Shader
return true;
}
- private string GetName(ShaderIrOperCbuf Cbuf)
+ private string GetName(ShaderIrOperCbuf cbuf)
{
- if (!Decl.Uniforms.TryGetValue(Cbuf.Index, out ShaderDeclInfo DeclInfo))
+ if (!_decl.Uniforms.TryGetValue(cbuf.Index, out ShaderDeclInfo declInfo))
{
throw new InvalidOperationException();
}
- if (Cbuf.Offs != null)
+ if (cbuf.Offs != null)
{
- string Offset = "floatBitsToInt(" + GetSrcExpr(Cbuf.Offs) + ")";
+ string offset = "floatBitsToInt(" + GetSrcExpr(cbuf.Offs) + ")";
- string Index = "(" + Cbuf.Pos * 4 + " + " + Offset + ")";
+ string index = "(" + cbuf.Pos * 4 + " + " + offset + ")";
- return $"{DeclInfo.Name}_data[{Index} / 16][({Index} / 4) % 4]";
+ return $"{declInfo.Name}_data[{index} / 16][({index} / 4) % 4]";
}
else
{
- return $"{DeclInfo.Name}_data[{Cbuf.Pos / 4}][{Cbuf.Pos % 4}]";
+ return $"{declInfo.Name}_data[{cbuf.Pos / 4}][{cbuf.Pos % 4}]";
}
}
- private string GetOutAbufName(ShaderIrOperAbuf Abuf)
+ private string GetOutAbufName(ShaderIrOperAbuf abuf)
{
- if (Decl.ShaderType == GalShaderType.Geometry)
+ if (_decl.ShaderType == GalShaderType.Geometry)
{
- switch (Abuf.Offs)
+ switch (abuf.Offs)
{
case GlslDecl.LayerAttr: return "gl_Layer";
}
}
- return GetAttrTempName(Abuf);
+ return GetAttrTempName(abuf);
}
- private string GetName(ShaderIrOperAbuf Abuf)
+ private string GetName(ShaderIrOperAbuf abuf)
{
//Handle special scalar read-only attributes here.
- if (Decl.ShaderType == GalShaderType.Vertex)
+ if (_decl.ShaderType == GalShaderType.Vertex)
{
- switch (Abuf.Offs)
+ switch (abuf.Offs)
{
case GlslDecl.VertexIdAttr: return "gl_VertexID";
case GlslDecl.InstanceIdAttr: return GlslDecl.InstanceUniformName;
}
}
- else if (Decl.ShaderType == GalShaderType.TessEvaluation)
+ else if (_decl.ShaderType == GalShaderType.TessEvaluation)
{
- switch (Abuf.Offs)
+ switch (abuf.Offs)
{
case GlslDecl.TessCoordAttrX: return "gl_TessCoord.x";
case GlslDecl.TessCoordAttrY: return "gl_TessCoord.y";
case GlslDecl.TessCoordAttrZ: return "gl_TessCoord.z";
}
}
- else if (Decl.ShaderType == GalShaderType.Fragment)
+ else if (_decl.ShaderType == GalShaderType.Fragment)
{
- switch (Abuf.Offs)
+ switch (abuf.Offs)
{
case GlslDecl.PointCoordAttrX: return "gl_PointCoord.x";
case GlslDecl.PointCoordAttrY: return "gl_PointCoord.y";
@@ -912,65 +912,65 @@ namespace Ryujinx.Graphics.Gal.Shader
}
}
- return GetAttrTempName(Abuf);
+ return GetAttrTempName(abuf);
}
- private string GetAttrTempName(ShaderIrOperAbuf Abuf)
+ private string GetAttrTempName(ShaderIrOperAbuf abuf)
{
- int Index = Abuf.Offs >> 4;
- int Elem = (Abuf.Offs >> 2) & 3;
+ int index = abuf.Offs >> 4;
+ int elem = (abuf.Offs >> 2) & 3;
- string Swizzle = "." + GetAttrSwizzle(Elem);
+ string swizzle = "." + GetAttrSwizzle(elem);
- if (!Decl.Attributes.TryGetValue(Index, out ShaderDeclInfo DeclInfo))
+ if (!_decl.Attributes.TryGetValue(index, out ShaderDeclInfo declInfo))
{
//Handle special vec4 attributes here
//(for example, index 7 is always gl_Position).
- if (Index == GlslDecl.GlPositionVec4Index)
+ if (index == GlslDecl.GlPositionVec4Index)
{
- string Name =
- Decl.ShaderType != GalShaderType.Vertex &&
- Decl.ShaderType != GalShaderType.Geometry ? GlslDecl.PositionOutAttrName : "gl_Position";
+ string name =
+ _decl.ShaderType != GalShaderType.Vertex &&
+ _decl.ShaderType != GalShaderType.Geometry ? GlslDecl.PositionOutAttrName : "gl_Position";
- return Name + Swizzle;
+ return name + swizzle;
}
- else if (Abuf.Offs == GlslDecl.PointSizeAttr)
+ else if (abuf.Offs == GlslDecl.PointSizeAttr)
{
return "gl_PointSize";
}
}
- if (DeclInfo.Index >= 32)
+ if (declInfo.Index >= 32)
{
- throw new InvalidOperationException($"Shader attribute offset {Abuf.Offs} is invalid.");
+ throw new InvalidOperationException($"Shader attribute offset {abuf.Offs} is invalid.");
}
- if (Decl.ShaderType == GalShaderType.Geometry)
+ if (_decl.ShaderType == GalShaderType.Geometry)
{
- string Vertex = "floatBitsToInt(" + GetSrcExpr(Abuf.Vertex) + ")";
+ string vertex = "floatBitsToInt(" + GetSrcExpr(abuf.Vertex) + ")";
- return DeclInfo.Name + "[" + Vertex + "]" + Swizzle;
+ return declInfo.Name + "[" + vertex + "]" + swizzle;
}
else
{
- return DeclInfo.Name + Swizzle;
+ return declInfo.Name + swizzle;
}
}
- private string GetName(ShaderIrOperGpr Gpr)
+ private string GetName(ShaderIrOperGpr gpr)
{
- if (Gpr.IsConst)
+ if (gpr.IsConst)
{
return "0";
}
- if (Gpr.RegisterSize == ShaderRegisterSize.Single)
+ if (gpr.RegisterSize == ShaderRegisterSize.Single)
{
- return GetNameWithSwizzle(Decl.Gprs, Gpr.Index);
+ return GetNameWithSwizzle(_decl.Gprs, gpr.Index);
}
- else if (Gpr.RegisterSize == ShaderRegisterSize.Half)
+ else if (gpr.RegisterSize == ShaderRegisterSize.Half)
{
- return GetNameWithSwizzle(Decl.GprsHalf, (Gpr.Index << 1) | Gpr.HalfPart);
+ return GetNameWithSwizzle(_decl.GprsHalf, (gpr.Index << 1) | gpr.HalfPart);
}
else /* if (Gpr.RegisterSize == ShaderRegisterSize.Double) */
{
@@ -978,163 +978,163 @@ namespace Ryujinx.Graphics.Gal.Shader
}
}
- private string GetValue(ShaderIrOperImm Imm)
+ private string GetValue(ShaderIrOperImm imm)
{
//Only use hex is the value is too big and would likely be hard to read as int.
- if (Imm.Value > 0xfff ||
- Imm.Value < -0xfff)
+ if (imm.Value > 0xfff ||
+ imm.Value < -0xfff)
{
- return "0x" + Imm.Value.ToString("x8", CultureInfo.InvariantCulture);
+ return "0x" + imm.Value.ToString("x8", CultureInfo.InvariantCulture);
}
else
{
- return GetIntConst(Imm.Value);
+ return GetIntConst(imm.Value);
}
}
- private string GetValue(ShaderIrOperImmf Immf)
+ private string GetValue(ShaderIrOperImmf immf)
{
- return GetFloatConst(Immf.Value);
+ return GetFloatConst(immf.Value);
}
- private string GetName(ShaderIrOperPred Pred)
+ private string GetName(ShaderIrOperPred pred)
{
- return Pred.IsConst ? "true" : GetNameWithSwizzle(Decl.Preds, Pred.Index);
+ return pred.IsConst ? "true" : GetNameWithSwizzle(_decl.Preds, pred.Index);
}
- private string GetNameWithSwizzle(IReadOnlyDictionary<int, ShaderDeclInfo> Dict, int Index)
+ private string GetNameWithSwizzle(IReadOnlyDictionary<int, ShaderDeclInfo> dict, int index)
{
- int VecIndex = Index & ~3;
+ int vecIndex = index & ~3;
- if (Dict.TryGetValue(VecIndex, out ShaderDeclInfo DeclInfo))
+ if (dict.TryGetValue(vecIndex, out ShaderDeclInfo declInfo))
{
- if (DeclInfo.Size > 1 && Index < VecIndex + DeclInfo.Size)
+ if (declInfo.Size > 1 && index < vecIndex + declInfo.Size)
{
- return DeclInfo.Name + "." + GetAttrSwizzle(Index & 3);
+ return declInfo.Name + "." + GetAttrSwizzle(index & 3);
}
}
- if (!Dict.TryGetValue(Index, out DeclInfo))
+ if (!dict.TryGetValue(index, out declInfo))
{
throw new InvalidOperationException();
}
- return DeclInfo.Name;
+ return declInfo.Name;
}
- private string GetAttrSwizzle(int Elem)
+ private string GetAttrSwizzle(int elem)
{
- return "xyzw".Substring(Elem, 1);
+ return "xyzw".Substring(elem, 1);
}
- private string GetAbsExpr(ShaderIrOp Op) => GetUnaryCall(Op, "abs");
+ private string GetAbsExpr(ShaderIrOp op) => GetUnaryCall(op, "abs");
- private string GetAddExpr(ShaderIrOp Op) => GetBinaryExpr(Op, "+");
+ private string GetAddExpr(ShaderIrOp op) => GetBinaryExpr(op, "+");
- private string GetAndExpr(ShaderIrOp Op) => GetBinaryExpr(Op, "&");
+ private string GetAndExpr(ShaderIrOp op) => GetBinaryExpr(op, "&");
- private string GetAsrExpr(ShaderIrOp Op) => GetBinaryExpr(Op, ">>");
+ private string GetAsrExpr(ShaderIrOp op) => GetBinaryExpr(op, ">>");
- private string GetBandExpr(ShaderIrOp Op) => GetBinaryExpr(Op, "&&");
+ private string GetBandExpr(ShaderIrOp op) => GetBinaryExpr(op, "&&");
- private string GetBnotExpr(ShaderIrOp Op) => GetUnaryExpr(Op, "!");
+ private string GetBnotExpr(ShaderIrOp op) => GetUnaryExpr(op, "!");
- private string GetBorExpr(ShaderIrOp Op) => GetBinaryExpr(Op, "||");
+ private string GetBorExpr(ShaderIrOp op) => GetBinaryExpr(op, "||");
- private string GetBxorExpr(ShaderIrOp Op) => GetBinaryExpr(Op, "^^");
+ private string GetBxorExpr(ShaderIrOp op) => GetBinaryExpr(op, "^^");
- private string GetCeilExpr(ShaderIrOp Op) => GetUnaryCall(Op, "ceil");
+ private string GetCeilExpr(ShaderIrOp op) => GetUnaryCall(op, "ceil");
- private string GetClampsExpr(ShaderIrOp Op)
+ private string GetClampsExpr(ShaderIrOp op)
{
- return "clamp(" + GetOperExpr(Op, Op.OperandA) + ", " +
- GetOperExpr(Op, Op.OperandB) + ", " +
- GetOperExpr(Op, Op.OperandC) + ")";
+ return "clamp(" + GetOperExpr(op, op.OperandA) + ", " +
+ GetOperExpr(op, op.OperandB) + ", " +
+ GetOperExpr(op, op.OperandC) + ")";
}
- private string GetClampuExpr(ShaderIrOp Op)
+ private string GetClampuExpr(ShaderIrOp op)
{
- return "int(clamp(uint(" + GetOperExpr(Op, Op.OperandA) + "), " +
- "uint(" + GetOperExpr(Op, Op.OperandB) + "), " +
- "uint(" + GetOperExpr(Op, Op.OperandC) + ")))";
+ return "int(clamp(uint(" + GetOperExpr(op, op.OperandA) + "), " +
+ "uint(" + GetOperExpr(op, op.OperandB) + "), " +
+ "uint(" + GetOperExpr(op, op.OperandC) + ")))";
}
- private string GetCeqExpr(ShaderIrOp Op) => GetBinaryExpr(Op, "==");
+ private string GetCeqExpr(ShaderIrOp op) => GetBinaryExpr(op, "==");
- private string GetCequExpr(ShaderIrOp Op) => GetBinaryExprWithNaN(Op, "==");
+ private string GetCequExpr(ShaderIrOp op) => GetBinaryExprWithNaN(op, "==");
- private string GetCgeExpr(ShaderIrOp Op) => GetBinaryExpr(Op, ">=");
+ private string GetCgeExpr(ShaderIrOp op) => GetBinaryExpr(op, ">=");
- private string GetCgeuExpr(ShaderIrOp Op) => GetBinaryExprWithNaN(Op, ">=");
+ private string GetCgeuExpr(ShaderIrOp op) => GetBinaryExprWithNaN(op, ">=");
- private string GetCgtExpr(ShaderIrOp Op) => GetBinaryExpr(Op, ">");
+ private string GetCgtExpr(ShaderIrOp op) => GetBinaryExpr(op, ">");
- private string GetCgtuExpr(ShaderIrOp Op) => GetBinaryExprWithNaN(Op, ">");
+ private string GetCgtuExpr(ShaderIrOp op) => GetBinaryExprWithNaN(op, ">");
- private string GetCleExpr(ShaderIrOp Op) => GetBinaryExpr(Op, "<=");
+ private string GetCleExpr(ShaderIrOp op) => GetBinaryExpr(op, "<=");
- private string GetCleuExpr(ShaderIrOp Op) => GetBinaryExprWithNaN(Op, "<=");
+ private string GetCleuExpr(ShaderIrOp op) => GetBinaryExprWithNaN(op, "<=");
- private string GetCltExpr(ShaderIrOp Op) => GetBinaryExpr(Op, "<");
+ private string GetCltExpr(ShaderIrOp op) => GetBinaryExpr(op, "<");
- private string GetCltuExpr(ShaderIrOp Op) => GetBinaryExprWithNaN(Op, "<");
+ private string GetCltuExpr(ShaderIrOp op) => GetBinaryExprWithNaN(op, "<");
- private string GetCnanExpr(ShaderIrOp Op) => GetUnaryCall(Op, "isnan");
+ private string GetCnanExpr(ShaderIrOp op) => GetUnaryCall(op, "isnan");
- private string GetCneExpr(ShaderIrOp Op) => GetBinaryExpr(Op, "!=");
+ private string GetCneExpr(ShaderIrOp op) => GetBinaryExpr(op, "!=");
- private string GetCutExpr(ShaderIrOp Op) => "EndPrimitive()";
+ private string GetCutExpr(ShaderIrOp op) => "EndPrimitive()";
- private string GetCneuExpr(ShaderIrOp Op) => GetBinaryExprWithNaN(Op, "!=");
+ private string GetCneuExpr(ShaderIrOp op) => GetBinaryExprWithNaN(op, "!=");
- private string GetCnumExpr(ShaderIrOp Op) => GetUnaryCall(Op, "!isnan");
+ private string GetCnumExpr(ShaderIrOp op) => GetUnaryCall(op, "!isnan");
- private string GetExitExpr(ShaderIrOp Op) => "return 0u";
+ private string GetExitExpr(ShaderIrOp op) => "return 0u";
- private string GetFcosExpr(ShaderIrOp Op) => GetUnaryCall(Op, "cos");
+ private string GetFcosExpr(ShaderIrOp op) => GetUnaryCall(op, "cos");
- private string GetFex2Expr(ShaderIrOp Op) => GetUnaryCall(Op, "exp2");
+ private string GetFex2Expr(ShaderIrOp op) => GetUnaryCall(op, "exp2");
- private string GetFfmaExpr(ShaderIrOp Op) => GetTernaryExpr(Op, "*", "+");
+ private string GetFfmaExpr(ShaderIrOp op) => GetTernaryExpr(op, "*", "+");
- private string GetFclampExpr(ShaderIrOp Op) => GetTernaryCall(Op, "clamp");
+ private string GetFclampExpr(ShaderIrOp op) => GetTernaryCall(op, "clamp");
- private string GetFlg2Expr(ShaderIrOp Op) => GetUnaryCall(Op, "log2");
+ private string GetFlg2Expr(ShaderIrOp op) => GetUnaryCall(op, "log2");
- private string GetFloorExpr(ShaderIrOp Op) => GetUnaryCall(Op, "floor");
+ private string GetFloorExpr(ShaderIrOp op) => GetUnaryCall(op, "floor");
- private string GetFrcpExpr(ShaderIrOp Op) => GetUnaryExpr(Op, "1 / ");
+ private string GetFrcpExpr(ShaderIrOp op) => GetUnaryExpr(op, "1 / ");
- private string GetFrsqExpr(ShaderIrOp Op) => GetUnaryCall(Op, "inversesqrt");
+ private string GetFrsqExpr(ShaderIrOp op) => GetUnaryCall(op, "inversesqrt");
- private string GetFsinExpr(ShaderIrOp Op) => GetUnaryCall(Op, "sin");
+ private string GetFsinExpr(ShaderIrOp op) => GetUnaryCall(op, "sin");
- private string GetFsqrtExpr(ShaderIrOp Op) => GetUnaryCall(Op, "sqrt");
+ private string GetFsqrtExpr(ShaderIrOp op) => GetUnaryCall(op, "sqrt");
- private string GetFtosExpr(ShaderIrOp Op)
+ private string GetFtosExpr(ShaderIrOp op)
{
- return "int(" + GetOperExpr(Op, Op.OperandA) + ")";
+ return "int(" + GetOperExpr(op, op.OperandA) + ")";
}
- private string GetFtouExpr(ShaderIrOp Op)
+ private string GetFtouExpr(ShaderIrOp op)
{
- return "int(uint(" + GetOperExpr(Op, Op.OperandA) + "))";
+ return "int(uint(" + GetOperExpr(op, op.OperandA) + "))";
}
- private string GetIpaExpr(ShaderIrOp Op)
+ private string GetIpaExpr(ShaderIrOp op)
{
- ShaderIrMetaIpa Meta = (ShaderIrMetaIpa)Op.MetaData;
+ ShaderIrMetaIpa meta = (ShaderIrMetaIpa)op.MetaData;
- ShaderIrOperAbuf Abuf = (ShaderIrOperAbuf)Op.OperandA;
+ ShaderIrOperAbuf abuf = (ShaderIrOperAbuf)op.OperandA;
- if (Meta.Mode == ShaderIpaMode.Pass)
+ if (meta.Mode == ShaderIpaMode.Pass)
{
- int Index = Abuf.Offs >> 4;
- int Elem = (Abuf.Offs >> 2) & 3;
+ int index = abuf.Offs >> 4;
+ int elem = (abuf.Offs >> 2) & 3;
- if (Decl.ShaderType == GalShaderType.Fragment && Index == GlslDecl.GlPositionVec4Index)
+ if (_decl.ShaderType == GalShaderType.Fragment && index == GlslDecl.GlPositionVec4Index)
{
- switch (Elem)
+ switch (elem)
{
case 0: return "gl_FragCoord.x";
case 1: return "gl_FragCoord.y";
@@ -1144,433 +1144,433 @@ namespace Ryujinx.Graphics.Gal.Shader
}
}
- return GetSrcExpr(Op.OperandA);
+ return GetSrcExpr(op.OperandA);
}
- private string GetKilExpr(ShaderIrOp Op) => "discard";
+ private string GetKilExpr(ShaderIrOp op) => "discard";
- private string GetLslExpr(ShaderIrOp Op) => GetBinaryExpr(Op, "<<");
- private string GetLsrExpr(ShaderIrOp Op)
+ private string GetLslExpr(ShaderIrOp op) => GetBinaryExpr(op, "<<");
+ private string GetLsrExpr(ShaderIrOp op)
{
- return "int(uint(" + GetOperExpr(Op, Op.OperandA) + ") >> " +
- GetOperExpr(Op, Op.OperandB) + ")";
+ return "int(uint(" + GetOperExpr(op, op.OperandA) + ") >> " +
+ GetOperExpr(op, op.OperandB) + ")";
}
- private string GetMaxExpr(ShaderIrOp Op) => GetBinaryCall(Op, "max");
- private string GetMinExpr(ShaderIrOp Op) => GetBinaryCall(Op, "min");
+ private string GetMaxExpr(ShaderIrOp op) => GetBinaryCall(op, "max");
+ private string GetMinExpr(ShaderIrOp op) => GetBinaryCall(op, "min");
- private string GetMulExpr(ShaderIrOp Op) => GetBinaryExpr(Op, "*");
+ private string GetMulExpr(ShaderIrOp op) => GetBinaryExpr(op, "*");
- private string GetNegExpr(ShaderIrOp Op) => GetUnaryExpr(Op, "-");
+ private string GetNegExpr(ShaderIrOp op) => GetUnaryExpr(op, "-");
- private string GetNotExpr(ShaderIrOp Op) => GetUnaryExpr(Op, "~");
+ private string GetNotExpr(ShaderIrOp op) => GetUnaryExpr(op, "~");
- private string GetOrExpr(ShaderIrOp Op) => GetBinaryExpr(Op, "|");
+ private string GetOrExpr(ShaderIrOp op) => GetBinaryExpr(op, "|");
- private string GetStofExpr(ShaderIrOp Op)
+ private string GetStofExpr(ShaderIrOp op)
{
- return "float(" + GetOperExpr(Op, Op.OperandA) + ")";
+ return "float(" + GetOperExpr(op, op.OperandA) + ")";
}
- private string GetSubExpr(ShaderIrOp Op) => GetBinaryExpr(Op, "-");
+ private string GetSubExpr(ShaderIrOp op) => GetBinaryExpr(op, "-");
- private string GetTexbExpr(ShaderIrOp Op)
+ private string GetTexbExpr(ShaderIrOp op)
{
- ShaderIrMetaTex Meta = (ShaderIrMetaTex)Op.MetaData;
+ ShaderIrMetaTex meta = (ShaderIrMetaTex)op.MetaData;
- if (!Decl.CbTextures.TryGetValue(Op, out ShaderDeclInfo DeclInfo))
+ if (!_decl.CbTextures.TryGetValue(op, out ShaderDeclInfo declInfo))
{
throw new InvalidOperationException();
}
- string Coords = GetTexSamplerCoords(Op);
+ string coords = GetTexSamplerCoords(op);
- string Ch = "rgba".Substring(Meta.Elem, 1);
+ string ch = "rgba".Substring(meta.Elem, 1);
- return GetTextureOperation(Op, DeclInfo.Name, Coords, Ch);
+ return GetTextureOperation(op, declInfo.Name, coords, ch);
}
- private string GetTexqExpr(ShaderIrOp Op)
+ private string GetTexqExpr(ShaderIrOp op)
{
- ShaderIrMetaTexq Meta = (ShaderIrMetaTexq)Op.MetaData;
+ ShaderIrMetaTexq meta = (ShaderIrMetaTexq)op.MetaData;
- string Ch = "xyzw".Substring(Meta.Elem, 1);
+ string ch = "xyzw".Substring(meta.Elem, 1);
- if (Meta.Info == ShaderTexqInfo.Dimension)
+ if (meta.Info == ShaderTexqInfo.Dimension)
{
- string Sampler = GetTexSamplerName(Op);
+ string sampler = GetTexSamplerName(op);
- string Lod = GetOperExpr(Op, Op.OperandA); //???
+ string lod = GetOperExpr(op, op.OperandA); //???
- return "textureSize(" + Sampler + ", " + Lod + ")." + Ch;
+ return "textureSize(" + sampler + ", " + lod + ")." + ch;
}
else
{
- throw new NotImplementedException(Meta.Info.ToString());
+ throw new NotImplementedException(meta.Info.ToString());
}
}
- private string GetTexsExpr(ShaderIrOp Op)
+ private string GetTexsExpr(ShaderIrOp op)
{
- ShaderIrMetaTex Meta = (ShaderIrMetaTex)Op.MetaData;
+ ShaderIrMetaTex meta = (ShaderIrMetaTex)op.MetaData;
- string Sampler = GetTexSamplerName(Op);
+ string sampler = GetTexSamplerName(op);
- string Coords = GetTexSamplerCoords(Op);
+ string coords = GetTexSamplerCoords(op);
- string Ch = "rgba".Substring(Meta.Elem, 1);
+ string ch = "rgba".Substring(meta.Elem, 1);
- return GetTextureOperation(Op, Sampler, Coords, Ch);
+ return GetTextureOperation(op, sampler, coords, ch);
}
- private string GetTld4Expr(ShaderIrOp Op)
+ private string GetTld4Expr(ShaderIrOp op)
{
- ShaderIrMetaTex Meta = (ShaderIrMetaTex)Op.MetaData;
+ ShaderIrMetaTex meta = (ShaderIrMetaTex)op.MetaData;
- string Sampler = GetTexSamplerName(Op);
+ string sampler = GetTexSamplerName(op);
- string Coords = GetTexSamplerCoords(Op);
+ string coords = GetTexSamplerCoords(op);
- string Ch = "rgba".Substring(Meta.Elem, 1);
+ string ch = "rgba".Substring(meta.Elem, 1);
- return GetTextureGatherOperation(Op, Sampler, Coords, Ch);
+ return GetTextureGatherOperation(op, sampler, coords, ch);
}
// TODO: support AOFFI on non nvidia drivers
- private string GetTxlfExpr(ShaderIrOp Op)
+ private string GetTxlfExpr(ShaderIrOp op)
{
// TODO: Support all suffixes
- ShaderIrMetaTex Meta = (ShaderIrMetaTex)Op.MetaData;
+ ShaderIrMetaTex meta = (ShaderIrMetaTex)op.MetaData;
- TextureInstructionSuffix Suffix = Meta.TextureInstructionSuffix;
+ TextureInstructionSuffix suffix = meta.TextureInstructionSuffix;
- string Sampler = GetTexSamplerName(Op);
+ string sampler = GetTexSamplerName(op);
- string Coords = GetITexSamplerCoords(Op);
+ string coords = GetITexSamplerCoords(op);
- string Ch = "rgba".Substring(Meta.Elem, 1);
+ string ch = "rgba".Substring(meta.Elem, 1);
- string Lod = "0";
+ string lod = "0";
- if (Meta.LevelOfDetail != null)
+ if (meta.LevelOfDetail != null)
{
- Lod = GetOperExpr(Op, Meta.LevelOfDetail);
+ lod = GetOperExpr(op, meta.LevelOfDetail);
}
- if ((Suffix & TextureInstructionSuffix.AOffI) != 0 && IsNvidiaDriver)
+ if ((suffix & TextureInstructionSuffix.AOffI) != 0 && _isNvidiaDriver)
{
- string Offset = GetTextureOffset(Meta, GetOperExpr(Op, Meta.Offset));
- return "texelFetchOffset(" + Sampler + ", " + Coords + ", " + Lod + ", " + Offset + ")." + Ch;
+ string offset = GetTextureOffset(meta, GetOperExpr(op, meta.Offset));
+ return "texelFetchOffset(" + sampler + ", " + coords + ", " + lod + ", " + offset + ")." + ch;
}
- return "texelFetch(" + Sampler + ", " + Coords + ", " + Lod + ")." + Ch;
+ return "texelFetch(" + sampler + ", " + coords + ", " + lod + ")." + ch;
}
- private string GetTruncExpr(ShaderIrOp Op) => GetUnaryCall(Op, "trunc");
+ private string GetTruncExpr(ShaderIrOp op) => GetUnaryCall(op, "trunc");
- private string GetUtofExpr(ShaderIrOp Op)
+ private string GetUtofExpr(ShaderIrOp op)
{
- return "float(uint(" + GetOperExpr(Op, Op.OperandA) + "))";
+ return "float(uint(" + GetOperExpr(op, op.OperandA) + "))";
}
- private string GetXorExpr(ShaderIrOp Op) => GetBinaryExpr(Op, "^");
+ private string GetXorExpr(ShaderIrOp op) => GetBinaryExpr(op, "^");
- private string GetUnaryCall(ShaderIrOp Op, string FuncName)
+ private string GetUnaryCall(ShaderIrOp op, string funcName)
{
- return FuncName + "(" + GetOperExpr(Op, Op.OperandA) + ")";
+ return funcName + "(" + GetOperExpr(op, op.OperandA) + ")";
}
- private string GetBinaryCall(ShaderIrOp Op, string FuncName)
+ private string GetBinaryCall(ShaderIrOp op, string funcName)
{
- return FuncName + "(" + GetOperExpr(Op, Op.OperandA) + ", " +
- GetOperExpr(Op, Op.OperandB) + ")";
+ return funcName + "(" + GetOperExpr(op, op.OperandA) + ", " +
+ GetOperExpr(op, op.OperandB) + ")";
}
- private string GetTernaryCall(ShaderIrOp Op, string FuncName)
+ private string GetTernaryCall(ShaderIrOp op, string funcName)
{
- return FuncName + "(" + GetOperExpr(Op, Op.OperandA) + ", " +
- GetOperExpr(Op, Op.OperandB) + ", " +
- GetOperExpr(Op, Op.OperandC) + ")";
+ return funcName + "(" + GetOperExpr(op, op.OperandA) + ", " +
+ GetOperExpr(op, op.OperandB) + ", " +
+ GetOperExpr(op, op.OperandC) + ")";
}
- private string GetUnaryExpr(ShaderIrOp Op, string Opr)
+ private string GetUnaryExpr(ShaderIrOp op, string opr)
{
- return Opr + GetOperExpr(Op, Op.OperandA);
+ return opr + GetOperExpr(op, op.OperandA);
}
- private string GetBinaryExpr(ShaderIrOp Op, string Opr)
+ private string GetBinaryExpr(ShaderIrOp op, string opr)
{
- return GetOperExpr(Op, Op.OperandA) + " " + Opr + " " +
- GetOperExpr(Op, Op.OperandB);
+ return GetOperExpr(op, op.OperandA) + " " + opr + " " +
+ GetOperExpr(op, op.OperandB);
}
- private string GetBinaryExprWithNaN(ShaderIrOp Op, string Opr)
+ private string GetBinaryExprWithNaN(ShaderIrOp op, string opr)
{
- string A = GetOperExpr(Op, Op.OperandA);
- string B = GetOperExpr(Op, Op.OperandB);
+ string a = GetOperExpr(op, op.OperandA);
+ string b = GetOperExpr(op, op.OperandB);
- string NaNCheck =
- " || isnan(" + A + ")" +
- " || isnan(" + B + ")";
+ string nanCheck =
+ " || isnan(" + a + ")" +
+ " || isnan(" + b + ")";
- return A + " " + Opr + " " + B + NaNCheck;
+ return a + " " + opr + " " + b + nanCheck;
}
- private string GetTernaryExpr(ShaderIrOp Op, string Opr1, string Opr2)
+ private string GetTernaryExpr(ShaderIrOp op, string opr1, string opr2)
{
- return GetOperExpr(Op, Op.OperandA) + " " + Opr1 + " " +
- GetOperExpr(Op, Op.OperandB) + " " + Opr2 + " " +
- GetOperExpr(Op, Op.OperandC);
+ return GetOperExpr(op, op.OperandA) + " " + opr1 + " " +
+ GetOperExpr(op, op.OperandB) + " " + opr2 + " " +
+ GetOperExpr(op, op.OperandC);
}
- private string GetTexSamplerName(ShaderIrOp Op)
+ private string GetTexSamplerName(ShaderIrOp op)
{
- ShaderIrOperImm Node = (ShaderIrOperImm)Op.OperandC;
+ ShaderIrOperImm node = (ShaderIrOperImm)op.OperandC;
- int Handle = ((ShaderIrOperImm)Op.OperandC).Value;
+ int handle = ((ShaderIrOperImm)op.OperandC).Value;
- if (!Decl.Textures.TryGetValue(Handle, out ShaderDeclInfo DeclInfo))
+ if (!_decl.Textures.TryGetValue(handle, out ShaderDeclInfo declInfo))
{
throw new InvalidOperationException();
}
- return DeclInfo.Name;
+ return declInfo.Name;
}
- private string GetTexSamplerCoords(ShaderIrOp Op)
+ private string GetTexSamplerCoords(ShaderIrOp op)
{
- ShaderIrMetaTex Meta = (ShaderIrMetaTex)Op.MetaData;
+ ShaderIrMetaTex meta = (ShaderIrMetaTex)op.MetaData;
- bool HasDepth = (Meta.TextureInstructionSuffix & TextureInstructionSuffix.DC) != 0;
+ bool hasDepth = (meta.TextureInstructionSuffix & TextureInstructionSuffix.Dc) != 0;
- int Coords = ImageUtils.GetCoordsCountTextureTarget(Meta.TextureTarget);
+ int coords = ImageUtils.GetCoordsCountTextureTarget(meta.TextureTarget);
- bool IsArray = ImageUtils.IsArray(Meta.TextureTarget);
+ bool isArray = ImageUtils.IsArray(meta.TextureTarget);
- string GetLastArgument(ShaderIrNode Node)
+ string GetLastArgument(ShaderIrNode node)
{
- string Result = GetOperExpr(Op, Node);
+ string result = GetOperExpr(op, node);
// array index is actually an integer so we need to pass it correctly
- if (IsArray)
+ if (isArray)
{
- Result = "float(floatBitsToInt(" + Result + "))";
+ result = "float(floatBitsToInt(" + result + "))";
}
- return Result;
+ return result;
}
- string LastArgument;
- string DepthArgument = "";
+ string lastArgument;
+ string depthArgument = "";
- int VecSize = Coords;
- if (HasDepth && Op.Inst != ShaderIrInst.Tld4)
+ int vecSize = coords;
+ if (hasDepth && op.Inst != ShaderIrInst.Tld4)
{
- VecSize++;
- DepthArgument = $", {GetOperExpr(Op, Meta.DepthCompare)}";
+ vecSize++;
+ depthArgument = $", {GetOperExpr(op, meta.DepthCompare)}";
}
- switch (Coords)
+ switch (coords)
{
case 1:
- if (HasDepth)
+ if (hasDepth)
{
- return $"vec3({GetOperExpr(Op, Meta.Coordinates[0])}, 0.0{DepthArgument})";
+ return $"vec3({GetOperExpr(op, meta.Coordinates[0])}, 0.0{depthArgument})";
}
- return GetOperExpr(Op, Meta.Coordinates[0]);
+ return GetOperExpr(op, meta.Coordinates[0]);
case 2:
- LastArgument = GetLastArgument(Meta.Coordinates[1]);
+ lastArgument = GetLastArgument(meta.Coordinates[1]);
- return $"vec{VecSize}({GetOperExpr(Op, Meta.Coordinates[0])}, {LastArgument}{DepthArgument})";
+ return $"vec{vecSize}({GetOperExpr(op, meta.Coordinates[0])}, {lastArgument}{depthArgument})";
case 3:
- LastArgument = GetLastArgument(Meta.Coordinates[2]);
+ lastArgument = GetLastArgument(meta.Coordinates[2]);
- return $"vec{VecSize}({GetOperExpr(Op, Meta.Coordinates[0])}, {GetOperExpr(Op, Meta.Coordinates[1])}, {LastArgument}{DepthArgument})";
+ return $"vec{vecSize}({GetOperExpr(op, meta.Coordinates[0])}, {GetOperExpr(op, meta.Coordinates[1])}, {lastArgument}{depthArgument})";
case 4:
- LastArgument = GetLastArgument(Meta.Coordinates[3]);
+ lastArgument = GetLastArgument(meta.Coordinates[3]);
- return $"vec4({GetOperExpr(Op, Meta.Coordinates[0])}, {GetOperExpr(Op, Meta.Coordinates[1])}, {GetOperExpr(Op, Meta.Coordinates[2])}, {LastArgument}){DepthArgument}";
+ return $"vec4({GetOperExpr(op, meta.Coordinates[0])}, {GetOperExpr(op, meta.Coordinates[1])}, {GetOperExpr(op, meta.Coordinates[2])}, {lastArgument}){depthArgument}";
default:
throw new InvalidOperationException();
}
}
- private string GetTextureOffset(ShaderIrMetaTex Meta, string Oper, int Shift = 4, int Mask = 0xF)
+ private string GetTextureOffset(ShaderIrMetaTex meta, string oper, int shift = 4, int mask = 0xF)
{
- string GetOffset(string Operation, int Index)
+ string GetOffset(string operation, int index)
{
- return $"({Operation} >> {Index * Shift}) & 0x{Mask:x}";
+ return $"({operation} >> {index * shift}) & 0x{mask:x}";
}
- int Coords = ImageUtils.GetCoordsCountTextureTarget(Meta.TextureTarget);
+ int coords = ImageUtils.GetCoordsCountTextureTarget(meta.TextureTarget);
- if (ImageUtils.IsArray(Meta.TextureTarget))
- Coords -= 1;
+ if (ImageUtils.IsArray(meta.TextureTarget))
+ coords -= 1;
- switch (Coords)
+ switch (coords)
{
case 1:
- return GetOffset(Oper, 0);
+ return GetOffset(oper, 0);
case 2:
- return "ivec2(" + GetOffset(Oper, 0) + ", " + GetOffset(Oper, 1) + ")";
+ return "ivec2(" + GetOffset(oper, 0) + ", " + GetOffset(oper, 1) + ")";
case 3:
- return "ivec3(" + GetOffset(Oper, 0) + ", " + GetOffset(Oper, 1) + ", " + GetOffset(Oper, 2) + ")";
+ return "ivec3(" + GetOffset(oper, 0) + ", " + GetOffset(oper, 1) + ", " + GetOffset(oper, 2) + ")";
case 4:
- return "ivec4(" + GetOffset(Oper, 0) + ", " + GetOffset(Oper, 1) + ", " + GetOffset(Oper, 2) + ", " + GetOffset(Oper, 3) + ")";
+ return "ivec4(" + GetOffset(oper, 0) + ", " + GetOffset(oper, 1) + ", " + GetOffset(oper, 2) + ", " + GetOffset(oper, 3) + ")";
default:
throw new InvalidOperationException();
}
}
// TODO: support AOFFI on non nvidia drivers
- private string GetTextureGatherOperation(ShaderIrOp Op, string Sampler, string Coords, string Ch)
+ private string GetTextureGatherOperation(ShaderIrOp op, string sampler, string coords, string ch)
{
- ShaderIrMetaTex Meta = (ShaderIrMetaTex)Op.MetaData;
+ ShaderIrMetaTex meta = (ShaderIrMetaTex)op.MetaData;
- TextureInstructionSuffix Suffix = Meta.TextureInstructionSuffix;
+ TextureInstructionSuffix suffix = meta.TextureInstructionSuffix;
- string ChString = "." + Ch;
+ string chString = "." + ch;
- string Comp = Meta.Component.ToString();
+ string comp = meta.Component.ToString();
- if ((Suffix & TextureInstructionSuffix.DC) != 0)
+ if ((suffix & TextureInstructionSuffix.Dc) != 0)
{
- Comp = GetOperExpr(Op, Meta.DepthCompare);
+ comp = GetOperExpr(op, meta.DepthCompare);
}
- if ((Suffix & TextureInstructionSuffix.AOffI) != 0 && IsNvidiaDriver)
+ if ((suffix & TextureInstructionSuffix.AOffI) != 0 && _isNvidiaDriver)
{
- string Offset = GetTextureOffset(Meta, "floatBitsToInt((" + GetOperExpr(Op, Meta.Offset) + "))", 8, 0x3F);
+ string offset = GetTextureOffset(meta, "floatBitsToInt((" + GetOperExpr(op, meta.Offset) + "))", 8, 0x3F);
- if ((Suffix & TextureInstructionSuffix.DC) != 0)
+ if ((suffix & TextureInstructionSuffix.Dc) != 0)
{
- return "textureGatherOffset(" + Sampler + ", " + Coords + ", " + Comp + ", " + Offset + ")" + ChString;
+ return "textureGatherOffset(" + sampler + ", " + coords + ", " + comp + ", " + offset + ")" + chString;
}
- return "textureGatherOffset(" + Sampler + ", " + Coords + ", " + Offset + ", " + Comp + ")" + ChString;
+ return "textureGatherOffset(" + sampler + ", " + coords + ", " + offset + ", " + comp + ")" + chString;
}
// TODO: Support PTP
- else if ((Suffix & TextureInstructionSuffix.PTP) != 0)
+ else if ((suffix & TextureInstructionSuffix.Ptp) != 0)
{
throw new NotImplementedException();
}
- return "textureGather(" + Sampler + ", " + Coords + ", " + Comp + ")" + ChString;
+ return "textureGather(" + sampler + ", " + coords + ", " + comp + ")" + chString;
}
// TODO: support AOFFI on non nvidia drivers
- private string GetTextureOperation(ShaderIrOp Op, string Sampler, string Coords, string Ch)
+ private string GetTextureOperation(ShaderIrOp op, string sampler, string coords, string ch)
{
- ShaderIrMetaTex Meta = (ShaderIrMetaTex)Op.MetaData;
+ ShaderIrMetaTex meta = (ShaderIrMetaTex)op.MetaData;
- TextureInstructionSuffix Suffix = Meta.TextureInstructionSuffix;
+ TextureInstructionSuffix suffix = meta.TextureInstructionSuffix;
- string ChString = "." + Ch;
+ string chString = "." + ch;
- if ((Suffix & TextureInstructionSuffix.DC) != 0)
+ if ((suffix & TextureInstructionSuffix.Dc) != 0)
{
- ChString = "";
+ chString = "";
}
// TODO: Support LBA and LLA
- if ((Suffix & TextureInstructionSuffix.LZ) != 0)
+ if ((suffix & TextureInstructionSuffix.Lz) != 0)
{
- if ((Suffix & TextureInstructionSuffix.AOffI) != 0 && IsNvidiaDriver)
+ if ((suffix & TextureInstructionSuffix.AOffI) != 0 && _isNvidiaDriver)
{
- string Offset = GetTextureOffset(Meta, "floatBitsToInt((" + GetOperExpr(Op, Meta.Offset) + "))");
+ string offset = GetTextureOffset(meta, "floatBitsToInt((" + GetOperExpr(op, meta.Offset) + "))");
- return "textureLodOffset(" + Sampler + ", " + Coords + ", 0.0, " + Offset + ")" + ChString;
+ return "textureLodOffset(" + sampler + ", " + coords + ", 0.0, " + offset + ")" + chString;
}
- return "textureLod(" + Sampler + ", " + Coords + ", 0.0)" + ChString;
+ return "textureLod(" + sampler + ", " + coords + ", 0.0)" + chString;
}
- else if ((Suffix & TextureInstructionSuffix.LB) != 0)
+ else if ((suffix & TextureInstructionSuffix.Lb) != 0)
{
- if ((Suffix & TextureInstructionSuffix.AOffI) != 0 && IsNvidiaDriver)
+ if ((suffix & TextureInstructionSuffix.AOffI) != 0 && _isNvidiaDriver)
{
- string Offset = GetTextureOffset(Meta, "floatBitsToInt((" + GetOperExpr(Op, Meta.Offset) + "))");
+ string offset = GetTextureOffset(meta, "floatBitsToInt((" + GetOperExpr(op, meta.Offset) + "))");
- return "textureOffset(" + Sampler + ", " + Coords + ", " + Offset + ", " + GetOperExpr(Op, Meta.LevelOfDetail) + ")" + ChString;
+ return "textureOffset(" + sampler + ", " + coords + ", " + offset + ", " + GetOperExpr(op, meta.LevelOfDetail) + ")" + chString;
}
- return "texture(" + Sampler + ", " + Coords + ", " + GetOperExpr(Op, Meta.LevelOfDetail) + ")" + ChString;
+ return "texture(" + sampler + ", " + coords + ", " + GetOperExpr(op, meta.LevelOfDetail) + ")" + chString;
}
- else if ((Suffix & TextureInstructionSuffix.LL) != 0)
+ else if ((suffix & TextureInstructionSuffix.Ll) != 0)
{
- if ((Suffix & TextureInstructionSuffix.AOffI) != 0 && IsNvidiaDriver)
+ if ((suffix & TextureInstructionSuffix.AOffI) != 0 && _isNvidiaDriver)
{
- string Offset = GetTextureOffset(Meta, "floatBitsToInt((" + GetOperExpr(Op, Meta.Offset) + "))");
+ string offset = GetTextureOffset(meta, "floatBitsToInt((" + GetOperExpr(op, meta.Offset) + "))");
- return "textureLodOffset(" + Sampler + ", " + Coords + ", " + GetOperExpr(Op, Meta.LevelOfDetail) + ", " + Offset + ")" + ChString;
+ return "textureLodOffset(" + sampler + ", " + coords + ", " + GetOperExpr(op, meta.LevelOfDetail) + ", " + offset + ")" + chString;
}
- return "textureLod(" + Sampler + ", " + Coords + ", " + GetOperExpr(Op, Meta.LevelOfDetail) + ")" + ChString;
+ return "textureLod(" + sampler + ", " + coords + ", " + GetOperExpr(op, meta.LevelOfDetail) + ")" + chString;
}
- else if ((Suffix & TextureInstructionSuffix.AOffI) != 0 && IsNvidiaDriver)
+ else if ((suffix & TextureInstructionSuffix.AOffI) != 0 && _isNvidiaDriver)
{
- string Offset = GetTextureOffset(Meta, "floatBitsToInt((" + GetOperExpr(Op, Meta.Offset) + "))");
+ string offset = GetTextureOffset(meta, "floatBitsToInt((" + GetOperExpr(op, meta.Offset) + "))");
- return "textureOffset(" + Sampler + ", " + Coords + ", " + Offset + ")" + ChString;
+ return "textureOffset(" + sampler + ", " + coords + ", " + offset + ")" + chString;
}
else
{
- return "texture(" + Sampler + ", " + Coords + ")" + ChString;
+ return "texture(" + sampler + ", " + coords + ")" + chString;
}
- throw new NotImplementedException($"Texture Suffix {Meta.TextureInstructionSuffix} is not implemented");
+ throw new NotImplementedException($"Texture Suffix {meta.TextureInstructionSuffix} is not implemented");
}
- private string GetITexSamplerCoords(ShaderIrOp Op)
+ private string GetITexSamplerCoords(ShaderIrOp op)
{
- ShaderIrMetaTex Meta = (ShaderIrMetaTex)Op.MetaData;
+ ShaderIrMetaTex meta = (ShaderIrMetaTex)op.MetaData;
- switch (ImageUtils.GetCoordsCountTextureTarget(Meta.TextureTarget))
+ switch (ImageUtils.GetCoordsCountTextureTarget(meta.TextureTarget))
{
case 1:
- return GetOperExpr(Op, Meta.Coordinates[0]);
+ return GetOperExpr(op, meta.Coordinates[0]);
case 2:
- return "ivec2(" + GetOperExpr(Op, Meta.Coordinates[0]) + ", " + GetOperExpr(Op, Meta.Coordinates[1]) + ")";
+ return "ivec2(" + GetOperExpr(op, meta.Coordinates[0]) + ", " + GetOperExpr(op, meta.Coordinates[1]) + ")";
case 3:
- return "ivec3(" + GetOperExpr(Op, Meta.Coordinates[0]) + ", " + GetOperExpr(Op, Meta.Coordinates[1]) + ", " + GetOperExpr(Op, Meta.Coordinates[2]) + ")";
+ return "ivec3(" + GetOperExpr(op, meta.Coordinates[0]) + ", " + GetOperExpr(op, meta.Coordinates[1]) + ", " + GetOperExpr(op, meta.Coordinates[2]) + ")";
default:
throw new InvalidOperationException();
}
}
- private string GetOperExpr(ShaderIrOp Op, ShaderIrNode Oper)
+ private string GetOperExpr(ShaderIrOp op, ShaderIrNode oper)
{
- return GetExprWithCast(Op, Oper, GetSrcExpr(Oper));
+ return GetExprWithCast(op, oper, GetSrcExpr(oper));
}
- private static string GetExprWithCast(ShaderIrNode Dst, ShaderIrNode Src, string Expr)
+ private static string GetExprWithCast(ShaderIrNode dst, ShaderIrNode src, string expr)
{
//Note: The "DstType" (of the cast) is the type that the operation
//uses on the source operands, while the "SrcType" is the destination
//type of the operand result (if it is a operation) or just the type
//of the variable for registers/uniforms/attributes.
- OperType DstType = GetSrcNodeType(Dst);
- OperType SrcType = GetDstNodeType(Src);
+ OperType dstType = GetSrcNodeType(dst);
+ OperType srcType = GetDstNodeType(src);
- if (DstType != SrcType)
+ if (dstType != srcType)
{
//Check for invalid casts
//(like bool to int/float and others).
- if (SrcType != OperType.F32 &&
- SrcType != OperType.I32)
+ if (srcType != OperType.F32 &&
+ srcType != OperType.I32)
{
throw new InvalidOperationException();
}
- switch (Src)
+ switch (src)
{
- case ShaderIrOperGpr Gpr:
+ case ShaderIrOperGpr gpr:
{
//When the Gpr is ZR, just return the 0 value directly,
//since the float encoding for 0 is 0.
- if (Gpr.IsConst)
+ if (gpr.IsConst)
{
return "0";
}
@@ -1578,37 +1578,37 @@ namespace Ryujinx.Graphics.Gal.Shader
}
}
- switch (DstType)
+ switch (dstType)
{
- case OperType.F32: Expr = "intBitsToFloat(" + Expr + ")"; break;
- case OperType.I32: Expr = "floatBitsToInt(" + Expr + ")"; break;
+ case OperType.F32: expr = "intBitsToFloat(" + expr + ")"; break;
+ case OperType.I32: expr = "floatBitsToInt(" + expr + ")"; break;
}
}
- return Expr;
+ return expr;
}
- private static string GetIntConst(int Value)
+ private static string GetIntConst(int value)
{
- string Expr = Value.ToString(CultureInfo.InvariantCulture);
+ string expr = value.ToString(CultureInfo.InvariantCulture);
- return Value < 0 ? "(" + Expr + ")" : Expr;
+ return value < 0 ? "(" + expr + ")" : expr;
}
- private static string GetFloatConst(float Value)
+ private static string GetFloatConst(float value)
{
- string Expr = Value.ToString(CultureInfo.InvariantCulture);
+ string expr = value.ToString(CultureInfo.InvariantCulture);
- return Value < 0 ? "(" + Expr + ")" : Expr;
+ return value < 0 ? "(" + expr + ")" : expr;
}
- private static OperType GetDstNodeType(ShaderIrNode Node)
+ private static OperType GetDstNodeType(ShaderIrNode node)
{
//Special case instructions with the result type different
//from the input types (like integer <-> float conversion) here.
- if (Node is ShaderIrOp Op)
+ if (node is ShaderIrOp op)
{
- switch (Op.Inst)
+ switch (op.Inst)
{
case ShaderIrInst.Stof:
case ShaderIrInst.Txlf:
@@ -1621,54 +1621,54 @@ namespace Ryujinx.Graphics.Gal.Shader
}
}
- return GetSrcNodeType(Node);
+ return GetSrcNodeType(node);
}
- private static OperType GetSrcNodeType(ShaderIrNode Node)
+ private static OperType GetSrcNodeType(ShaderIrNode node)
{
- switch (Node)
+ switch (node)
{
- case ShaderIrOperAbuf Abuf:
- return Abuf.Offs == GlslDecl.LayerAttr ||
- Abuf.Offs == GlslDecl.InstanceIdAttr ||
- Abuf.Offs == GlslDecl.VertexIdAttr ||
- Abuf.Offs == GlslDecl.FaceAttr
+ case ShaderIrOperAbuf abuf:
+ return abuf.Offs == GlslDecl.LayerAttr ||
+ abuf.Offs == GlslDecl.InstanceIdAttr ||
+ abuf.Offs == GlslDecl.VertexIdAttr ||
+ abuf.Offs == GlslDecl.FaceAttr
? OperType.I32
: OperType.F32;
- case ShaderIrOperCbuf Cbuf: return OperType.F32;
- case ShaderIrOperGpr Gpr: return OperType.F32;
- case ShaderIrOperImm Imm: return OperType.I32;
- case ShaderIrOperImmf Immf: return OperType.F32;
- case ShaderIrOperPred Pred: return OperType.Bool;
+ case ShaderIrOperCbuf cbuf: return OperType.F32;
+ case ShaderIrOperGpr gpr: return OperType.F32;
+ case ShaderIrOperImm imm: return OperType.I32;
+ case ShaderIrOperImmf immf: return OperType.F32;
+ case ShaderIrOperPred pred: return OperType.Bool;
- case ShaderIrOp Op:
- if (Op.Inst > ShaderIrInst.B_Start &&
- Op.Inst < ShaderIrInst.B_End)
+ case ShaderIrOp op:
+ if (op.Inst > ShaderIrInst.B_Start &&
+ op.Inst < ShaderIrInst.B_End)
{
return OperType.Bool;
}
- else if (Op.Inst > ShaderIrInst.F_Start &&
- Op.Inst < ShaderIrInst.F_End)
+ else if (op.Inst > ShaderIrInst.F_Start &&
+ op.Inst < ShaderIrInst.F_End)
{
return OperType.F32;
}
- else if (Op.Inst > ShaderIrInst.I_Start &&
- Op.Inst < ShaderIrInst.I_End)
+ else if (op.Inst > ShaderIrInst.I_Start &&
+ op.Inst < ShaderIrInst.I_End)
{
return OperType.I32;
}
break;
}
- throw new ArgumentException(nameof(Node));
+ throw new ArgumentException(nameof(node));
}
- private static string GetBlockPosition(ShaderIrBlock Block)
+ private static string GetBlockPosition(ShaderIrBlock block)
{
- if (Block != null)
+ if (block != null)
{
- return "0x" + Block.Position.ToString("x8") + "u";
+ return "0x" + block.Position.ToString("x8") + "u";
}
else
{
diff --git a/Ryujinx.Graphics/Gal/Shader/GlslProgram.cs b/Ryujinx.Graphics/Gal/Shader/GlslProgram.cs
index a7af05ae..be8555d5 100644
--- a/Ryujinx.Graphics/Gal/Shader/GlslProgram.cs
+++ b/Ryujinx.Graphics/Gal/Shader/GlslProgram.cs
@@ -10,13 +10,13 @@ namespace Ryujinx.Graphics.Gal.Shader
public IEnumerable<ShaderDeclInfo> Uniforms { get; private set; }
public GlslProgram(
- string Code,
- IEnumerable<ShaderDeclInfo> Textures,
- IEnumerable<ShaderDeclInfo> Uniforms)
+ string code,
+ IEnumerable<ShaderDeclInfo> textures,
+ IEnumerable<ShaderDeclInfo> uniforms)
{
- this.Code = Code;
- this.Textures = Textures;
- this.Uniforms = Uniforms;
+ Code = code;
+ Textures = textures;
+ Uniforms = uniforms;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeAlu.cs b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeAlu.cs
index 469092a2..f935be74 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeAlu.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeAlu.cs
@@ -14,1138 +14,1138 @@ namespace Ryujinx.Graphics.Gal.Shader
MergeH1
}
- public static void Bfe_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Bfe_C(ShaderIrBlock block, long opCode, int position)
{
- EmitBfe(Block, OpCode, ShaderOper.CR);
+ EmitBfe(block, opCode, ShaderOper.Cr);
}
- public static void Bfe_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Bfe_I(ShaderIrBlock block, long opCode, int position)
{
- EmitBfe(Block, OpCode, ShaderOper.Imm);
+ EmitBfe(block, opCode, ShaderOper.Imm);
}
- public static void Bfe_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Bfe_R(ShaderIrBlock block, long opCode, int position)
{
- EmitBfe(Block, OpCode, ShaderOper.RR);
+ EmitBfe(block, opCode, ShaderOper.Rr);
}
- public static void Fadd_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fadd_C(ShaderIrBlock block, long opCode, int position)
{
- EmitFadd(Block, OpCode, ShaderOper.CR);
+ EmitFadd(block, opCode, ShaderOper.Cr);
}
- public static void Fadd_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fadd_I(ShaderIrBlock block, long opCode, int position)
{
- EmitFadd(Block, OpCode, ShaderOper.Immf);
+ EmitFadd(block, opCode, ShaderOper.Immf);
}
- public static void Fadd_I32(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fadd_I32(ShaderIrBlock block, long opCode, int position)
{
- ShaderIrNode OperA = OpCode.Gpr8();
- ShaderIrNode OperB = OpCode.Immf32_20();
+ ShaderIrNode operA = opCode.Gpr8();
+ ShaderIrNode operB = opCode.Immf32_20();
- bool NegB = OpCode.Read(53);
- bool AbsA = OpCode.Read(54);
- bool NegA = OpCode.Read(56);
- bool AbsB = OpCode.Read(57);
+ bool negB = opCode.Read(53);
+ bool absA = opCode.Read(54);
+ bool negA = opCode.Read(56);
+ bool absB = opCode.Read(57);
- OperA = GetAluFabsFneg(OperA, AbsA, NegA);
- OperB = GetAluFabsFneg(OperB, AbsB, NegB);
+ operA = GetAluFabsFneg(operA, absA, negA);
+ operB = GetAluFabsFneg(operB, absB, negB);
- ShaderIrOp Op = new ShaderIrOp(ShaderIrInst.Fadd, OperA, OperB);
+ ShaderIrOp op = new ShaderIrOp(ShaderIrInst.Fadd, operA, operB);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op)));
}
- public static void Fadd_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fadd_R(ShaderIrBlock block, long opCode, int position)
{
- EmitFadd(Block, OpCode, ShaderOper.RR);
+ EmitFadd(block, opCode, ShaderOper.Rr);
}
- public static void Ffma_CR(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Ffma_CR(ShaderIrBlock block, long opCode, int position)
{
- EmitFfma(Block, OpCode, ShaderOper.CR);
+ EmitFfma(block, opCode, ShaderOper.Cr);
}
- public static void Ffma_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Ffma_I(ShaderIrBlock block, long opCode, int position)
{
- EmitFfma(Block, OpCode, ShaderOper.Immf);
+ EmitFfma(block, opCode, ShaderOper.Immf);
}
- public static void Ffma_RC(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Ffma_RC(ShaderIrBlock block, long opCode, int position)
{
- EmitFfma(Block, OpCode, ShaderOper.RC);
+ EmitFfma(block, opCode, ShaderOper.Rc);
}
- public static void Ffma_RR(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Ffma_RR(ShaderIrBlock block, long opCode, int position)
{
- EmitFfma(Block, OpCode, ShaderOper.RR);
+ EmitFfma(block, opCode, ShaderOper.Rr);
}
- public static void Fmnmx_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fmnmx_C(ShaderIrBlock block, long opCode, int position)
{
- EmitFmnmx(Block, OpCode, ShaderOper.CR);
+ EmitFmnmx(block, opCode, ShaderOper.Cr);
}
- public static void Fmnmx_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fmnmx_I(ShaderIrBlock block, long opCode, int position)
{
- EmitFmnmx(Block, OpCode, ShaderOper.Immf);
+ EmitFmnmx(block, opCode, ShaderOper.Immf);
}
- public static void Fmnmx_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fmnmx_R(ShaderIrBlock block, long opCode, int position)
{
- EmitFmnmx(Block, OpCode, ShaderOper.RR);
+ EmitFmnmx(block, opCode, ShaderOper.Rr);
}
- public static void Fmul_I32(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fmul_I32(ShaderIrBlock block, long opCode, int position)
{
- ShaderIrNode OperA = OpCode.Gpr8();
- ShaderIrNode OperB = OpCode.Immf32_20();
+ ShaderIrNode operA = opCode.Gpr8();
+ ShaderIrNode operB = opCode.Immf32_20();
- ShaderIrOp Op = new ShaderIrOp(ShaderIrInst.Fmul, OperA, OperB);
+ ShaderIrOp op = new ShaderIrOp(ShaderIrInst.Fmul, operA, operB);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op)));
}
- public static void Fmul_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fmul_C(ShaderIrBlock block, long opCode, int position)
{
- EmitFmul(Block, OpCode, ShaderOper.CR);
+ EmitFmul(block, opCode, ShaderOper.Cr);
}
- public static void Fmul_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fmul_I(ShaderIrBlock block, long opCode, int position)
{
- EmitFmul(Block, OpCode, ShaderOper.Immf);
+ EmitFmul(block, opCode, ShaderOper.Immf);
}
- public static void Fmul_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fmul_R(ShaderIrBlock block, long opCode, int position)
{
- EmitFmul(Block, OpCode, ShaderOper.RR);
+ EmitFmul(block, opCode, ShaderOper.Rr);
}
- public static void Fset_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fset_C(ShaderIrBlock block, long opCode, int position)
{
- EmitFset(Block, OpCode, ShaderOper.CR);
+ EmitFset(block, opCode, ShaderOper.Cr);
}
- public static void Fset_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fset_I(ShaderIrBlock block, long opCode, int position)
{
- EmitFset(Block, OpCode, ShaderOper.Immf);
+ EmitFset(block, opCode, ShaderOper.Immf);
}
- public static void Fset_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fset_R(ShaderIrBlock block, long opCode, int position)
{
- EmitFset(Block, OpCode, ShaderOper.RR);
+ EmitFset(block, opCode, ShaderOper.Rr);
}
- public static void Fsetp_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fsetp_C(ShaderIrBlock block, long opCode, int position)
{
- EmitFsetp(Block, OpCode, ShaderOper.CR);
+ EmitFsetp(block, opCode, ShaderOper.Cr);
}
- public static void Fsetp_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fsetp_I(ShaderIrBlock block, long opCode, int position)
{
- EmitFsetp(Block, OpCode, ShaderOper.Immf);
+ EmitFsetp(block, opCode, ShaderOper.Immf);
}
- public static void Fsetp_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Fsetp_R(ShaderIrBlock block, long opCode, int position)
{
- EmitFsetp(Block, OpCode, ShaderOper.RR);
+ EmitFsetp(block, opCode, ShaderOper.Rr);
}
- public static void Hadd2_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Hadd2_R(ShaderIrBlock block, long opCode, int position)
{
- EmitBinaryHalfOp(Block, OpCode, ShaderIrInst.Fadd);
+ EmitBinaryHalfOp(block, opCode, ShaderIrInst.Fadd);
}
- public static void Hmul2_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Hmul2_R(ShaderIrBlock block, long opCode, int position)
{
- EmitBinaryHalfOp(Block, OpCode, ShaderIrInst.Fmul);
+ EmitBinaryHalfOp(block, opCode, ShaderIrInst.Fmul);
}
- public static void Iadd_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Iadd_C(ShaderIrBlock block, long opCode, int position)
{
- EmitIadd(Block, OpCode, ShaderOper.CR);
+ EmitIadd(block, opCode, ShaderOper.Cr);
}
- public static void Iadd_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Iadd_I(ShaderIrBlock block, long opCode, int position)
{
- EmitIadd(Block, OpCode, ShaderOper.Imm);
+ EmitIadd(block, opCode, ShaderOper.Imm);
}
- public static void Iadd_I32(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Iadd_I32(ShaderIrBlock block, long opCode, int position)
{
- ShaderIrNode OperA = OpCode.Gpr8();
- ShaderIrNode OperB = OpCode.Imm32_20();
+ ShaderIrNode operA = opCode.Gpr8();
+ ShaderIrNode operB = opCode.Imm32_20();
- bool NegA = OpCode.Read(56);
+ bool negA = opCode.Read(56);
- OperA = GetAluIneg(OperA, NegA);
+ operA = GetAluIneg(operA, negA);
- ShaderIrOp Op = new ShaderIrOp(ShaderIrInst.Add, OperA, OperB);
+ ShaderIrOp op = new ShaderIrOp(ShaderIrInst.Add, operA, operB);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op)));
}
- public static void Iadd_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Iadd_R(ShaderIrBlock block, long opCode, int position)
{
- EmitIadd(Block, OpCode, ShaderOper.RR);
+ EmitIadd(block, opCode, ShaderOper.Rr);
}
- public static void Iadd3_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Iadd3_C(ShaderIrBlock block, long opCode, int position)
{
- EmitIadd3(Block, OpCode, ShaderOper.CR);
+ EmitIadd3(block, opCode, ShaderOper.Cr);
}
- public static void Iadd3_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Iadd3_I(ShaderIrBlock block, long opCode, int position)
{
- EmitIadd3(Block, OpCode, ShaderOper.Imm);
+ EmitIadd3(block, opCode, ShaderOper.Imm);
}
- public static void Iadd3_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Iadd3_R(ShaderIrBlock block, long opCode, int position)
{
- EmitIadd3(Block, OpCode, ShaderOper.RR);
+ EmitIadd3(block, opCode, ShaderOper.Rr);
}
- public static void Imnmx_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Imnmx_C(ShaderIrBlock block, long opCode, int position)
{
- EmitImnmx(Block, OpCode, ShaderOper.CR);
+ EmitImnmx(block, opCode, ShaderOper.Cr);
}
- public static void Imnmx_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Imnmx_I(ShaderIrBlock block, long opCode, int position)
{
- EmitImnmx(Block, OpCode, ShaderOper.Imm);
+ EmitImnmx(block, opCode, ShaderOper.Imm);
}
- public static void Imnmx_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Imnmx_R(ShaderIrBlock block, long opCode, int position)
{
- EmitImnmx(Block, OpCode, ShaderOper.RR);
+ EmitImnmx(block, opCode, ShaderOper.Rr);
}
- public static void Ipa(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Ipa(ShaderIrBlock block, long opCode, int position)
{
- ShaderIrNode OperA = OpCode.Abuf28();
- ShaderIrNode OperB = OpCode.Gpr20();
+ ShaderIrNode operA = opCode.Abuf28();
+ ShaderIrNode operB = opCode.Gpr20();
- ShaderIpaMode Mode = (ShaderIpaMode)(OpCode.Read(54, 3));
+ ShaderIpaMode mode = (ShaderIpaMode)(opCode.Read(54, 3));
- ShaderIrMetaIpa Meta = new ShaderIrMetaIpa(Mode);
+ ShaderIrMetaIpa meta = new ShaderIrMetaIpa(mode);
- ShaderIrOp Op = new ShaderIrOp(ShaderIrInst.Ipa, OperA, OperB, null, Meta);
+ ShaderIrOp op = new ShaderIrOp(ShaderIrInst.Ipa, operA, operB, null, meta);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op)));
}
- public static void Iscadd_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Iscadd_C(ShaderIrBlock block, long opCode, int position)
{
- EmitIscadd(Block, OpCode, ShaderOper.CR);
+ EmitIscadd(block, opCode, ShaderOper.Cr);
}
- public static void Iscadd_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Iscadd_I(ShaderIrBlock block, long opCode, int position)
{
- EmitIscadd(Block, OpCode, ShaderOper.Imm);
+ EmitIscadd(block, opCode, ShaderOper.Imm);
}
- public static void Iscadd_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Iscadd_R(ShaderIrBlock block, long opCode, int position)
{
- EmitIscadd(Block, OpCode, ShaderOper.RR);
+ EmitIscadd(block, opCode, ShaderOper.Rr);
}
- public static void Iset_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Iset_C(ShaderIrBlock block, long opCode, int position)
{
- EmitIset(Block, OpCode, ShaderOper.CR);
+ EmitIset(block, opCode, ShaderOper.Cr);
}
- public static void Iset_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Iset_I(ShaderIrBlock block, long opCode, int position)
{
- EmitIset(Block, OpCode, ShaderOper.Imm);
+ EmitIset(block, opCode, ShaderOper.Imm);
}
- public static void Iset_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Iset_R(ShaderIrBlock block, long opCode, int position)
{
- EmitIset(Block, OpCode, ShaderOper.RR);
+ EmitIset(block, opCode, ShaderOper.Rr);
}
- public static void Isetp_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Isetp_C(ShaderIrBlock block, long opCode, int position)
{
- EmitIsetp(Block, OpCode, ShaderOper.CR);
+ EmitIsetp(block, opCode, ShaderOper.Cr);
}
- public static void Isetp_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Isetp_I(ShaderIrBlock block, long opCode, int position)
{
- EmitIsetp(Block, OpCode, ShaderOper.Imm);
+ EmitIsetp(block, opCode, ShaderOper.Imm);
}
- public static void Isetp_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Isetp_R(ShaderIrBlock block, long opCode, int position)
{
- EmitIsetp(Block, OpCode, ShaderOper.RR);
+ EmitIsetp(block, opCode, ShaderOper.Rr);
}
- public static void Lop_I32(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Lop_I32(ShaderIrBlock block, long opCode, int position)
{
- int SubOp = OpCode.Read(53, 3);
+ int subOp = opCode.Read(53, 3);
- bool InvA = OpCode.Read(55);
- bool InvB = OpCode.Read(56);
+ bool invA = opCode.Read(55);
+ bool invB = opCode.Read(56);
- ShaderIrInst Inst = 0;
+ ShaderIrInst inst = 0;
- switch (SubOp)
+ switch (subOp)
{
- case 0: Inst = ShaderIrInst.And; break;
- case 1: Inst = ShaderIrInst.Or; break;
- case 2: Inst = ShaderIrInst.Xor; break;
+ case 0: inst = ShaderIrInst.And; break;
+ case 1: inst = ShaderIrInst.Or; break;
+ case 2: inst = ShaderIrInst.Xor; break;
}
- ShaderIrNode OperB = GetAluNot(OpCode.Imm32_20(), InvB);
+ ShaderIrNode operB = GetAluNot(opCode.Imm32_20(), invB);
//SubOp == 3 is pass, used by the not instruction
//which just moves the inverted register value.
- if (SubOp < 3)
+ if (subOp < 3)
{
- ShaderIrNode OperA = GetAluNot(OpCode.Gpr8(), InvA);
+ ShaderIrNode operA = GetAluNot(opCode.Gpr8(), invA);
- ShaderIrOp Op = new ShaderIrOp(Inst, OperA, OperB);
+ ShaderIrOp op = new ShaderIrOp(inst, operA, operB);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op)));
}
else
{
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), OperB)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), operB)));
}
}
- public static void Lop_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Lop_C(ShaderIrBlock block, long opCode, int position)
{
- EmitLop(Block, OpCode, ShaderOper.CR);
+ EmitLop(block, opCode, ShaderOper.Cr);
}
- public static void Lop_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Lop_I(ShaderIrBlock block, long opCode, int position)
{
- EmitLop(Block, OpCode, ShaderOper.Imm);
+ EmitLop(block, opCode, ShaderOper.Imm);
}
- public static void Lop_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Lop_R(ShaderIrBlock block, long opCode, int position)
{
- EmitLop(Block, OpCode, ShaderOper.RR);
+ EmitLop(block, opCode, ShaderOper.Rr);
}
- public static void Mufu(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Mufu(ShaderIrBlock block, long opCode, int position)
{
- int SubOp = OpCode.Read(20, 0xf);
+ int subOp = opCode.Read(20, 0xf);
- bool AbsA = OpCode.Read(46);
- bool NegA = OpCode.Read(48);
+ bool absA = opCode.Read(46);
+ bool negA = opCode.Read(48);
- ShaderIrInst Inst = 0;
+ ShaderIrInst inst = 0;
- switch (SubOp)
+ switch (subOp)
{
- case 0: Inst = ShaderIrInst.Fcos; break;
- case 1: Inst = ShaderIrInst.Fsin; break;
- case 2: Inst = ShaderIrInst.Fex2; break;
- case 3: Inst = ShaderIrInst.Flg2; break;
- case 4: Inst = ShaderIrInst.Frcp; break;
- case 5: Inst = ShaderIrInst.Frsq; break;
- case 8: Inst = ShaderIrInst.Fsqrt; break;
-
- default: throw new NotImplementedException(SubOp.ToString());
+ case 0: inst = ShaderIrInst.Fcos; break;
+ case 1: inst = ShaderIrInst.Fsin; break;
+ case 2: inst = ShaderIrInst.Fex2; break;
+ case 3: inst = ShaderIrInst.Flg2; break;
+ case 4: inst = ShaderIrInst.Frcp; break;
+ case 5: inst = ShaderIrInst.Frsq; break;
+ case 8: inst = ShaderIrInst.Fsqrt; break;
+
+ default: throw new NotImplementedException(subOp.ToString());
}
- ShaderIrNode OperA = OpCode.Gpr8();
+ ShaderIrNode operA = opCode.Gpr8();
- ShaderIrOp Op = new ShaderIrOp(Inst, GetAluFabsFneg(OperA, AbsA, NegA));
+ ShaderIrOp op = new ShaderIrOp(inst, GetAluFabsFneg(operA, absA, negA));
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op)));
}
- public static void Psetp(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Psetp(ShaderIrBlock block, long opCode, int position)
{
- bool NegA = OpCode.Read(15);
- bool NegB = OpCode.Read(32);
- bool NegP = OpCode.Read(42);
+ bool negA = opCode.Read(15);
+ bool negB = opCode.Read(32);
+ bool negP = opCode.Read(42);
- ShaderIrInst LopInst = OpCode.BLop24();
+ ShaderIrInst lopInst = opCode.BLop24();
- ShaderIrNode OperA = OpCode.Pred12();
- ShaderIrNode OperB = OpCode.Pred29();
+ ShaderIrNode operA = opCode.Pred12();
+ ShaderIrNode operB = opCode.Pred29();
- if (NegA)
+ if (negA)
{
- OperA = new ShaderIrOp(ShaderIrInst.Bnot, OperA);
+ operA = new ShaderIrOp(ShaderIrInst.Bnot, operA);
}
- if (NegB)
+ if (negB)
{
- OperB = new ShaderIrOp(ShaderIrInst.Bnot, OperB);
+ operB = new ShaderIrOp(ShaderIrInst.Bnot, operB);
}
- ShaderIrOp Op = new ShaderIrOp(LopInst, OperA, OperB);
+ ShaderIrOp op = new ShaderIrOp(lopInst, operA, operB);
- ShaderIrOperPred P0Node = OpCode.Pred3();
- ShaderIrOperPred P1Node = OpCode.Pred0();
- ShaderIrOperPred P2Node = OpCode.Pred39();
+ ShaderIrOperPred p0Node = opCode.Pred3();
+ ShaderIrOperPred p1Node = opCode.Pred0();
+ ShaderIrOperPred p2Node = opCode.Pred39();
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(P0Node, Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(p0Node, op)));
- LopInst = OpCode.BLop45();
+ lopInst = opCode.BLop45();
- if (LopInst == ShaderIrInst.Band && P1Node.IsConst && P2Node.IsConst)
+ if (lopInst == ShaderIrInst.Band && p1Node.IsConst && p2Node.IsConst)
{
return;
}
- ShaderIrNode P2NNode = P2Node;
+ ShaderIrNode p2NNode = p2Node;
- if (NegP)
+ if (negP)
{
- P2NNode = new ShaderIrOp(ShaderIrInst.Bnot, P2NNode);
+ p2NNode = new ShaderIrOp(ShaderIrInst.Bnot, p2NNode);
}
- Op = new ShaderIrOp(ShaderIrInst.Bnot, P0Node);
+ op = new ShaderIrOp(ShaderIrInst.Bnot, p0Node);
- Op = new ShaderIrOp(LopInst, Op, P2NNode);
+ op = new ShaderIrOp(lopInst, op, p2NNode);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(P1Node, Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(p1Node, op)));
- Op = new ShaderIrOp(LopInst, P0Node, P2NNode);
+ op = new ShaderIrOp(lopInst, p0Node, p2NNode);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(P0Node, Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(p0Node, op)));
}
- public static void Rro_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Rro_C(ShaderIrBlock block, long opCode, int position)
{
- EmitRro(Block, OpCode, ShaderOper.CR);
+ EmitRro(block, opCode, ShaderOper.Cr);
}
- public static void Rro_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Rro_I(ShaderIrBlock block, long opCode, int position)
{
- EmitRro(Block, OpCode, ShaderOper.Immf);
+ EmitRro(block, opCode, ShaderOper.Immf);
}
- public static void Rro_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Rro_R(ShaderIrBlock block, long opCode, int position)
{
- EmitRro(Block, OpCode, ShaderOper.RR);
+ EmitRro(block, opCode, ShaderOper.Rr);
}
- public static void Shl_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Shl_C(ShaderIrBlock block, long opCode, int position)
{
- EmitAluBinary(Block, OpCode, ShaderOper.CR, ShaderIrInst.Lsl);
+ EmitAluBinary(block, opCode, ShaderOper.Cr, ShaderIrInst.Lsl);
}
- public static void Shl_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Shl_I(ShaderIrBlock block, long opCode, int position)
{
- EmitAluBinary(Block, OpCode, ShaderOper.Imm, ShaderIrInst.Lsl);
+ EmitAluBinary(block, opCode, ShaderOper.Imm, ShaderIrInst.Lsl);
}
- public static void Shl_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Shl_R(ShaderIrBlock block, long opCode, int position)
{
- EmitAluBinary(Block, OpCode, ShaderOper.RR, ShaderIrInst.Lsl);
+ EmitAluBinary(block, opCode, ShaderOper.Rr, ShaderIrInst.Lsl);
}
- public static void Shr_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Shr_C(ShaderIrBlock block, long opCode, int position)
{
- EmitAluBinary(Block, OpCode, ShaderOper.CR, GetShrInst(OpCode));
+ EmitAluBinary(block, opCode, ShaderOper.Cr, GetShrInst(opCode));
}
- public static void Shr_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Shr_I(ShaderIrBlock block, long opCode, int position)
{
- EmitAluBinary(Block, OpCode, ShaderOper.Imm, GetShrInst(OpCode));
+ EmitAluBinary(block, opCode, ShaderOper.Imm, GetShrInst(opCode));
}
- public static void Shr_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Shr_R(ShaderIrBlock block, long opCode, int position)
{
- EmitAluBinary(Block, OpCode, ShaderOper.RR, GetShrInst(OpCode));
+ EmitAluBinary(block, opCode, ShaderOper.Rr, GetShrInst(opCode));
}
- private static ShaderIrInst GetShrInst(long OpCode)
+ private static ShaderIrInst GetShrInst(long opCode)
{
- bool Signed = OpCode.Read(48);
+ bool signed = opCode.Read(48);
- return Signed ? ShaderIrInst.Asr : ShaderIrInst.Lsr;
+ return signed ? ShaderIrInst.Asr : ShaderIrInst.Lsr;
}
- public static void Vmad(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Vmad(ShaderIrBlock block, long opCode, int position)
{
- ShaderIrNode OperA = OpCode.Gpr8();
+ ShaderIrNode operA = opCode.Gpr8();
- ShaderIrNode OperB;
+ ShaderIrNode operB;
- if (OpCode.Read(50))
+ if (opCode.Read(50))
{
- OperB = OpCode.Gpr20();
+ operB = opCode.Gpr20();
}
else
{
- OperB = OpCode.Imm19_20();
+ operB = opCode.Imm19_20();
}
- ShaderIrOperGpr OperC = OpCode.Gpr39();
+ ShaderIrOperGpr operC = opCode.Gpr39();
- ShaderIrNode Tmp = new ShaderIrOp(ShaderIrInst.Mul, OperA, OperB);
+ ShaderIrNode tmp = new ShaderIrOp(ShaderIrInst.Mul, operA, operB);
- ShaderIrNode Final = new ShaderIrOp(ShaderIrInst.Add, Tmp, OperC);
+ ShaderIrNode final = new ShaderIrOp(ShaderIrInst.Add, tmp, operC);
- int Shr = OpCode.Read(51, 3);
+ int shr = opCode.Read(51, 3);
- if (Shr != 0)
+ if (shr != 0)
{
- int Shift = (Shr == 2) ? 15 : 7;
+ int shift = (shr == 2) ? 15 : 7;
- Final = new ShaderIrOp(ShaderIrInst.Lsr, Final, new ShaderIrOperImm(Shift));
+ final = new ShaderIrOp(ShaderIrInst.Lsr, final, new ShaderIrOperImm(shift));
}
- Block.AddNode(new ShaderIrCmnt("Stubbed. Instruction is reduced to a * b + c"));
+ block.AddNode(new ShaderIrCmnt("Stubbed. Instruction is reduced to a * b + c"));
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Final)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), final)));
}
- public static void Xmad_CR(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Xmad_CR(ShaderIrBlock block, long opCode, int position)
{
- EmitXmad(Block, OpCode, ShaderOper.CR);
+ EmitXmad(block, opCode, ShaderOper.Cr);
}
- public static void Xmad_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Xmad_I(ShaderIrBlock block, long opCode, int position)
{
- EmitXmad(Block, OpCode, ShaderOper.Imm);
+ EmitXmad(block, opCode, ShaderOper.Imm);
}
- public static void Xmad_RC(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Xmad_RC(ShaderIrBlock block, long opCode, int position)
{
- EmitXmad(Block, OpCode, ShaderOper.RC);
+ EmitXmad(block, opCode, ShaderOper.Rc);
}
- public static void Xmad_RR(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Xmad_RR(ShaderIrBlock block, long opCode, int position)
{
- EmitXmad(Block, OpCode, ShaderOper.RR);
+ EmitXmad(block, opCode, ShaderOper.Rr);
}
private static void EmitAluBinary(
- ShaderIrBlock Block,
- long OpCode,
- ShaderOper Oper,
- ShaderIrInst Inst)
+ ShaderIrBlock block,
+ long opCode,
+ ShaderOper oper,
+ ShaderIrInst inst)
{
- ShaderIrNode OperA = OpCode.Gpr8(), OperB;
+ ShaderIrNode operA = opCode.Gpr8(), operB;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperB = OpCode.Cbuf34(); break;
- case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break;
- case ShaderOper.RR: OperB = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operB = opCode.Cbuf34(); break;
+ case ShaderOper.Imm: operB = opCode.Imm19_20(); break;
+ case ShaderOper.Rr: operB = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- ShaderIrNode Op = new ShaderIrOp(Inst, OperA, OperB);
+ ShaderIrNode op = new ShaderIrOp(inst, operA, operB);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op)));
}
- private static void EmitBfe(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitBfe(ShaderIrBlock block, long opCode, ShaderOper oper)
{
//TODO: Handle the case where position + length
//is greater than the word size, in this case the sign bit
//needs to be replicated to fill the remaining space.
- bool NegB = OpCode.Read(48);
- bool NegA = OpCode.Read(49);
+ bool negB = opCode.Read(48);
+ bool negA = opCode.Read(49);
- ShaderIrNode OperA = OpCode.Gpr8(), OperB;
+ ShaderIrNode operA = opCode.Gpr8(), operB;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperB = OpCode.Cbuf34(); break;
- case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break;
- case ShaderOper.RR: OperB = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operB = opCode.Cbuf34(); break;
+ case ShaderOper.Imm: operB = opCode.Imm19_20(); break;
+ case ShaderOper.Rr: operB = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- ShaderIrNode Op;
+ ShaderIrNode op;
- bool Signed = OpCode.Read(48); //?
+ bool signed = opCode.Read(48); //?
- if (OperB is ShaderIrOperImm PosLen)
+ if (operB is ShaderIrOperImm posLen)
{
- int Position = (PosLen.Value >> 0) & 0xff;
- int Length = (PosLen.Value >> 8) & 0xff;
+ int position = (posLen.Value >> 0) & 0xff;
+ int length = (posLen.Value >> 8) & 0xff;
- int LSh = 32 - (Position + Length);
+ int lSh = 32 - (position + length);
- ShaderIrInst RightShift = Signed
+ ShaderIrInst rightShift = signed
? ShaderIrInst.Asr
: ShaderIrInst.Lsr;
- Op = new ShaderIrOp(ShaderIrInst.Lsl, OperA, new ShaderIrOperImm(LSh));
- Op = new ShaderIrOp(RightShift, Op, new ShaderIrOperImm(LSh + Position));
+ op = new ShaderIrOp(ShaderIrInst.Lsl, operA, new ShaderIrOperImm(lSh));
+ op = new ShaderIrOp(rightShift, op, new ShaderIrOperImm(lSh + position));
}
else
{
- ShaderIrOperImm Shift = new ShaderIrOperImm(8);
- ShaderIrOperImm Mask = new ShaderIrOperImm(0xff);
+ ShaderIrOperImm shift = new ShaderIrOperImm(8);
+ ShaderIrOperImm mask = new ShaderIrOperImm(0xff);
- ShaderIrNode OpPos, OpLen;
+ ShaderIrNode opPos, opLen;
- OpPos = new ShaderIrOp(ShaderIrInst.And, OperB, Mask);
- OpLen = new ShaderIrOp(ShaderIrInst.Lsr, OperB, Shift);
- OpLen = new ShaderIrOp(ShaderIrInst.And, OpLen, Mask);
+ opPos = new ShaderIrOp(ShaderIrInst.And, operB, mask);
+ opLen = new ShaderIrOp(ShaderIrInst.Lsr, operB, shift);
+ opLen = new ShaderIrOp(ShaderIrInst.And, opLen, mask);
- Op = new ShaderIrOp(ShaderIrInst.Lsr, OperA, OpPos);
+ op = new ShaderIrOp(ShaderIrInst.Lsr, operA, opPos);
- Op = ExtendTo32(Op, Signed, OpLen);
+ op = ExtendTo32(op, signed, opLen);
}
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op)));
}
- private static void EmitFadd(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitFadd(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- bool NegB = OpCode.Read(45);
- bool AbsA = OpCode.Read(46);
- bool NegA = OpCode.Read(48);
- bool AbsB = OpCode.Read(49);
- bool Sat = OpCode.Read(50);
+ bool negB = opCode.Read(45);
+ bool absA = opCode.Read(46);
+ bool negA = opCode.Read(48);
+ bool absB = opCode.Read(49);
+ bool sat = opCode.Read(50);
- ShaderIrNode OperA = OpCode.Gpr8(), OperB;
+ ShaderIrNode operA = opCode.Gpr8(), operB;
- OperA = GetAluFabsFneg(OperA, AbsA, NegA);
+ operA = GetAluFabsFneg(operA, absA, negA);
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperB = OpCode.Cbuf34(); break;
- case ShaderOper.Immf: OperB = OpCode.Immf19_20(); break;
- case ShaderOper.RR: OperB = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operB = opCode.Cbuf34(); break;
+ case ShaderOper.Immf: operB = opCode.Immf19_20(); break;
+ case ShaderOper.Rr: operB = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- OperB = GetAluFabsFneg(OperB, AbsB, NegB);
+ operB = GetAluFabsFneg(operB, absB, negB);
- ShaderIrNode Op = new ShaderIrOp(ShaderIrInst.Fadd, OperA, OperB);
+ ShaderIrNode op = new ShaderIrOp(ShaderIrInst.Fadd, operA, operB);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), GetAluFsat(Op, Sat))));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), GetAluFsat(op, sat))));
}
- private static void EmitFmul(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitFmul(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- bool NegB = OpCode.Read(48);
- bool Sat = OpCode.Read(50);
+ bool negB = opCode.Read(48);
+ bool sat = opCode.Read(50);
- ShaderIrNode OperA = OpCode.Gpr8(), OperB;
+ ShaderIrNode operA = opCode.Gpr8(), operB;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperB = OpCode.Cbuf34(); break;
- case ShaderOper.Immf: OperB = OpCode.Immf19_20(); break;
- case ShaderOper.RR: OperB = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operB = opCode.Cbuf34(); break;
+ case ShaderOper.Immf: operB = opCode.Immf19_20(); break;
+ case ShaderOper.Rr: operB = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- OperB = GetAluFneg(OperB, NegB);
+ operB = GetAluFneg(operB, negB);
- ShaderIrNode Op = new ShaderIrOp(ShaderIrInst.Fmul, OperA, OperB);
+ ShaderIrNode op = new ShaderIrOp(ShaderIrInst.Fmul, operA, operB);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), GetAluFsat(Op, Sat))));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), GetAluFsat(op, sat))));
}
- private static void EmitFfma(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitFfma(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- bool NegB = OpCode.Read(48);
- bool NegC = OpCode.Read(49);
- bool Sat = OpCode.Read(50);
+ bool negB = opCode.Read(48);
+ bool negC = opCode.Read(49);
+ bool sat = opCode.Read(50);
- ShaderIrNode OperA = OpCode.Gpr8(), OperB, OperC;
+ ShaderIrNode operA = opCode.Gpr8(), operB, operC;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperB = OpCode.Cbuf34(); break;
- case ShaderOper.Immf: OperB = OpCode.Immf19_20(); break;
- case ShaderOper.RC: OperB = OpCode.Gpr39(); break;
- case ShaderOper.RR: OperB = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operB = opCode.Cbuf34(); break;
+ case ShaderOper.Immf: operB = opCode.Immf19_20(); break;
+ case ShaderOper.Rc: operB = opCode.Gpr39(); break;
+ case ShaderOper.Rr: operB = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- OperB = GetAluFneg(OperB, NegB);
+ operB = GetAluFneg(operB, negB);
- if (Oper == ShaderOper.RC)
+ if (oper == ShaderOper.Rc)
{
- OperC = GetAluFneg(OpCode.Cbuf34(), NegC);
+ operC = GetAluFneg(opCode.Cbuf34(), negC);
}
else
{
- OperC = GetAluFneg(OpCode.Gpr39(), NegC);
+ operC = GetAluFneg(opCode.Gpr39(), negC);
}
- ShaderIrOp Op = new ShaderIrOp(ShaderIrInst.Ffma, OperA, OperB, OperC);
+ ShaderIrOp op = new ShaderIrOp(ShaderIrInst.Ffma, operA, operB, operC);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), GetAluFsat(Op, Sat))));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), GetAluFsat(op, sat))));
}
- private static void EmitIadd(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitIadd(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- ShaderIrNode OperA = OpCode.Gpr8();
- ShaderIrNode OperB;
+ ShaderIrNode operA = opCode.Gpr8();
+ ShaderIrNode operB;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperB = OpCode.Cbuf34(); break;
- case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break;
- case ShaderOper.RR: OperB = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operB = opCode.Cbuf34(); break;
+ case ShaderOper.Imm: operB = opCode.Imm19_20(); break;
+ case ShaderOper.Rr: operB = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- bool NegA = OpCode.Read(49);
- bool NegB = OpCode.Read(48);
+ bool negA = opCode.Read(49);
+ bool negB = opCode.Read(48);
- OperA = GetAluIneg(OperA, NegA);
- OperB = GetAluIneg(OperB, NegB);
+ operA = GetAluIneg(operA, negA);
+ operB = GetAluIneg(operB, negB);
- ShaderIrOp Op = new ShaderIrOp(ShaderIrInst.Add, OperA, OperB);
+ ShaderIrOp op = new ShaderIrOp(ShaderIrInst.Add, operA, operB);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op)));
}
- private static void EmitIadd3(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitIadd3(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- int Mode = OpCode.Read(37, 3);
+ int mode = opCode.Read(37, 3);
- bool Neg1 = OpCode.Read(51);
- bool Neg2 = OpCode.Read(50);
- bool Neg3 = OpCode.Read(49);
+ bool neg1 = opCode.Read(51);
+ bool neg2 = opCode.Read(50);
+ bool neg3 = opCode.Read(49);
- int Height1 = OpCode.Read(35, 3);
- int Height2 = OpCode.Read(33, 3);
- int Height3 = OpCode.Read(31, 3);
+ int height1 = opCode.Read(35, 3);
+ int height2 = opCode.Read(33, 3);
+ int height3 = opCode.Read(31, 3);
- ShaderIrNode OperB;
+ ShaderIrNode operB;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperB = OpCode.Cbuf34(); break;
- case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break;
- case ShaderOper.RR: OperB = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operB = opCode.Cbuf34(); break;
+ case ShaderOper.Imm: operB = opCode.Imm19_20(); break;
+ case ShaderOper.Rr: operB = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- ShaderIrNode ApplyHeight(ShaderIrNode Src, int Height)
+ ShaderIrNode ApplyHeight(ShaderIrNode src, int height)
{
- if (Oper != ShaderOper.RR)
+ if (oper != ShaderOper.Rr)
{
- return Src;
+ return src;
}
- switch (Height)
+ switch (height)
{
- case 0: return Src;
- case 1: return new ShaderIrOp(ShaderIrInst.And, Src, new ShaderIrOperImm(0xffff));
- case 2: return new ShaderIrOp(ShaderIrInst.Lsr, Src, new ShaderIrOperImm(16));
+ case 0: return src;
+ case 1: return new ShaderIrOp(ShaderIrInst.And, src, new ShaderIrOperImm(0xffff));
+ case 2: return new ShaderIrOp(ShaderIrInst.Lsr, src, new ShaderIrOperImm(16));
default: throw new InvalidOperationException();
}
}
- ShaderIrNode Src1 = GetAluIneg(ApplyHeight(OpCode.Gpr8(), Height1), Neg1);
- ShaderIrNode Src2 = GetAluIneg(ApplyHeight(OperB, Height2), Neg2);
- ShaderIrNode Src3 = GetAluIneg(ApplyHeight(OpCode.Gpr39(), Height3), Neg3);
+ ShaderIrNode src1 = GetAluIneg(ApplyHeight(opCode.Gpr8(), height1), neg1);
+ ShaderIrNode src2 = GetAluIneg(ApplyHeight(operB, height2), neg2);
+ ShaderIrNode src3 = GetAluIneg(ApplyHeight(opCode.Gpr39(), height3), neg3);
- ShaderIrOp Sum = new ShaderIrOp(ShaderIrInst.Add, Src1, Src2);
+ ShaderIrOp sum = new ShaderIrOp(ShaderIrInst.Add, src1, src2);
- if (Oper == ShaderOper.RR)
+ if (oper == ShaderOper.Rr)
{
- switch (Mode)
+ switch (mode)
{
- case 1: Sum = new ShaderIrOp(ShaderIrInst.Lsr, Sum, new ShaderIrOperImm(16)); break;
- case 2: Sum = new ShaderIrOp(ShaderIrInst.Lsl, Sum, new ShaderIrOperImm(16)); break;
+ case 1: sum = new ShaderIrOp(ShaderIrInst.Lsr, sum, new ShaderIrOperImm(16)); break;
+ case 2: sum = new ShaderIrOp(ShaderIrInst.Lsl, sum, new ShaderIrOperImm(16)); break;
}
}
//Note: Here there should be a "+ 1" when carry flag is set
//but since carry is mostly ignored by other instructions, it's excluded for now
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), new ShaderIrOp(ShaderIrInst.Add, Sum, Src3))));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), new ShaderIrOp(ShaderIrInst.Add, sum, src3))));
}
- private static void EmitIscadd(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitIscadd(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- bool NegB = OpCode.Read(48);
- bool NegA = OpCode.Read(49);
+ bool negB = opCode.Read(48);
+ bool negA = opCode.Read(49);
- ShaderIrNode OperA = OpCode.Gpr8(), OperB;
+ ShaderIrNode operA = opCode.Gpr8(), operB;
- ShaderIrOperImm Scale = OpCode.Imm5_39();
+ ShaderIrOperImm scale = opCode.Imm5_39();
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperB = OpCode.Cbuf34(); break;
- case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break;
- case ShaderOper.RR: OperB = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operB = opCode.Cbuf34(); break;
+ case ShaderOper.Imm: operB = opCode.Imm19_20(); break;
+ case ShaderOper.Rr: operB = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- OperA = GetAluIneg(OperA, NegA);
- OperB = GetAluIneg(OperB, NegB);
+ operA = GetAluIneg(operA, negA);
+ operB = GetAluIneg(operB, negB);
- ShaderIrOp ScaleOp = new ShaderIrOp(ShaderIrInst.Lsl, OperA, Scale);
- ShaderIrOp AddOp = new ShaderIrOp(ShaderIrInst.Add, OperB, ScaleOp);
+ ShaderIrOp scaleOp = new ShaderIrOp(ShaderIrInst.Lsl, operA, scale);
+ ShaderIrOp addOp = new ShaderIrOp(ShaderIrInst.Add, operB, scaleOp);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), AddOp)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), addOp)));
}
- private static void EmitFmnmx(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitFmnmx(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- EmitMnmx(Block, OpCode, true, Oper);
+ EmitMnmx(block, opCode, true, oper);
}
- private static void EmitImnmx(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitImnmx(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- EmitMnmx(Block, OpCode, false, Oper);
+ EmitMnmx(block, opCode, false, oper);
}
- private static void EmitMnmx(ShaderIrBlock Block, long OpCode, bool IsFloat, ShaderOper Oper)
+ private static void EmitMnmx(ShaderIrBlock block, long opCode, bool isFloat, ShaderOper oper)
{
- bool NegB = OpCode.Read(45);
- bool AbsA = OpCode.Read(46);
- bool NegA = OpCode.Read(48);
- bool AbsB = OpCode.Read(49);
+ bool negB = opCode.Read(45);
+ bool absA = opCode.Read(46);
+ bool negA = opCode.Read(48);
+ bool absB = opCode.Read(49);
- ShaderIrNode OperA = OpCode.Gpr8(), OperB;
+ ShaderIrNode operA = opCode.Gpr8(), operB;
- if (IsFloat)
+ if (isFloat)
{
- OperA = GetAluFabsFneg(OperA, AbsA, NegA);
+ operA = GetAluFabsFneg(operA, absA, negA);
}
else
{
- OperA = GetAluIabsIneg(OperA, AbsA, NegA);
+ operA = GetAluIabsIneg(operA, absA, negA);
}
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperB = OpCode.Cbuf34(); break;
- case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break;
- case ShaderOper.Immf: OperB = OpCode.Immf19_20(); break;
- case ShaderOper.RR: OperB = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operB = opCode.Cbuf34(); break;
+ case ShaderOper.Imm: operB = opCode.Imm19_20(); break;
+ case ShaderOper.Immf: operB = opCode.Immf19_20(); break;
+ case ShaderOper.Rr: operB = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- if (IsFloat)
+ if (isFloat)
{
- OperB = GetAluFabsFneg(OperB, AbsB, NegB);
+ operB = GetAluFabsFneg(operB, absB, negB);
}
else
{
- OperB = GetAluIabsIneg(OperB, AbsB, NegB);
+ operB = GetAluIabsIneg(operB, absB, negB);
}
- ShaderIrOperPred Pred = OpCode.Pred39();
+ ShaderIrOperPred pred = opCode.Pred39();
- ShaderIrOp Op;
+ ShaderIrOp op;
- ShaderIrInst MaxInst = IsFloat ? ShaderIrInst.Fmax : ShaderIrInst.Max;
- ShaderIrInst MinInst = IsFloat ? ShaderIrInst.Fmin : ShaderIrInst.Min;
+ ShaderIrInst maxInst = isFloat ? ShaderIrInst.Fmax : ShaderIrInst.Max;
+ ShaderIrInst minInst = isFloat ? ShaderIrInst.Fmin : ShaderIrInst.Min;
- if (Pred.IsConst)
+ if (pred.IsConst)
{
- bool IsMax = OpCode.Read(42);
+ bool isMax = opCode.Read(42);
- Op = new ShaderIrOp(IsMax
- ? MaxInst
- : MinInst, OperA, OperB);
+ op = new ShaderIrOp(isMax
+ ? maxInst
+ : minInst, operA, operB);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op)));
}
else
{
- ShaderIrNode PredN = OpCode.Pred39N();
+ ShaderIrNode predN = opCode.Pred39N();
- ShaderIrOp OpMax = new ShaderIrOp(MaxInst, OperA, OperB);
- ShaderIrOp OpMin = new ShaderIrOp(MinInst, OperA, OperB);
+ ShaderIrOp opMax = new ShaderIrOp(maxInst, operA, operB);
+ ShaderIrOp opMin = new ShaderIrOp(minInst, operA, operB);
- ShaderIrAsg AsgMax = new ShaderIrAsg(OpCode.Gpr0(), OpMax);
- ShaderIrAsg AsgMin = new ShaderIrAsg(OpCode.Gpr0(), OpMin);
+ ShaderIrAsg asgMax = new ShaderIrAsg(opCode.Gpr0(), opMax);
+ ShaderIrAsg asgMin = new ShaderIrAsg(opCode.Gpr0(), opMin);
- Block.AddNode(OpCode.PredNode(new ShaderIrCond(PredN, AsgMax, Not: true)));
- Block.AddNode(OpCode.PredNode(new ShaderIrCond(PredN, AsgMin, Not: false)));
+ block.AddNode(opCode.PredNode(new ShaderIrCond(predN, asgMax, not: true)));
+ block.AddNode(opCode.PredNode(new ShaderIrCond(predN, asgMin, not: false)));
}
}
- private static void EmitRro(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitRro(ShaderIrBlock block, long opCode, ShaderOper oper)
{
//Note: this is a range reduction instruction and is supposed to
//be used with Mufu, here it just moves the value and ignores the operation.
- bool NegA = OpCode.Read(45);
- bool AbsA = OpCode.Read(49);
+ bool negA = opCode.Read(45);
+ bool absA = opCode.Read(49);
- ShaderIrNode OperA;
+ ShaderIrNode operA;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperA = OpCode.Cbuf34(); break;
- case ShaderOper.Immf: OperA = OpCode.Immf19_20(); break;
- case ShaderOper.RR: OperA = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operA = opCode.Cbuf34(); break;
+ case ShaderOper.Immf: operA = opCode.Immf19_20(); break;
+ case ShaderOper.Rr: operA = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- OperA = GetAluFabsFneg(OperA, AbsA, NegA);
+ operA = GetAluFabsFneg(operA, absA, negA);
- Block.AddNode(new ShaderIrCmnt("Stubbed."));
+ block.AddNode(new ShaderIrCmnt("Stubbed."));
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), OperA)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), operA)));
}
- private static void EmitFset(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitFset(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- EmitSet(Block, OpCode, true, Oper);
+ EmitSet(block, opCode, true, oper);
}
- private static void EmitIset(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitIset(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- EmitSet(Block, OpCode, false, Oper);
+ EmitSet(block, opCode, false, oper);
}
- private static void EmitSet(ShaderIrBlock Block, long OpCode, bool IsFloat, ShaderOper Oper)
+ private static void EmitSet(ShaderIrBlock block, long opCode, bool isFloat, ShaderOper oper)
{
- bool NegA = OpCode.Read(43);
- bool AbsB = OpCode.Read(44);
- bool NegB = OpCode.Read(53);
- bool AbsA = OpCode.Read(54);
+ bool negA = opCode.Read(43);
+ bool absB = opCode.Read(44);
+ bool negB = opCode.Read(53);
+ bool absA = opCode.Read(54);
- bool BoolFloat = OpCode.Read(IsFloat ? 52 : 44);
+ bool boolFloat = opCode.Read(isFloat ? 52 : 44);
- ShaderIrNode OperA = OpCode.Gpr8(), OperB;
+ ShaderIrNode operA = opCode.Gpr8(), operB;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperB = OpCode.Cbuf34(); break;
- case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break;
- case ShaderOper.Immf: OperB = OpCode.Immf19_20(); break;
- case ShaderOper.RR: OperB = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operB = opCode.Cbuf34(); break;
+ case ShaderOper.Imm: operB = opCode.Imm19_20(); break;
+ case ShaderOper.Immf: operB = opCode.Immf19_20(); break;
+ case ShaderOper.Rr: operB = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- ShaderIrInst CmpInst;
+ ShaderIrInst cmpInst;
- if (IsFloat)
+ if (isFloat)
{
- OperA = GetAluFabsFneg(OperA, AbsA, NegA);
- OperB = GetAluFabsFneg(OperB, AbsB, NegB);
+ operA = GetAluFabsFneg(operA, absA, negA);
+ operB = GetAluFabsFneg(operB, absB, negB);
- CmpInst = OpCode.CmpF();
+ cmpInst = opCode.CmpF();
}
else
{
- CmpInst = OpCode.Cmp();
+ cmpInst = opCode.Cmp();
}
- ShaderIrOp Op = new ShaderIrOp(CmpInst, OperA, OperB);
+ ShaderIrOp op = new ShaderIrOp(cmpInst, operA, operB);
- ShaderIrInst LopInst = OpCode.BLop45();
+ ShaderIrInst lopInst = opCode.BLop45();
- ShaderIrOperPred PNode = OpCode.Pred39();
+ ShaderIrOperPred pNode = opCode.Pred39();
- ShaderIrNode Imm0, Imm1;
+ ShaderIrNode imm0, imm1;
- if (BoolFloat)
+ if (boolFloat)
{
- Imm0 = new ShaderIrOperImmf(0);
- Imm1 = new ShaderIrOperImmf(1);
+ imm0 = new ShaderIrOperImmf(0);
+ imm1 = new ShaderIrOperImmf(1);
}
else
{
- Imm0 = new ShaderIrOperImm(0);
- Imm1 = new ShaderIrOperImm(-1);
+ imm0 = new ShaderIrOperImm(0);
+ imm1 = new ShaderIrOperImm(-1);
}
- ShaderIrNode Asg0 = new ShaderIrAsg(OpCode.Gpr0(), Imm0);
- ShaderIrNode Asg1 = new ShaderIrAsg(OpCode.Gpr0(), Imm1);
+ ShaderIrNode asg0 = new ShaderIrAsg(opCode.Gpr0(), imm0);
+ ShaderIrNode asg1 = new ShaderIrAsg(opCode.Gpr0(), imm1);
- if (LopInst != ShaderIrInst.Band || !PNode.IsConst)
+ if (lopInst != ShaderIrInst.Band || !pNode.IsConst)
{
- ShaderIrOp Op2 = new ShaderIrOp(LopInst, Op, PNode);
+ ShaderIrOp op2 = new ShaderIrOp(lopInst, op, pNode);
- Asg0 = new ShaderIrCond(Op2, Asg0, Not: true);
- Asg1 = new ShaderIrCond(Op2, Asg1, Not: false);
+ asg0 = new ShaderIrCond(op2, asg0, not: true);
+ asg1 = new ShaderIrCond(op2, asg1, not: false);
}
else
{
- Asg0 = new ShaderIrCond(Op, Asg0, Not: true);
- Asg1 = new ShaderIrCond(Op, Asg1, Not: false);
+ asg0 = new ShaderIrCond(op, asg0, not: true);
+ asg1 = new ShaderIrCond(op, asg1, not: false);
}
- Block.AddNode(OpCode.PredNode(Asg0));
- Block.AddNode(OpCode.PredNode(Asg1));
+ block.AddNode(opCode.PredNode(asg0));
+ block.AddNode(opCode.PredNode(asg1));
}
- private static void EmitFsetp(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitFsetp(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- EmitSetp(Block, OpCode, true, Oper);
+ EmitSetp(block, opCode, true, oper);
}
- private static void EmitIsetp(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitIsetp(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- EmitSetp(Block, OpCode, false, Oper);
+ EmitSetp(block, opCode, false, oper);
}
- private static void EmitSetp(ShaderIrBlock Block, long OpCode, bool IsFloat, ShaderOper Oper)
+ private static void EmitSetp(ShaderIrBlock block, long opCode, bool isFloat, ShaderOper oper)
{
- bool AbsA = OpCode.Read(7);
- bool NegP = OpCode.Read(42);
- bool NegA = OpCode.Read(43);
- bool AbsB = OpCode.Read(44);
+ bool absA = opCode.Read(7);
+ bool negP = opCode.Read(42);
+ bool negA = opCode.Read(43);
+ bool absB = opCode.Read(44);
- ShaderIrNode OperA = OpCode.Gpr8(), OperB;
+ ShaderIrNode operA = opCode.Gpr8(), operB;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperB = OpCode.Cbuf34(); break;
- case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break;
- case ShaderOper.Immf: OperB = OpCode.Immf19_20(); break;
- case ShaderOper.RR: OperB = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operB = opCode.Cbuf34(); break;
+ case ShaderOper.Imm: operB = opCode.Imm19_20(); break;
+ case ShaderOper.Immf: operB = opCode.Immf19_20(); break;
+ case ShaderOper.Rr: operB = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- ShaderIrInst CmpInst;
+ ShaderIrInst cmpInst;
- if (IsFloat)
+ if (isFloat)
{
- OperA = GetAluFabsFneg(OperA, AbsA, NegA);
- OperB = GetAluFabs (OperB, AbsB);
+ operA = GetAluFabsFneg(operA, absA, negA);
+ operB = GetAluFabs (operB, absB);
- CmpInst = OpCode.CmpF();
+ cmpInst = opCode.CmpF();
}
else
{
- CmpInst = OpCode.Cmp();
+ cmpInst = opCode.Cmp();
}
- ShaderIrOp Op = new ShaderIrOp(CmpInst, OperA, OperB);
+ ShaderIrOp op = new ShaderIrOp(cmpInst, operA, operB);
- ShaderIrOperPred P0Node = OpCode.Pred3();
- ShaderIrOperPred P1Node = OpCode.Pred0();
- ShaderIrOperPred P2Node = OpCode.Pred39();
+ ShaderIrOperPred p0Node = opCode.Pred3();
+ ShaderIrOperPred p1Node = opCode.Pred0();
+ ShaderIrOperPred p2Node = opCode.Pred39();
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(P0Node, Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(p0Node, op)));
- ShaderIrInst LopInst = OpCode.BLop45();
+ ShaderIrInst lopInst = opCode.BLop45();
- if (LopInst == ShaderIrInst.Band && P1Node.IsConst && P2Node.IsConst)
+ if (lopInst == ShaderIrInst.Band && p1Node.IsConst && p2Node.IsConst)
{
return;
}
- ShaderIrNode P2NNode = P2Node;
+ ShaderIrNode p2NNode = p2Node;
- if (NegP)
+ if (negP)
{
- P2NNode = new ShaderIrOp(ShaderIrInst.Bnot, P2NNode);
+ p2NNode = new ShaderIrOp(ShaderIrInst.Bnot, p2NNode);
}
- Op = new ShaderIrOp(ShaderIrInst.Bnot, P0Node);
+ op = new ShaderIrOp(ShaderIrInst.Bnot, p0Node);
- Op = new ShaderIrOp(LopInst, Op, P2NNode);
+ op = new ShaderIrOp(lopInst, op, p2NNode);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(P1Node, Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(p1Node, op)));
- Op = new ShaderIrOp(LopInst, P0Node, P2NNode);
+ op = new ShaderIrOp(lopInst, p0Node, p2NNode);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(P0Node, Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(p0Node, op)));
}
- private static void EmitBinaryHalfOp(ShaderIrBlock Block, long OpCode, ShaderIrInst Inst)
+ private static void EmitBinaryHalfOp(ShaderIrBlock block, long opCode, ShaderIrInst inst)
{
- bool AbsB = OpCode.Read(30);
- bool NegB = OpCode.Read(31);
- bool Sat = OpCode.Read(32);
- bool AbsA = OpCode.Read(44);
+ bool absB = opCode.Read(30);
+ bool negB = opCode.Read(31);
+ bool sat = opCode.Read(32);
+ bool absA = opCode.Read(44);
- ShaderIrOperGpr[] VecA = OpCode.GprHalfVec8();
- ShaderIrOperGpr[] VecB = OpCode.GprHalfVec20();
+ ShaderIrOperGpr[] vecA = opCode.GprHalfVec8();
+ ShaderIrOperGpr[] vecB = opCode.GprHalfVec20();
- HalfOutputType OutputType = (HalfOutputType)OpCode.Read(49, 3);
+ HalfOutputType outputType = (HalfOutputType)opCode.Read(49, 3);
- int Elems = OutputType == HalfOutputType.PackedFp16 ? 2 : 1;
- int First = OutputType == HalfOutputType.MergeH1 ? 1 : 0;
+ int elems = outputType == HalfOutputType.PackedFp16 ? 2 : 1;
+ int first = outputType == HalfOutputType.MergeH1 ? 1 : 0;
- for (int Index = First; Index < Elems; Index++)
+ for (int index = first; index < elems; index++)
{
- ShaderIrNode OperA = GetAluFabs (VecA[Index], AbsA);
- ShaderIrNode OperB = GetAluFabsFneg(VecB[Index], AbsB, NegB);
+ ShaderIrNode operA = GetAluFabs (vecA[index], absA);
+ ShaderIrNode operB = GetAluFabsFneg(vecB[index], absB, negB);
- ShaderIrNode Op = new ShaderIrOp(Inst, OperA, OperB);
+ ShaderIrNode op = new ShaderIrOp(inst, operA, operB);
- ShaderIrOperGpr Dst = GetHalfDst(OpCode, OutputType, Index);
+ ShaderIrOperGpr dst = GetHalfDst(opCode, outputType, index);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(Dst, GetAluFsat(Op, Sat))));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(dst, GetAluFsat(op, sat))));
}
}
- private static ShaderIrOperGpr GetHalfDst(long OpCode, HalfOutputType OutputType, int Index)
+ private static ShaderIrOperGpr GetHalfDst(long opCode, HalfOutputType outputType, int index)
{
- switch (OutputType)
+ switch (outputType)
{
- case HalfOutputType.PackedFp16: return OpCode.GprHalf0(Index);
- case HalfOutputType.Fp32: return OpCode.Gpr0();
- case HalfOutputType.MergeH0: return OpCode.GprHalf0(0);
- case HalfOutputType.MergeH1: return OpCode.GprHalf0(1);
+ case HalfOutputType.PackedFp16: return opCode.GprHalf0(index);
+ case HalfOutputType.Fp32: return opCode.Gpr0();
+ case HalfOutputType.MergeH0: return opCode.GprHalf0(0);
+ case HalfOutputType.MergeH1: return opCode.GprHalf0(1);
}
- throw new ArgumentException(nameof(OutputType));
+ throw new ArgumentException(nameof(outputType));
}
- private static void EmitLop(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitLop(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- int SubOp = OpCode.Read(41, 3);
+ int subOp = opCode.Read(41, 3);
- bool InvA = OpCode.Read(39);
- bool InvB = OpCode.Read(40);
+ bool invA = opCode.Read(39);
+ bool invB = opCode.Read(40);
- ShaderIrInst Inst = 0;
+ ShaderIrInst inst = 0;
- switch (SubOp)
+ switch (subOp)
{
- case 0: Inst = ShaderIrInst.And; break;
- case 1: Inst = ShaderIrInst.Or; break;
- case 2: Inst = ShaderIrInst.Xor; break;
+ case 0: inst = ShaderIrInst.And; break;
+ case 1: inst = ShaderIrInst.Or; break;
+ case 2: inst = ShaderIrInst.Xor; break;
}
- ShaderIrNode OperA = GetAluNot(OpCode.Gpr8(), InvA);
- ShaderIrNode OperB;
+ ShaderIrNode operA = GetAluNot(opCode.Gpr8(), invA);
+ ShaderIrNode operB;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperB = OpCode.Cbuf34(); break;
- case ShaderOper.Imm: OperB = OpCode.Imm19_20(); break;
- case ShaderOper.RR: OperB = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operB = opCode.Cbuf34(); break;
+ case ShaderOper.Imm: operB = opCode.Imm19_20(); break;
+ case ShaderOper.Rr: operB = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- OperB = GetAluNot(OperB, InvB);
+ operB = GetAluNot(operB, invB);
- ShaderIrNode Op;
+ ShaderIrNode op;
- if (SubOp < 3)
+ if (subOp < 3)
{
- Op = new ShaderIrOp(Inst, OperA, OperB);
+ op = new ShaderIrOp(inst, operA, operB);
}
else
{
- Op = OperB;
+ op = operB;
}
- ShaderIrNode Compare = new ShaderIrOp(ShaderIrInst.Cne, Op, new ShaderIrOperImm(0));
+ ShaderIrNode compare = new ShaderIrOp(ShaderIrInst.Cne, op, new ShaderIrOperImm(0));
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Pred48(), Compare)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Pred48(), compare)));
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op)));
}
private enum XmadMode
@@ -1157,143 +1157,143 @@ namespace Ryujinx.Graphics.Gal.Shader
Cbcc = 4
}
- private static void EmitXmad(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitXmad(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- bool SignedA = OpCode.Read(48);
- bool SignedB = OpCode.Read(49);
- bool HighB = OpCode.Read(52);
- bool HighA = OpCode.Read(53);
+ bool signedA = opCode.Read(48);
+ bool signedB = opCode.Read(49);
+ bool highB = opCode.Read(52);
+ bool highA = opCode.Read(53);
- int Mode = OpCode.Read(50, 7);
+ int mode = opCode.Read(50, 7);
- ShaderIrNode OperA = OpCode.Gpr8(), OperB, OperC;
+ ShaderIrNode operA = opCode.Gpr8(), operB, operC;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperB = OpCode.Cbuf34(); break;
- case ShaderOper.Imm: OperB = OpCode.ImmU16_20(); break;
- case ShaderOper.RC: OperB = OpCode.Gpr39(); break;
- case ShaderOper.RR: OperB = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operB = opCode.Cbuf34(); break;
+ case ShaderOper.Imm: operB = opCode.ImmU16_20(); break;
+ case ShaderOper.Rc: operB = opCode.Gpr39(); break;
+ case ShaderOper.Rr: operB = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- ShaderIrNode OperB2 = OperB;
+ ShaderIrNode operB2 = operB;
- if (Oper == ShaderOper.Imm)
+ if (oper == ShaderOper.Imm)
{
- int Imm = ((ShaderIrOperImm)OperB2).Value;
+ int imm = ((ShaderIrOperImm)operB2).Value;
- if (!HighB)
+ if (!highB)
{
- Imm <<= 16;
+ imm <<= 16;
}
- if (SignedB)
+ if (signedB)
{
- Imm >>= 16;
+ imm >>= 16;
}
else
{
- Imm = (int)((uint)Imm >> 16);
+ imm = (int)((uint)imm >> 16);
}
- OperB2 = new ShaderIrOperImm(Imm);
+ operB2 = new ShaderIrOperImm(imm);
}
- ShaderIrOperImm Imm16 = new ShaderIrOperImm(16);
+ ShaderIrOperImm imm16 = new ShaderIrOperImm(16);
//If we are working with the lower 16-bits of the A/B operands,
//we need to shift the lower 16-bits to the top 16-bits. Later,
//they will be right shifted. For U16 types, this will be a logical
//right shift, and for S16 types, a arithmetic right shift.
- if (!HighA)
+ if (!highA)
{
- OperA = new ShaderIrOp(ShaderIrInst.Lsl, OperA, Imm16);
+ operA = new ShaderIrOp(ShaderIrInst.Lsl, operA, imm16);
}
- if (!HighB && Oper != ShaderOper.Imm)
+ if (!highB && oper != ShaderOper.Imm)
{
- OperB2 = new ShaderIrOp(ShaderIrInst.Lsl, OperB2, Imm16);
+ operB2 = new ShaderIrOp(ShaderIrInst.Lsl, operB2, imm16);
}
- ShaderIrInst ShiftA = SignedA ? ShaderIrInst.Asr : ShaderIrInst.Lsr;
- ShaderIrInst ShiftB = SignedB ? ShaderIrInst.Asr : ShaderIrInst.Lsr;
+ ShaderIrInst shiftA = signedA ? ShaderIrInst.Asr : ShaderIrInst.Lsr;
+ ShaderIrInst shiftB = signedB ? ShaderIrInst.Asr : ShaderIrInst.Lsr;
- OperA = new ShaderIrOp(ShiftA, OperA, Imm16);
+ operA = new ShaderIrOp(shiftA, operA, imm16);
- if (Oper != ShaderOper.Imm)
+ if (oper != ShaderOper.Imm)
{
- OperB2 = new ShaderIrOp(ShiftB, OperB2, Imm16);
+ operB2 = new ShaderIrOp(shiftB, operB2, imm16);
}
- bool ProductShiftLeft = false;
- bool Merge = false;
+ bool productShiftLeft = false;
+ bool merge = false;
- if (Oper == ShaderOper.RC)
+ if (oper == ShaderOper.Rc)
{
- OperC = OpCode.Cbuf34();
+ operC = opCode.Cbuf34();
}
else
{
- OperC = OpCode.Gpr39();
+ operC = opCode.Gpr39();
- ProductShiftLeft = OpCode.Read(36);
- Merge = OpCode.Read(37);
+ productShiftLeft = opCode.Read(36);
+ merge = opCode.Read(37);
}
- ShaderIrOp MulOp = new ShaderIrOp(ShaderIrInst.Mul, OperA, OperB2);
+ ShaderIrOp mulOp = new ShaderIrOp(ShaderIrInst.Mul, operA, operB2);
- if (ProductShiftLeft)
+ if (productShiftLeft)
{
- MulOp = new ShaderIrOp(ShaderIrInst.Lsl, MulOp, Imm16);
+ mulOp = new ShaderIrOp(ShaderIrInst.Lsl, mulOp, imm16);
}
- switch ((XmadMode)Mode)
+ switch ((XmadMode)mode)
{
- case XmadMode.Clo: OperC = ExtendTo32(OperC, Signed: false, Size: 16); break;
+ case XmadMode.Clo: operC = ExtendTo32(operC, signed: false, size: 16); break;
- case XmadMode.Chi: OperC = new ShaderIrOp(ShaderIrInst.Lsr, OperC, Imm16); break;
+ case XmadMode.Chi: operC = new ShaderIrOp(ShaderIrInst.Lsr, operC, imm16); break;
case XmadMode.Cbcc:
{
- ShaderIrOp OperBLsh16 = new ShaderIrOp(ShaderIrInst.Lsl, OperB, Imm16);
+ ShaderIrOp operBLsh16 = new ShaderIrOp(ShaderIrInst.Lsl, operB, imm16);
- OperC = new ShaderIrOp(ShaderIrInst.Add, OperC, OperBLsh16);
+ operC = new ShaderIrOp(ShaderIrInst.Add, operC, operBLsh16);
break;
}
case XmadMode.Csfu:
{
- ShaderIrOperImm Imm31 = new ShaderIrOperImm(31);
+ ShaderIrOperImm imm31 = new ShaderIrOperImm(31);
- ShaderIrOp SignAdjustA = new ShaderIrOp(ShaderIrInst.Lsr, OperA, Imm31);
- ShaderIrOp SignAdjustB = new ShaderIrOp(ShaderIrInst.Lsr, OperB2, Imm31);
+ ShaderIrOp signAdjustA = new ShaderIrOp(ShaderIrInst.Lsr, operA, imm31);
+ ShaderIrOp signAdjustB = new ShaderIrOp(ShaderIrInst.Lsr, operB2, imm31);
- SignAdjustA = new ShaderIrOp(ShaderIrInst.Lsl, SignAdjustA, Imm16);
- SignAdjustB = new ShaderIrOp(ShaderIrInst.Lsl, SignAdjustB, Imm16);
+ signAdjustA = new ShaderIrOp(ShaderIrInst.Lsl, signAdjustA, imm16);
+ signAdjustB = new ShaderIrOp(ShaderIrInst.Lsl, signAdjustB, imm16);
- ShaderIrOp SignAdjust = new ShaderIrOp(ShaderIrInst.Add, SignAdjustA, SignAdjustB);
+ ShaderIrOp signAdjust = new ShaderIrOp(ShaderIrInst.Add, signAdjustA, signAdjustB);
- OperC = new ShaderIrOp(ShaderIrInst.Sub, OperC, SignAdjust);
+ operC = new ShaderIrOp(ShaderIrInst.Sub, operC, signAdjust);
break;
}
}
- ShaderIrOp AddOp = new ShaderIrOp(ShaderIrInst.Add, MulOp, OperC);
+ ShaderIrOp addOp = new ShaderIrOp(ShaderIrInst.Add, mulOp, operC);
- if (Merge)
+ if (merge)
{
- ShaderIrOperImm Imm16Mask = new ShaderIrOperImm(0xffff);
+ ShaderIrOperImm imm16Mask = new ShaderIrOperImm(0xffff);
- AddOp = new ShaderIrOp(ShaderIrInst.And, AddOp, Imm16Mask);
- OperB = new ShaderIrOp(ShaderIrInst.Lsl, OperB, Imm16);
- AddOp = new ShaderIrOp(ShaderIrInst.Or, AddOp, OperB);
+ addOp = new ShaderIrOp(ShaderIrInst.And, addOp, imm16Mask);
+ operB = new ShaderIrOp(ShaderIrInst.Lsl, operB, imm16);
+ addOp = new ShaderIrOp(ShaderIrInst.Or, addOp, operB);
}
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), AddOp)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), addOp)));
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeFlow.cs b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeFlow.cs
index bc2539bd..fc992693 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeFlow.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeFlow.cs
@@ -4,54 +4,54 @@ namespace Ryujinx.Graphics.Gal.Shader
{
static partial class ShaderDecode
{
- public static void Bra(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Bra(ShaderIrBlock block, long opCode, int position)
{
- if ((OpCode & 0x20) != 0)
+ if ((opCode & 0x20) != 0)
{
//This reads the target offset from the constant buffer.
//Almost impossible to support with GLSL.
throw new NotImplementedException();
}
- ShaderIrOperImm Imm = new ShaderIrOperImm(Position + OpCode.Branch());
+ ShaderIrOperImm imm = new ShaderIrOperImm(position + opCode.Branch());
- Block.AddNode(OpCode.PredNode(new ShaderIrOp(ShaderIrInst.Bra, Imm)));
+ block.AddNode(opCode.PredNode(new ShaderIrOp(ShaderIrInst.Bra, imm)));
}
- public static void Exit(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Exit(ShaderIrBlock block, long opCode, int position)
{
- int CCode = (int)OpCode & 0x1f;
+ int cCode = (int)opCode & 0x1f;
//TODO: Figure out what the other condition codes mean...
- if (CCode == 0xf)
+ if (cCode == 0xf)
{
- Block.AddNode(OpCode.PredNode(new ShaderIrOp(ShaderIrInst.Exit)));
+ block.AddNode(opCode.PredNode(new ShaderIrOp(ShaderIrInst.Exit)));
}
}
- public static void Kil(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Kil(ShaderIrBlock block, long opCode, int position)
{
- Block.AddNode(OpCode.PredNode(new ShaderIrOp(ShaderIrInst.Kil)));
+ block.AddNode(opCode.PredNode(new ShaderIrOp(ShaderIrInst.Kil)));
}
- public static void Ssy(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Ssy(ShaderIrBlock block, long opCode, int position)
{
- if ((OpCode & 0x20) != 0)
+ if ((opCode & 0x20) != 0)
{
//This reads the target offset from the constant buffer.
//Almost impossible to support with GLSL.
throw new NotImplementedException();
}
- ShaderIrOperImm Imm = new ShaderIrOperImm(Position + OpCode.Branch());
+ ShaderIrOperImm imm = new ShaderIrOperImm(position + opCode.Branch());
- Block.AddNode(new ShaderIrOp(ShaderIrInst.Ssy, Imm));
+ block.AddNode(new ShaderIrOp(ShaderIrInst.Ssy, imm));
}
- public static void Sync(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Sync(ShaderIrBlock block, long opCode, int position)
{
//TODO: Implement Sync condition codes
- Block.AddNode(OpCode.PredNode(new ShaderIrOp(ShaderIrInst.Sync)));
+ block.AddNode(opCode.PredNode(new ShaderIrOp(ShaderIrInst.Sync)));
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeFunc.cs b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeFunc.cs
index 73248aa0..cc385aa4 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeFunc.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeFunc.cs
@@ -1,4 +1,4 @@
namespace Ryujinx.Graphics.Gal.Shader
{
- delegate void ShaderDecodeFunc(ShaderIrBlock Block, long OpCode, int Position);
+ delegate void ShaderDecodeFunc(ShaderIrBlock block, long opCode, int position);
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeHelper.cs b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeHelper.cs
index d07bcd91..9a84e612 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeHelper.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeHelper.cs
@@ -5,74 +5,74 @@ namespace Ryujinx.Graphics.Gal.Shader
private static readonly ShaderIrOperImmf ImmfZero = new ShaderIrOperImmf(0);
private static readonly ShaderIrOperImmf ImmfOne = new ShaderIrOperImmf(1);
- public static ShaderIrNode GetAluFabsFneg(ShaderIrNode Node, bool Abs, bool Neg)
+ public static ShaderIrNode GetAluFabsFneg(ShaderIrNode node, bool abs, bool neg)
{
- return GetAluFneg(GetAluFabs(Node, Abs), Neg);
+ return GetAluFneg(GetAluFabs(node, abs), neg);
}
- public static ShaderIrNode GetAluFabs(ShaderIrNode Node, bool Abs)
+ public static ShaderIrNode GetAluFabs(ShaderIrNode node, bool abs)
{
- return Abs ? new ShaderIrOp(ShaderIrInst.Fabs, Node) : Node;
+ return abs ? new ShaderIrOp(ShaderIrInst.Fabs, node) : node;
}
- public static ShaderIrNode GetAluFneg(ShaderIrNode Node, bool Neg)
+ public static ShaderIrNode GetAluFneg(ShaderIrNode node, bool neg)
{
- return Neg ? new ShaderIrOp(ShaderIrInst.Fneg, Node) : Node;
+ return neg ? new ShaderIrOp(ShaderIrInst.Fneg, node) : node;
}
- public static ShaderIrNode GetAluFsat(ShaderIrNode Node, bool Sat)
+ public static ShaderIrNode GetAluFsat(ShaderIrNode node, bool sat)
{
- return Sat ? new ShaderIrOp(ShaderIrInst.Fclamp, Node, ImmfZero, ImmfOne) : Node;
+ return sat ? new ShaderIrOp(ShaderIrInst.Fclamp, node, ImmfZero, ImmfOne) : node;
}
- public static ShaderIrNode GetAluIabsIneg(ShaderIrNode Node, bool Abs, bool Neg)
+ public static ShaderIrNode GetAluIabsIneg(ShaderIrNode node, bool abs, bool neg)
{
- return GetAluIneg(GetAluIabs(Node, Abs), Neg);
+ return GetAluIneg(GetAluIabs(node, abs), neg);
}
- public static ShaderIrNode GetAluIabs(ShaderIrNode Node, bool Abs)
+ public static ShaderIrNode GetAluIabs(ShaderIrNode node, bool abs)
{
- return Abs ? new ShaderIrOp(ShaderIrInst.Abs, Node) : Node;
+ return abs ? new ShaderIrOp(ShaderIrInst.Abs, node) : node;
}
- public static ShaderIrNode GetAluIneg(ShaderIrNode Node, bool Neg)
+ public static ShaderIrNode GetAluIneg(ShaderIrNode node, bool neg)
{
- return Neg ? new ShaderIrOp(ShaderIrInst.Neg, Node) : Node;
+ return neg ? new ShaderIrOp(ShaderIrInst.Neg, node) : node;
}
- public static ShaderIrNode GetAluNot(ShaderIrNode Node, bool Not)
+ public static ShaderIrNode GetAluNot(ShaderIrNode node, bool not)
{
- return Not ? new ShaderIrOp(ShaderIrInst.Not, Node) : Node;
+ return not ? new ShaderIrOp(ShaderIrInst.Not, node) : node;
}
- public static ShaderIrNode ExtendTo32(ShaderIrNode Node, bool Signed, int Size)
+ public static ShaderIrNode ExtendTo32(ShaderIrNode node, bool signed, int size)
{
- int Shift = 32 - Size;
+ int shift = 32 - size;
- ShaderIrInst RightShift = Signed
+ ShaderIrInst rightShift = signed
? ShaderIrInst.Asr
: ShaderIrInst.Lsr;
- Node = new ShaderIrOp(ShaderIrInst.Lsl, Node, new ShaderIrOperImm(Shift));
- Node = new ShaderIrOp(RightShift, Node, new ShaderIrOperImm(Shift));
+ node = new ShaderIrOp(ShaderIrInst.Lsl, node, new ShaderIrOperImm(shift));
+ node = new ShaderIrOp(rightShift, node, new ShaderIrOperImm(shift));
- return Node;
+ return node;
}
- public static ShaderIrNode ExtendTo32(ShaderIrNode Node, bool Signed, ShaderIrNode Size)
+ public static ShaderIrNode ExtendTo32(ShaderIrNode node, bool signed, ShaderIrNode size)
{
- ShaderIrOperImm WordSize = new ShaderIrOperImm(32);
+ ShaderIrOperImm wordSize = new ShaderIrOperImm(32);
- ShaderIrOp Shift = new ShaderIrOp(ShaderIrInst.Sub, WordSize, Size);
+ ShaderIrOp shift = new ShaderIrOp(ShaderIrInst.Sub, wordSize, size);
- ShaderIrInst RightShift = Signed
+ ShaderIrInst rightShift = signed
? ShaderIrInst.Asr
: ShaderIrInst.Lsr;
- Node = new ShaderIrOp(ShaderIrInst.Lsl, Node, Shift);
- Node = new ShaderIrOp(RightShift, Node, Shift);
+ node = new ShaderIrOp(ShaderIrInst.Lsl, node, shift);
+ node = new ShaderIrOp(rightShift, node, shift);
- return Node;
+ return node;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMem.cs b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMem.cs
index 8b4eacdf..7ce126b0 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMem.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMem.cs
@@ -7,6 +7,7 @@ namespace Ryujinx.Graphics.Gal.Shader
{
static partial class ShaderDecode
{
+ // ReSharper disable InconsistentNaming
private const int ____ = 0x0;
private const int R___ = 0x1;
private const int _G__ = 0x2;
@@ -21,8 +22,9 @@ namespace Ryujinx.Graphics.Gal.Shader
private const int R_BA = 0xd;
private const int _GBA = 0xe;
private const int RGBA = 0xf;
+ // ReSharper restore InconsistentNaming
- private static int[,] MaskLut = new int[,]
+ private static int[,] _maskLut = new int[,]
{
{ ____, ____, ____, ____, ____, ____, ____, ____ },
{ R___, _G__, __B_, ___A, RG__, R__A, _G_A, __BA },
@@ -30,28 +32,28 @@ namespace Ryujinx.Graphics.Gal.Shader
{ RGB_, RG_A, R_BA, _GBA, RGBA, ____, ____, ____ }
};
- private static GalTextureTarget TexToTextureTarget(int TexType, bool IsArray)
+ private static GalTextureTarget TexToTextureTarget(int texType, bool isArray)
{
- switch (TexType)
+ switch (texType)
{
case 0:
- return IsArray ? GalTextureTarget.OneDArray : GalTextureTarget.OneD;
+ return isArray ? GalTextureTarget.OneDArray : GalTextureTarget.OneD;
case 2:
- return IsArray ? GalTextureTarget.TwoDArray : GalTextureTarget.TwoD;
+ return isArray ? GalTextureTarget.TwoDArray : GalTextureTarget.TwoD;
case 4:
- if (IsArray)
- throw new InvalidOperationException($"ARRAY bit set on a TEX with 3D texture!");
+ if (isArray)
+ throw new InvalidOperationException("ARRAY bit set on a TEX with 3D texture!");
return GalTextureTarget.ThreeD;
case 6:
- return IsArray ? GalTextureTarget.CubeArray : GalTextureTarget.CubeMap;
+ return isArray ? GalTextureTarget.CubeArray : GalTextureTarget.CubeMap;
default:
throw new InvalidOperationException();
}
}
- private static GalTextureTarget TexsToTextureTarget(int TexType)
+ private static GalTextureTarget TexsToTextureTarget(int texType)
{
- switch (TexType)
+ switch (texType)
{
case 0:
return GalTextureTarget.OneD;
@@ -77,9 +79,9 @@ namespace Ryujinx.Graphics.Gal.Shader
}
}
- public static GalTextureTarget TldsToTextureTarget(int TexType)
+ public static GalTextureTarget TldsToTextureTarget(int texType)
{
- switch (TexType)
+ switch (texType)
{
case 0:
case 2:
@@ -99,566 +101,566 @@ namespace Ryujinx.Graphics.Gal.Shader
}
}
- public static void Ld_A(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Ld_A(ShaderIrBlock block, long opCode, int position)
{
- ShaderIrNode[] Opers = OpCode.Abuf20();
+ ShaderIrNode[] opers = opCode.Abuf20();
//Used by GS
- ShaderIrOperGpr Vertex = OpCode.Gpr39();
+ ShaderIrOperGpr vertex = opCode.Gpr39();
- int Index = 0;
+ int index = 0;
- foreach (ShaderIrNode OperA in Opers)
+ foreach (ShaderIrNode operA in opers)
{
- ShaderIrOperGpr OperD = OpCode.Gpr0();
+ ShaderIrOperGpr operD = opCode.Gpr0();
- OperD.Index += Index++;
+ operD.Index += index++;
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OperD, OperA)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(operD, operA)));
}
}
- public static void Ld_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Ld_C(ShaderIrBlock block, long opCode, int position)
{
- int CbufPos = OpCode.Read(22, 0x3fff);
- int CbufIndex = OpCode.Read(36, 0x1f);
- int Type = OpCode.Read(48, 7);
+ int cbufPos = opCode.Read(22, 0x3fff);
+ int cbufIndex = opCode.Read(36, 0x1f);
+ int type = opCode.Read(48, 7);
- if (Type > 5)
+ if (type > 5)
{
throw new InvalidOperationException();
}
- ShaderIrOperGpr Temp = ShaderIrOperGpr.MakeTemporary();
+ ShaderIrOperGpr temp = ShaderIrOperGpr.MakeTemporary();
- Block.AddNode(new ShaderIrAsg(Temp, OpCode.Gpr8()));
+ block.AddNode(new ShaderIrAsg(temp, opCode.Gpr8()));
- int Count = Type == 5 ? 2 : 1;
+ int count = type == 5 ? 2 : 1;
- for (int Index = 0; Index < Count; Index++)
+ for (int index = 0; index < count; index++)
{
- ShaderIrOperCbuf OperA = new ShaderIrOperCbuf(CbufIndex, CbufPos, Temp);
+ ShaderIrOperCbuf operA = new ShaderIrOperCbuf(cbufIndex, cbufPos, temp);
- ShaderIrOperGpr OperD = OpCode.Gpr0();
+ ShaderIrOperGpr operD = opCode.Gpr0();
- OperA.Pos += Index;
- OperD.Index += Index;
+ operA.Pos += index;
+ operD.Index += index;
- if (!OperD.IsValidRegister)
+ if (!operD.IsValidRegister)
{
break;
}
- ShaderIrNode Node = OperA;
+ ShaderIrNode node = operA;
- if (Type < 4)
+ if (type < 4)
{
//This is a 8 or 16 bits type.
- bool Signed = (Type & 1) != 0;
+ bool signed = (type & 1) != 0;
- int Size = 8 << (Type >> 1);
+ int size = 8 << (type >> 1);
- Node = ExtendTo32(Node, Signed, Size);
+ node = ExtendTo32(node, signed, size);
}
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OperD, Node)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(operD, node)));
}
}
- public static void St_A(ShaderIrBlock Block, long OpCode, int Position)
+ public static void St_A(ShaderIrBlock block, long opCode, int position)
{
- ShaderIrNode[] Opers = OpCode.Abuf20();
+ ShaderIrNode[] opers = opCode.Abuf20();
- int Index = 0;
+ int index = 0;
- foreach (ShaderIrNode OperA in Opers)
+ foreach (ShaderIrNode operA in opers)
{
- ShaderIrOperGpr OperD = OpCode.Gpr0();
+ ShaderIrOperGpr operD = opCode.Gpr0();
- OperD.Index += Index++;
+ operD.Index += index++;
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OperA, OperD)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(operA, operD)));
}
}
- public static void Texq(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Texq(ShaderIrBlock block, long opCode, int position)
{
- ShaderIrNode OperD = OpCode.Gpr0();
- ShaderIrNode OperA = OpCode.Gpr8();
+ ShaderIrNode operD = opCode.Gpr0();
+ ShaderIrNode operA = opCode.Gpr8();
- ShaderTexqInfo Info = (ShaderTexqInfo)(OpCode.Read(22, 0x1f));
+ ShaderTexqInfo info = (ShaderTexqInfo)(opCode.Read(22, 0x1f));
- ShaderIrMetaTexq Meta0 = new ShaderIrMetaTexq(Info, 0);
- ShaderIrMetaTexq Meta1 = new ShaderIrMetaTexq(Info, 1);
+ ShaderIrMetaTexq meta0 = new ShaderIrMetaTexq(info, 0);
+ ShaderIrMetaTexq meta1 = new ShaderIrMetaTexq(info, 1);
- ShaderIrNode OperC = OpCode.Imm13_36();
+ ShaderIrNode operC = opCode.Imm13_36();
- ShaderIrOp Op0 = new ShaderIrOp(ShaderIrInst.Texq, OperA, null, OperC, Meta0);
- ShaderIrOp Op1 = new ShaderIrOp(ShaderIrInst.Texq, OperA, null, OperC, Meta1);
+ ShaderIrOp op0 = new ShaderIrOp(ShaderIrInst.Texq, operA, null, operC, meta0);
+ ShaderIrOp op1 = new ShaderIrOp(ShaderIrInst.Texq, operA, null, operC, meta1);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OperD, Op0)));
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OperA, Op1))); //Is this right?
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(operD, op0)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(operA, op1))); //Is this right?
}
- public static void Tex(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Tex(ShaderIrBlock block, long opCode, int position)
{
- TextureInstructionSuffix Suffix;
+ TextureInstructionSuffix suffix;
- int RawSuffix = OpCode.Read(0x34, 0x38);
+ int rawSuffix = opCode.Read(0x34, 0x38);
- switch (RawSuffix)
+ switch (rawSuffix)
{
case 0:
- Suffix = TextureInstructionSuffix.None;
+ suffix = TextureInstructionSuffix.None;
break;
case 0x8:
- Suffix = TextureInstructionSuffix.LZ;
+ suffix = TextureInstructionSuffix.Lz;
break;
case 0x10:
- Suffix = TextureInstructionSuffix.LB;
+ suffix = TextureInstructionSuffix.Lb;
break;
case 0x18:
- Suffix = TextureInstructionSuffix.LL;
+ suffix = TextureInstructionSuffix.Ll;
break;
case 0x30:
- Suffix = TextureInstructionSuffix.LBA;
+ suffix = TextureInstructionSuffix.Lba;
break;
case 0x38:
- Suffix = TextureInstructionSuffix.LLA;
+ suffix = TextureInstructionSuffix.Lla;
break;
default:
- throw new InvalidOperationException($"Invalid Suffix for TEX instruction {RawSuffix}");
+ throw new InvalidOperationException($"Invalid Suffix for TEX instruction {rawSuffix}");
}
- bool IsOffset = OpCode.Read(0x36);
+ bool isOffset = opCode.Read(0x36);
- if (IsOffset)
- Suffix |= TextureInstructionSuffix.AOffI;
+ if (isOffset)
+ suffix |= TextureInstructionSuffix.AOffI;
- EmitTex(Block, OpCode, Suffix, GprHandle: false);
+ EmitTex(block, opCode, suffix, gprHandle: false);
}
- public static void Tex_B(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Tex_B(ShaderIrBlock block, long opCode, int position)
{
- TextureInstructionSuffix Suffix;
+ TextureInstructionSuffix suffix;
- int RawSuffix = OpCode.Read(0x24, 0xe);
+ int rawSuffix = opCode.Read(0x24, 0xe);
- switch (RawSuffix)
+ switch (rawSuffix)
{
case 0:
- Suffix = TextureInstructionSuffix.None;
+ suffix = TextureInstructionSuffix.None;
break;
case 0x2:
- Suffix = TextureInstructionSuffix.LZ;
+ suffix = TextureInstructionSuffix.Lz;
break;
case 0x4:
- Suffix = TextureInstructionSuffix.LB;
+ suffix = TextureInstructionSuffix.Lb;
break;
case 0x6:
- Suffix = TextureInstructionSuffix.LL;
+ suffix = TextureInstructionSuffix.Ll;
break;
case 0xc:
- Suffix = TextureInstructionSuffix.LBA;
+ suffix = TextureInstructionSuffix.Lba;
break;
case 0xe:
- Suffix = TextureInstructionSuffix.LLA;
+ suffix = TextureInstructionSuffix.Lla;
break;
default:
- throw new InvalidOperationException($"Invalid Suffix for TEX.B instruction {RawSuffix}");
+ throw new InvalidOperationException($"Invalid Suffix for TEX.B instruction {rawSuffix}");
}
- bool IsOffset = OpCode.Read(0x23);
+ bool isOffset = opCode.Read(0x23);
- if (IsOffset)
- Suffix |= TextureInstructionSuffix.AOffI;
+ if (isOffset)
+ suffix |= TextureInstructionSuffix.AOffI;
- EmitTex(Block, OpCode, Suffix, GprHandle: true);
+ EmitTex(block, opCode, suffix, gprHandle: true);
}
- private static void EmitTex(ShaderIrBlock Block, long OpCode, TextureInstructionSuffix TextureInstructionSuffix, bool GprHandle)
+ private static void EmitTex(ShaderIrBlock block, long opCode, TextureInstructionSuffix textureInstructionSuffix, bool gprHandle)
{
- bool IsArray = OpCode.HasArray();
+ bool isArray = opCode.HasArray();
- GalTextureTarget TextureTarget = TexToTextureTarget(OpCode.Read(28, 6), IsArray);
+ GalTextureTarget textureTarget = TexToTextureTarget(opCode.Read(28, 6), isArray);
- bool HasDepthCompare = OpCode.Read(0x32);
+ bool hasDepthCompare = opCode.Read(0x32);
- if (HasDepthCompare)
+ if (hasDepthCompare)
{
- TextureInstructionSuffix |= TextureInstructionSuffix.DC;
+ textureInstructionSuffix |= TextureInstructionSuffix.Dc;
}
- ShaderIrOperGpr[] Coords = new ShaderIrOperGpr[ImageUtils.GetCoordsCountTextureTarget(TextureTarget)];
+ ShaderIrOperGpr[] coords = new ShaderIrOperGpr[ImageUtils.GetCoordsCountTextureTarget(textureTarget)];
- int IndexExtraCoord = 0;
+ int indexExtraCoord = 0;
- if (IsArray)
+ if (isArray)
{
- IndexExtraCoord++;
+ indexExtraCoord++;
- Coords[Coords.Length - 1] = OpCode.Gpr8();
+ coords[coords.Length - 1] = opCode.Gpr8();
}
- for (int Index = 0; Index < Coords.Length - IndexExtraCoord; Index++)
+ for (int index = 0; index < coords.Length - indexExtraCoord; index++)
{
- ShaderIrOperGpr CoordReg = OpCode.Gpr8();
+ ShaderIrOperGpr coordReg = opCode.Gpr8();
- CoordReg.Index += Index;
+ coordReg.Index += index;
- CoordReg.Index += IndexExtraCoord;
+ coordReg.Index += indexExtraCoord;
- if (!CoordReg.IsValidRegister)
+ if (!coordReg.IsValidRegister)
{
- CoordReg.Index = ShaderIrOperGpr.ZRIndex;
+ coordReg.Index = ShaderIrOperGpr.ZrIndex;
}
- Coords[Index] = CoordReg;
+ coords[index] = coordReg;
}
- int ChMask = OpCode.Read(31, 0xf);
+ int chMask = opCode.Read(31, 0xf);
- ShaderIrOperGpr LevelOfDetail = null;
- ShaderIrOperGpr Offset = null;
- ShaderIrOperGpr DepthCompare = null;
+ ShaderIrOperGpr levelOfDetail = null;
+ ShaderIrOperGpr offset = null;
+ ShaderIrOperGpr depthCompare = null;
// TODO: determine first argument when TEX.B is used
- int OperBIndex = GprHandle ? 1 : 0;
+ int operBIndex = gprHandle ? 1 : 0;
- if ((TextureInstructionSuffix & TextureInstructionSuffix.LL) != 0 ||
- (TextureInstructionSuffix & TextureInstructionSuffix.LB) != 0 ||
- (TextureInstructionSuffix & TextureInstructionSuffix.LBA) != 0 ||
- (TextureInstructionSuffix & TextureInstructionSuffix.LLA) != 0)
+ if ((textureInstructionSuffix & TextureInstructionSuffix.Ll) != 0 ||
+ (textureInstructionSuffix & TextureInstructionSuffix.Lb) != 0 ||
+ (textureInstructionSuffix & TextureInstructionSuffix.Lba) != 0 ||
+ (textureInstructionSuffix & TextureInstructionSuffix.Lla) != 0)
{
- LevelOfDetail = OpCode.Gpr20();
- LevelOfDetail.Index += OperBIndex;
+ levelOfDetail = opCode.Gpr20();
+ levelOfDetail.Index += operBIndex;
- OperBIndex++;
+ operBIndex++;
}
- if ((TextureInstructionSuffix & TextureInstructionSuffix.AOffI) != 0)
+ if ((textureInstructionSuffix & TextureInstructionSuffix.AOffI) != 0)
{
- Offset = OpCode.Gpr20();
- Offset.Index += OperBIndex;
+ offset = opCode.Gpr20();
+ offset.Index += operBIndex;
- OperBIndex++;
+ operBIndex++;
}
- if ((TextureInstructionSuffix & TextureInstructionSuffix.DC) != 0)
+ if ((textureInstructionSuffix & TextureInstructionSuffix.Dc) != 0)
{
- DepthCompare = OpCode.Gpr20();
- DepthCompare.Index += OperBIndex;
+ depthCompare = opCode.Gpr20();
+ depthCompare.Index += operBIndex;
- OperBIndex++;
+ operBIndex++;
}
// ???
- ShaderIrNode OperC = GprHandle
- ? (ShaderIrNode)OpCode.Gpr20()
- : (ShaderIrNode)OpCode.Imm13_36();
+ ShaderIrNode operC = gprHandle
+ ? (ShaderIrNode)opCode.Gpr20()
+ : (ShaderIrNode)opCode.Imm13_36();
- ShaderIrInst Inst = GprHandle ? ShaderIrInst.Texb : ShaderIrInst.Texs;
+ ShaderIrInst inst = gprHandle ? ShaderIrInst.Texb : ShaderIrInst.Texs;
- Coords = CoordsRegistersToTempRegisters(Block, Coords);
+ coords = CoordsRegistersToTempRegisters(block, coords);
- int RegInc = 0;
+ int regInc = 0;
- for (int Ch = 0; Ch < 4; Ch++)
+ for (int ch = 0; ch < 4; ch++)
{
- if (!IsChannelUsed(ChMask, Ch))
+ if (!IsChannelUsed(chMask, ch))
{
continue;
}
- ShaderIrOperGpr Dst = OpCode.Gpr0();
+ ShaderIrOperGpr dst = opCode.Gpr0();
- Dst.Index += RegInc++;
+ dst.Index += regInc++;
- if (!Dst.IsValidRegister || Dst.IsConst)
+ if (!dst.IsValidRegister || dst.IsConst)
{
continue;
}
- ShaderIrMetaTex Meta = new ShaderIrMetaTex(Ch, TextureTarget, TextureInstructionSuffix, Coords)
+ ShaderIrMetaTex meta = new ShaderIrMetaTex(ch, textureTarget, textureInstructionSuffix, coords)
{
- LevelOfDetail = LevelOfDetail,
- Offset = Offset,
- DepthCompare = DepthCompare
+ LevelOfDetail = levelOfDetail,
+ Offset = offset,
+ DepthCompare = depthCompare
};
- ShaderIrOp Op = new ShaderIrOp(Inst, Coords[0], Coords.Length > 1 ? Coords[1] : null, OperC, Meta);
+ ShaderIrOp op = new ShaderIrOp(inst, coords[0], coords.Length > 1 ? coords[1] : null, operC, meta);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(Dst, Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(dst, op)));
}
}
- public static void Texs(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Texs(ShaderIrBlock block, long opCode, int position)
{
- TextureInstructionSuffix Suffix;
+ TextureInstructionSuffix suffix;
- int RawSuffix = OpCode.Read(0x34, 0x1e);
+ int rawSuffix = opCode.Read(0x34, 0x1e);
- switch (RawSuffix)
+ switch (rawSuffix)
{
case 0:
case 0x4:
case 0x10:
case 0x16:
- Suffix = TextureInstructionSuffix.LZ;
+ suffix = TextureInstructionSuffix.Lz;
break;
case 0x6:
case 0x1a:
- Suffix = TextureInstructionSuffix.LL;
+ suffix = TextureInstructionSuffix.Ll;
break;
case 0x8:
- Suffix = TextureInstructionSuffix.DC;
+ suffix = TextureInstructionSuffix.Dc;
break;
case 0x2:
case 0xe:
case 0x14:
case 0x18:
- Suffix = TextureInstructionSuffix.None;
+ suffix = TextureInstructionSuffix.None;
break;
case 0xa:
- Suffix = TextureInstructionSuffix.LL | TextureInstructionSuffix.DC;
+ suffix = TextureInstructionSuffix.Ll | TextureInstructionSuffix.Dc;
break;
case 0xc:
case 0x12:
- Suffix = TextureInstructionSuffix.LZ | TextureInstructionSuffix.DC;
+ suffix = TextureInstructionSuffix.Lz | TextureInstructionSuffix.Dc;
break;
default:
- throw new InvalidOperationException($"Invalid Suffix for TEXS instruction {RawSuffix}");
+ throw new InvalidOperationException($"Invalid Suffix for TEXS instruction {rawSuffix}");
}
- GalTextureTarget TextureTarget = TexsToTextureTarget(OpCode.Read(52, 0x1e));
+ GalTextureTarget textureTarget = TexsToTextureTarget(opCode.Read(52, 0x1e));
- EmitTexs(Block, OpCode, ShaderIrInst.Texs, TextureTarget, Suffix);
+ EmitTexs(block, opCode, ShaderIrInst.Texs, textureTarget, suffix);
}
- public static void Tlds(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Tlds(ShaderIrBlock block, long opCode, int position)
{
- TextureInstructionSuffix Suffix;
+ TextureInstructionSuffix suffix;
- int RawSuffix = OpCode.Read(0x34, 0x1e);
+ int rawSuffix = opCode.Read(0x34, 0x1e);
- switch (RawSuffix)
+ switch (rawSuffix)
{
case 0:
case 0x4:
case 0x8:
- Suffix = TextureInstructionSuffix.LZ | TextureInstructionSuffix.AOffI;
+ suffix = TextureInstructionSuffix.Lz | TextureInstructionSuffix.AOffI;
break;
case 0xc:
- Suffix = TextureInstructionSuffix.LZ | TextureInstructionSuffix.MZ;
+ suffix = TextureInstructionSuffix.Lz | TextureInstructionSuffix.Mz;
break;
case 0xe:
case 0x10:
- Suffix = TextureInstructionSuffix.LZ;
+ suffix = TextureInstructionSuffix.Lz;
break;
case 0x2:
case 0xa:
- Suffix = TextureInstructionSuffix.LL;
+ suffix = TextureInstructionSuffix.Ll;
break;
case 0x18:
- Suffix = TextureInstructionSuffix.LL | TextureInstructionSuffix.AOffI;
+ suffix = TextureInstructionSuffix.Ll | TextureInstructionSuffix.AOffI;
break;
default:
- throw new InvalidOperationException($"Invalid Suffix for TLDS instruction {RawSuffix}");
+ throw new InvalidOperationException($"Invalid Suffix for TLDS instruction {rawSuffix}");
}
- GalTextureTarget TextureTarget = TldsToTextureTarget(OpCode.Read(52, 0x1e));
+ GalTextureTarget textureTarget = TldsToTextureTarget(opCode.Read(52, 0x1e));
- EmitTexs(Block, OpCode, ShaderIrInst.Txlf, TextureTarget, Suffix);
+ EmitTexs(block, opCode, ShaderIrInst.Txlf, textureTarget, suffix);
}
- public static void Tld4(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Tld4(ShaderIrBlock block, long opCode, int position)
{
- TextureInstructionSuffix Suffix;
+ TextureInstructionSuffix suffix;
- int RawSuffix = OpCode.Read(0x34, 0xc);
+ int rawSuffix = opCode.Read(0x34, 0xc);
- switch (RawSuffix)
+ switch (rawSuffix)
{
case 0:
- Suffix = TextureInstructionSuffix.None;
+ suffix = TextureInstructionSuffix.None;
break;
case 0x4:
- Suffix = TextureInstructionSuffix.AOffI;
+ suffix = TextureInstructionSuffix.AOffI;
break;
case 0x8:
- Suffix = TextureInstructionSuffix.PTP;
+ suffix = TextureInstructionSuffix.Ptp;
break;
default:
- throw new InvalidOperationException($"Invalid Suffix for TLD4 instruction {RawSuffix}");
+ throw new InvalidOperationException($"Invalid Suffix for TLD4 instruction {rawSuffix}");
}
- bool IsShadow = OpCode.Read(0x32);
+ bool isShadow = opCode.Read(0x32);
- bool IsArray = OpCode.HasArray();
- int ChMask = OpCode.Read(31, 0xf);
+ bool isArray = opCode.HasArray();
+ int chMask = opCode.Read(31, 0xf);
- GalTextureTarget TextureTarget = TexToTextureTarget(OpCode.Read(28, 6), IsArray);
+ GalTextureTarget textureTarget = TexToTextureTarget(opCode.Read(28, 6), isArray);
- if (IsShadow)
+ if (isShadow)
{
- Suffix |= TextureInstructionSuffix.DC;
+ suffix |= TextureInstructionSuffix.Dc;
}
- EmitTld4(Block, OpCode, TextureTarget, Suffix, ChMask, OpCode.Read(0x38, 0x3), false);
+ EmitTld4(block, opCode, textureTarget, suffix, chMask, opCode.Read(0x38, 0x3), false);
}
- public static void Tld4s(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Tld4S(ShaderIrBlock block, long opCode, int position)
{
- TextureInstructionSuffix Suffix = TextureInstructionSuffix.None;
+ TextureInstructionSuffix suffix = TextureInstructionSuffix.None;
- bool IsOffset = OpCode.Read(0x33);
- bool IsShadow = OpCode.Read(0x32);
+ bool isOffset = opCode.Read(0x33);
+ bool isShadow = opCode.Read(0x32);
- if (IsOffset)
+ if (isOffset)
{
- Suffix |= TextureInstructionSuffix.AOffI;
+ suffix |= TextureInstructionSuffix.AOffI;
}
- if (IsShadow)
+ if (isShadow)
{
- Suffix |= TextureInstructionSuffix.DC;
+ suffix |= TextureInstructionSuffix.Dc;
}
// TLD4S seems to only support 2D textures with RGBA mask?
- EmitTld4(Block, OpCode, GalTextureTarget.TwoD, Suffix, RGBA, OpCode.Read(0x34, 0x3), true);
+ EmitTld4(block, opCode, GalTextureTarget.TwoD, suffix, RGBA, opCode.Read(0x34, 0x3), true);
}
- private static void EmitTexs(ShaderIrBlock Block,
- long OpCode,
- ShaderIrInst Inst,
- GalTextureTarget TextureTarget,
- TextureInstructionSuffix TextureInstructionSuffix)
+ private static void EmitTexs(ShaderIrBlock block,
+ long opCode,
+ ShaderIrInst inst,
+ GalTextureTarget textureTarget,
+ TextureInstructionSuffix textureInstructionSuffix)
{
- if (Inst == ShaderIrInst.Txlf && TextureTarget == GalTextureTarget.CubeArray)
+ if (inst == ShaderIrInst.Txlf && textureTarget == GalTextureTarget.CubeArray)
{
throw new InvalidOperationException("TLDS instructions cannot use CUBE modifier!");
}
- bool IsArray = ImageUtils.IsArray(TextureTarget);
+ bool isArray = ImageUtils.IsArray(textureTarget);
- ShaderIrOperGpr[] Coords = new ShaderIrOperGpr[ImageUtils.GetCoordsCountTextureTarget(TextureTarget)];
+ ShaderIrOperGpr[] coords = new ShaderIrOperGpr[ImageUtils.GetCoordsCountTextureTarget(textureTarget)];
- ShaderIrOperGpr OperA = OpCode.Gpr8();
- ShaderIrOperGpr OperB = OpCode.Gpr20();
+ ShaderIrOperGpr operA = opCode.Gpr8();
+ ShaderIrOperGpr operB = opCode.Gpr20();
- ShaderIrOperGpr SuffixExtra = OpCode.Gpr20();
- SuffixExtra.Index += 1;
+ ShaderIrOperGpr suffixExtra = opCode.Gpr20();
+ suffixExtra.Index += 1;
- int CoordStartIndex = 0;
+ int coordStartIndex = 0;
- if (IsArray)
+ if (isArray)
{
- CoordStartIndex++;
- Coords[Coords.Length - 1] = OpCode.Gpr8();
+ coordStartIndex++;
+ coords[coords.Length - 1] = opCode.Gpr8();
}
- switch (Coords.Length - CoordStartIndex)
+ switch (coords.Length - coordStartIndex)
{
case 1:
- Coords[0] = OpCode.Gpr8();
+ coords[0] = opCode.Gpr8();
break;
case 2:
- Coords[0] = OpCode.Gpr8();
- Coords[0].Index += CoordStartIndex;
+ coords[0] = opCode.Gpr8();
+ coords[0].Index += coordStartIndex;
break;
case 3:
- Coords[0] = OpCode.Gpr8();
- Coords[0].Index += CoordStartIndex;
+ coords[0] = opCode.Gpr8();
+ coords[0].Index += coordStartIndex;
- Coords[1] = OpCode.Gpr8();
- Coords[1].Index += 1 + CoordStartIndex;
+ coords[1] = opCode.Gpr8();
+ coords[1].Index += 1 + coordStartIndex;
break;
default:
- throw new NotSupportedException($"{Coords.Length - CoordStartIndex} coords textures aren't supported in TEXS");
+ throw new NotSupportedException($"{coords.Length - coordStartIndex} coords textures aren't supported in TEXS");
}
- int OperBIndex = 0;
+ int operBIndex = 0;
- ShaderIrOperGpr LevelOfDetail = null;
- ShaderIrOperGpr Offset = null;
- ShaderIrOperGpr DepthCompare = null;
+ ShaderIrOperGpr levelOfDetail = null;
+ ShaderIrOperGpr offset = null;
+ ShaderIrOperGpr depthCompare = null;
// OperB is always the last value
// Not applicable to 1d textures
- if (Coords.Length - CoordStartIndex != 1)
+ if (coords.Length - coordStartIndex != 1)
{
- Coords[Coords.Length - CoordStartIndex - 1] = OperB;
- OperBIndex++;
+ coords[coords.Length - coordStartIndex - 1] = operB;
+ operBIndex++;
}
// Encoding of TEXS/TLDS is a bit special and change for 2d textures
// NOTE: OperA seems to hold at best two args.
// On 2D textures, if no suffix need an additional values, Y is stored in OperB, otherwise coords are in OperA and the additional values is in OperB.
- if (TextureInstructionSuffix != TextureInstructionSuffix.None && TextureInstructionSuffix != TextureInstructionSuffix.LZ && TextureTarget == GalTextureTarget.TwoD)
+ if (textureInstructionSuffix != TextureInstructionSuffix.None && textureInstructionSuffix != TextureInstructionSuffix.Lz && textureTarget == GalTextureTarget.TwoD)
{
- Coords[Coords.Length - CoordStartIndex - 1] = OpCode.Gpr8();
- Coords[Coords.Length - CoordStartIndex - 1].Index += Coords.Length - CoordStartIndex - 1;
- OperBIndex--;
+ coords[coords.Length - coordStartIndex - 1] = opCode.Gpr8();
+ coords[coords.Length - coordStartIndex - 1].Index += coords.Length - coordStartIndex - 1;
+ operBIndex--;
}
// TODO: Find what MZ does and what changes about the encoding (Maybe Multisample?)
- if ((TextureInstructionSuffix & TextureInstructionSuffix.LL) != 0)
+ if ((textureInstructionSuffix & TextureInstructionSuffix.Ll) != 0)
{
- LevelOfDetail = OpCode.Gpr20();
- LevelOfDetail.Index += OperBIndex;
- OperBIndex++;
+ levelOfDetail = opCode.Gpr20();
+ levelOfDetail.Index += operBIndex;
+ operBIndex++;
}
- if ((TextureInstructionSuffix & TextureInstructionSuffix.AOffI) != 0)
+ if ((textureInstructionSuffix & TextureInstructionSuffix.AOffI) != 0)
{
- Offset = OpCode.Gpr20();
- Offset.Index += OperBIndex;
- OperBIndex++;
+ offset = opCode.Gpr20();
+ offset.Index += operBIndex;
+ operBIndex++;
}
- if ((TextureInstructionSuffix & TextureInstructionSuffix.DC) != 0)
+ if ((textureInstructionSuffix & TextureInstructionSuffix.Dc) != 0)
{
- DepthCompare = OpCode.Gpr20();
- DepthCompare.Index += OperBIndex;
- OperBIndex++;
+ depthCompare = opCode.Gpr20();
+ depthCompare.Index += operBIndex;
+ operBIndex++;
}
- int LutIndex;
+ int lutIndex;
- LutIndex = !OpCode.Gpr0().IsConst ? 1 : 0;
- LutIndex |= !OpCode.Gpr28().IsConst ? 2 : 0;
+ lutIndex = !opCode.Gpr0().IsConst ? 1 : 0;
+ lutIndex |= !opCode.Gpr28().IsConst ? 2 : 0;
- if (LutIndex == 0)
+ if (lutIndex == 0)
{
//Both destination registers are RZ, do nothing.
return;
}
- bool Fp16 = !OpCode.Read(59);
+ bool fp16 = !opCode.Read(59);
- int DstIncrement = 0;
+ int dstIncrement = 0;
ShaderIrOperGpr GetDst()
{
- ShaderIrOperGpr Dst;
+ ShaderIrOperGpr dst;
- if (Fp16)
+ if (fp16)
{
//FP16 mode, two components are packed on the two
//halfs of a 32-bits register, as two half-float values.
- int HalfPart = DstIncrement & 1;
+ int halfPart = dstIncrement & 1;
- switch (LutIndex)
+ switch (lutIndex)
{
- case 1: Dst = OpCode.GprHalf0(HalfPart); break;
- case 2: Dst = OpCode.GprHalf28(HalfPart); break;
- case 3: Dst = (DstIncrement >> 1) != 0
- ? OpCode.GprHalf28(HalfPart)
- : OpCode.GprHalf0(HalfPart); break;
+ case 1: dst = opCode.GprHalf0(halfPart); break;
+ case 2: dst = opCode.GprHalf28(halfPart); break;
+ case 3: dst = (dstIncrement >> 1) != 0
+ ? opCode.GprHalf28(halfPart)
+ : opCode.GprHalf0(halfPart); break;
default: throw new InvalidOperationException();
}
@@ -667,210 +669,210 @@ namespace Ryujinx.Graphics.Gal.Shader
{
//32-bits mode, each component uses one register.
//Two components uses two consecutive registers.
- switch (LutIndex)
+ switch (lutIndex)
{
- case 1: Dst = OpCode.Gpr0(); break;
- case 2: Dst = OpCode.Gpr28(); break;
- case 3: Dst = (DstIncrement >> 1) != 0
- ? OpCode.Gpr28()
- : OpCode.Gpr0(); break;
+ case 1: dst = opCode.Gpr0(); break;
+ case 2: dst = opCode.Gpr28(); break;
+ case 3: dst = (dstIncrement >> 1) != 0
+ ? opCode.Gpr28()
+ : opCode.Gpr0(); break;
default: throw new InvalidOperationException();
}
- Dst.Index += DstIncrement & 1;
+ dst.Index += dstIncrement & 1;
}
- DstIncrement++;
+ dstIncrement++;
- return Dst;
+ return dst;
}
- int ChMask = MaskLut[LutIndex, OpCode.Read(50, 7)];
+ int chMask = _maskLut[lutIndex, opCode.Read(50, 7)];
- if (ChMask == 0)
+ if (chMask == 0)
{
//All channels are disabled, do nothing.
return;
}
- ShaderIrNode OperC = OpCode.Imm13_36();
- Coords = CoordsRegistersToTempRegisters(Block, Coords);
+ ShaderIrNode operC = opCode.Imm13_36();
+ coords = CoordsRegistersToTempRegisters(block, coords);
- for (int Ch = 0; Ch < 4; Ch++)
+ for (int ch = 0; ch < 4; ch++)
{
- if (!IsChannelUsed(ChMask, Ch))
+ if (!IsChannelUsed(chMask, ch))
{
continue;
}
- ShaderIrMetaTex Meta = new ShaderIrMetaTex(Ch, TextureTarget, TextureInstructionSuffix, Coords)
+ ShaderIrMetaTex meta = new ShaderIrMetaTex(ch, textureTarget, textureInstructionSuffix, coords)
{
- LevelOfDetail = LevelOfDetail,
- Offset = Offset,
- DepthCompare = DepthCompare
+ LevelOfDetail = levelOfDetail,
+ Offset = offset,
+ DepthCompare = depthCompare
};
- ShaderIrOp Op = new ShaderIrOp(Inst, OperA, OperB, OperC, Meta);
+ ShaderIrOp op = new ShaderIrOp(inst, operA, operB, operC, meta);
- ShaderIrOperGpr Dst = GetDst();
+ ShaderIrOperGpr dst = GetDst();
- if (Dst.IsValidRegister && !Dst.IsConst)
+ if (dst.IsValidRegister && !dst.IsConst)
{
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(Dst, Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(dst, op)));
}
}
}
- private static void EmitTld4(ShaderIrBlock Block, long OpCode, GalTextureTarget TextureType, TextureInstructionSuffix TextureInstructionSuffix, int ChMask, int Component, bool Scalar)
+ private static void EmitTld4(ShaderIrBlock block, long opCode, GalTextureTarget textureType, TextureInstructionSuffix textureInstructionSuffix, int chMask, int component, bool scalar)
{
- ShaderIrOperGpr OperA = OpCode.Gpr8();
- ShaderIrOperGpr OperB = OpCode.Gpr20();
- ShaderIrOperImm OperC = OpCode.Imm13_36();
+ ShaderIrOperGpr operA = opCode.Gpr8();
+ ShaderIrOperGpr operB = opCode.Gpr20();
+ ShaderIrOperImm operC = opCode.Imm13_36();
- ShaderIrOperGpr[] Coords = new ShaderIrOperGpr[ImageUtils.GetCoordsCountTextureTarget(TextureType)];
+ ShaderIrOperGpr[] coords = new ShaderIrOperGpr[ImageUtils.GetCoordsCountTextureTarget(textureType)];
- ShaderIrOperGpr Offset = null;
- ShaderIrOperGpr DepthCompare = null;
+ ShaderIrOperGpr offset = null;
+ ShaderIrOperGpr depthCompare = null;
- bool IsArray = ImageUtils.IsArray(TextureType);
+ bool isArray = ImageUtils.IsArray(textureType);
- int OperBIndex = 0;
+ int operBIndex = 0;
- if (Scalar)
+ if (scalar)
{
- int CoordStartIndex = 0;
+ int coordStartIndex = 0;
- if (IsArray)
+ if (isArray)
{
- CoordStartIndex++;
- Coords[Coords.Length - 1] = OperB;
+ coordStartIndex++;
+ coords[coords.Length - 1] = operB;
}
- switch (Coords.Length - CoordStartIndex)
+ switch (coords.Length - coordStartIndex)
{
case 1:
- Coords[0] = OpCode.Gpr8();
+ coords[0] = opCode.Gpr8();
break;
case 2:
- Coords[0] = OpCode.Gpr8();
- Coords[0].Index += CoordStartIndex;
+ coords[0] = opCode.Gpr8();
+ coords[0].Index += coordStartIndex;
break;
case 3:
- Coords[0] = OpCode.Gpr8();
- Coords[0].Index += CoordStartIndex;
+ coords[0] = opCode.Gpr8();
+ coords[0].Index += coordStartIndex;
- Coords[1] = OpCode.Gpr8();
- Coords[1].Index += 1 + CoordStartIndex;
+ coords[1] = opCode.Gpr8();
+ coords[1].Index += 1 + coordStartIndex;
break;
default:
- throw new NotSupportedException($"{Coords.Length - CoordStartIndex} coords textures aren't supported in TLD4S");
+ throw new NotSupportedException($"{coords.Length - coordStartIndex} coords textures aren't supported in TLD4S");
}
- if (Coords.Length - CoordStartIndex != 1)
+ if (coords.Length - coordStartIndex != 1)
{
- Coords[Coords.Length - CoordStartIndex - 1] = OperB;
- OperBIndex++;
+ coords[coords.Length - coordStartIndex - 1] = operB;
+ operBIndex++;
}
- if (TextureInstructionSuffix != TextureInstructionSuffix.None && TextureType == GalTextureTarget.TwoD)
+ if (textureInstructionSuffix != TextureInstructionSuffix.None && textureType == GalTextureTarget.TwoD)
{
- Coords[Coords.Length - CoordStartIndex - 1] = OpCode.Gpr8();
- Coords[Coords.Length - CoordStartIndex - 1].Index += Coords.Length - CoordStartIndex - 1;
- OperBIndex--;
+ coords[coords.Length - coordStartIndex - 1] = opCode.Gpr8();
+ coords[coords.Length - coordStartIndex - 1].Index += coords.Length - coordStartIndex - 1;
+ operBIndex--;
}
}
else
{
- int IndexExtraCoord = 0;
+ int indexExtraCoord = 0;
- if (IsArray)
+ if (isArray)
{
- IndexExtraCoord++;
+ indexExtraCoord++;
- Coords[Coords.Length - 1] = OpCode.Gpr8();
+ coords[coords.Length - 1] = opCode.Gpr8();
}
- for (int Index = 0; Index < Coords.Length - IndexExtraCoord; Index++)
+ for (int index = 0; index < coords.Length - indexExtraCoord; index++)
{
- Coords[Index] = OpCode.Gpr8();
+ coords[index] = opCode.Gpr8();
- Coords[Index].Index += Index;
+ coords[index].Index += index;
- Coords[Index].Index += IndexExtraCoord;
+ coords[index].Index += indexExtraCoord;
- if (Coords[Index].Index > ShaderIrOperGpr.ZRIndex)
+ if (coords[index].Index > ShaderIrOperGpr.ZrIndex)
{
- Coords[Index].Index = ShaderIrOperGpr.ZRIndex;
+ coords[index].Index = ShaderIrOperGpr.ZrIndex;
}
}
}
- if ((TextureInstructionSuffix & TextureInstructionSuffix.AOffI) != 0)
+ if ((textureInstructionSuffix & TextureInstructionSuffix.AOffI) != 0)
{
- Offset = OpCode.Gpr20();
- Offset.Index += OperBIndex;
- OperBIndex++;
+ offset = opCode.Gpr20();
+ offset.Index += operBIndex;
+ operBIndex++;
}
- if ((TextureInstructionSuffix & TextureInstructionSuffix.DC) != 0)
+ if ((textureInstructionSuffix & TextureInstructionSuffix.Dc) != 0)
{
- DepthCompare = OpCode.Gpr20();
- DepthCompare.Index += OperBIndex;
- OperBIndex++;
+ depthCompare = opCode.Gpr20();
+ depthCompare.Index += operBIndex;
+ operBIndex++;
}
- Coords = CoordsRegistersToTempRegisters(Block, Coords);
+ coords = CoordsRegistersToTempRegisters(block, coords);
- int RegInc = 0;
+ int regInc = 0;
- for (int Ch = 0; Ch < 4; Ch++)
+ for (int ch = 0; ch < 4; ch++)
{
- if (!IsChannelUsed(ChMask, Ch))
+ if (!IsChannelUsed(chMask, ch))
{
continue;
}
- ShaderIrOperGpr Dst = OpCode.Gpr0();
+ ShaderIrOperGpr dst = opCode.Gpr0();
- Dst.Index += RegInc++;
+ dst.Index += regInc++;
- if (!Dst.IsValidRegister || Dst.IsConst)
+ if (!dst.IsValidRegister || dst.IsConst)
{
continue;
}
- ShaderIrMetaTex Meta = new ShaderIrMetaTex(Ch, TextureType, TextureInstructionSuffix, Coords)
+ ShaderIrMetaTex meta = new ShaderIrMetaTex(ch, textureType, textureInstructionSuffix, coords)
{
- Component = Component,
- Offset = Offset,
- DepthCompare = DepthCompare
+ Component = component,
+ Offset = offset,
+ DepthCompare = depthCompare
};
- ShaderIrOp Op = new ShaderIrOp(ShaderIrInst.Tld4, OperA, OperB, OperC, Meta);
+ ShaderIrOp op = new ShaderIrOp(ShaderIrInst.Tld4, operA, operB, operC, meta);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(Dst, Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(dst, op)));
}
}
- private static bool IsChannelUsed(int ChMask, int Ch)
+ private static bool IsChannelUsed(int chMask, int ch)
{
- return (ChMask & (1 << Ch)) != 0;
+ return (chMask & (1 << ch)) != 0;
}
- private static ShaderIrOperGpr[] CoordsRegistersToTempRegisters(ShaderIrBlock Block, params ShaderIrOperGpr[] Registers)
+ private static ShaderIrOperGpr[] CoordsRegistersToTempRegisters(ShaderIrBlock block, params ShaderIrOperGpr[] registers)
{
- ShaderIrOperGpr[] Res = new ShaderIrOperGpr[Registers.Length];
+ ShaderIrOperGpr[] res = new ShaderIrOperGpr[registers.Length];
- for (int Index = 0; Index < Res.Length; Index++)
+ for (int index = 0; index < res.Length; index++)
{
- Res[Index] = ShaderIrOperGpr.MakeTemporary(Index);
- Block.AddNode(new ShaderIrAsg(Res[Index], Registers[Index]));
+ res[index] = ShaderIrOperGpr.MakeTemporary(index);
+ block.AddNode(new ShaderIrAsg(res[index], registers[index]));
}
- return Res;
+ return res;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs
index cd602db7..0a2b4232 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs
@@ -25,400 +25,400 @@ namespace Ryujinx.Graphics.Gal.Shader
F64 = 3
}
- public static void F2f_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void F2f_C(ShaderIrBlock block, long opCode, int position)
{
- EmitF2f(Block, OpCode, ShaderOper.CR);
+ EmitF2F(block, opCode, ShaderOper.Cr);
}
- public static void F2f_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void F2f_I(ShaderIrBlock block, long opCode, int position)
{
- EmitF2f(Block, OpCode, ShaderOper.Immf);
+ EmitF2F(block, opCode, ShaderOper.Immf);
}
- public static void F2f_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void F2f_R(ShaderIrBlock block, long opCode, int position)
{
- EmitF2f(Block, OpCode, ShaderOper.RR);
+ EmitF2F(block, opCode, ShaderOper.Rr);
}
- public static void F2i_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void F2i_C(ShaderIrBlock block, long opCode, int position)
{
- EmitF2i(Block, OpCode, ShaderOper.CR);
+ EmitF2I(block, opCode, ShaderOper.Cr);
}
- public static void F2i_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void F2i_I(ShaderIrBlock block, long opCode, int position)
{
- EmitF2i(Block, OpCode, ShaderOper.Immf);
+ EmitF2I(block, opCode, ShaderOper.Immf);
}
- public static void F2i_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void F2i_R(ShaderIrBlock block, long opCode, int position)
{
- EmitF2i(Block, OpCode, ShaderOper.RR);
+ EmitF2I(block, opCode, ShaderOper.Rr);
}
- public static void I2f_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void I2f_C(ShaderIrBlock block, long opCode, int position)
{
- EmitI2f(Block, OpCode, ShaderOper.CR);
+ EmitI2F(block, opCode, ShaderOper.Cr);
}
- public static void I2f_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void I2f_I(ShaderIrBlock block, long opCode, int position)
{
- EmitI2f(Block, OpCode, ShaderOper.Imm);
+ EmitI2F(block, opCode, ShaderOper.Imm);
}
- public static void I2f_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void I2f_R(ShaderIrBlock block, long opCode, int position)
{
- EmitI2f(Block, OpCode, ShaderOper.RR);
+ EmitI2F(block, opCode, ShaderOper.Rr);
}
- public static void I2i_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void I2i_C(ShaderIrBlock block, long opCode, int position)
{
- EmitI2i(Block, OpCode, ShaderOper.CR);
+ EmitI2I(block, opCode, ShaderOper.Cr);
}
- public static void I2i_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void I2i_I(ShaderIrBlock block, long opCode, int position)
{
- EmitI2i(Block, OpCode, ShaderOper.Imm);
+ EmitI2I(block, opCode, ShaderOper.Imm);
}
- public static void I2i_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void I2i_R(ShaderIrBlock block, long opCode, int position)
{
- EmitI2i(Block, OpCode, ShaderOper.RR);
+ EmitI2I(block, opCode, ShaderOper.Rr);
}
- public static void Isberd(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Isberd(ShaderIrBlock block, long opCode, int position)
{
//This instruction seems to be used to translate from an address to a vertex index in a GS
//Stub it as such
- Block.AddNode(new ShaderIrCmnt("Stubbed."));
+ block.AddNode(new ShaderIrCmnt("Stubbed."));
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), OpCode.Gpr8())));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), opCode.Gpr8())));
}
- public static void Mov_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Mov_C(ShaderIrBlock block, long opCode, int position)
{
- ShaderIrOperCbuf Cbuf = OpCode.Cbuf34();
+ ShaderIrOperCbuf cbuf = opCode.Cbuf34();
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Cbuf)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), cbuf)));
}
- public static void Mov_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Mov_I(ShaderIrBlock block, long opCode, int position)
{
- ShaderIrOperImm Imm = OpCode.Imm19_20();
+ ShaderIrOperImm imm = opCode.Imm19_20();
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Imm)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), imm)));
}
- public static void Mov_I32(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Mov_I32(ShaderIrBlock block, long opCode, int position)
{
- ShaderIrOperImm Imm = OpCode.Imm32_20();
+ ShaderIrOperImm imm = opCode.Imm32_20();
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Imm)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), imm)));
}
- public static void Mov_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Mov_R(ShaderIrBlock block, long opCode, int position)
{
- ShaderIrOperGpr Gpr = OpCode.Gpr20();
+ ShaderIrOperGpr gpr = opCode.Gpr20();
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Gpr)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), gpr)));
}
- public static void Sel_C(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Sel_C(ShaderIrBlock block, long opCode, int position)
{
- EmitSel(Block, OpCode, ShaderOper.CR);
+ EmitSel(block, opCode, ShaderOper.Cr);
}
- public static void Sel_I(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Sel_I(ShaderIrBlock block, long opCode, int position)
{
- EmitSel(Block, OpCode, ShaderOper.Imm);
+ EmitSel(block, opCode, ShaderOper.Imm);
}
- public static void Sel_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Sel_R(ShaderIrBlock block, long opCode, int position)
{
- EmitSel(Block, OpCode, ShaderOper.RR);
+ EmitSel(block, opCode, ShaderOper.Rr);
}
- public static void Mov_S(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Mov_S(ShaderIrBlock block, long opCode, int position)
{
- Block.AddNode(new ShaderIrCmnt("Stubbed."));
+ block.AddNode(new ShaderIrCmnt("Stubbed."));
//Zero is used as a special number to get a valid "0 * 0 + VertexIndex" in a GS
- ShaderIrNode Source = new ShaderIrOperImm(0);
+ ShaderIrNode source = new ShaderIrOperImm(0);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Source)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), source)));
}
- private static void EmitF2f(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitF2F(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- bool NegA = OpCode.Read(45);
- bool AbsA = OpCode.Read(49);
+ bool negA = opCode.Read(45);
+ bool absA = opCode.Read(49);
- ShaderIrNode OperA;
+ ShaderIrNode operA;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperA = OpCode.Cbuf34(); break;
- case ShaderOper.Immf: OperA = OpCode.Immf19_20(); break;
- case ShaderOper.RR: OperA = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operA = opCode.Cbuf34(); break;
+ case ShaderOper.Immf: operA = opCode.Immf19_20(); break;
+ case ShaderOper.Rr: operA = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- OperA = GetAluFabsFneg(OperA, AbsA, NegA);
+ operA = GetAluFabsFneg(operA, absA, negA);
- ShaderIrInst RoundInst = GetRoundInst(OpCode);
+ ShaderIrInst roundInst = GetRoundInst(opCode);
- if (RoundInst != ShaderIrInst.Invalid)
+ if (roundInst != ShaderIrInst.Invalid)
{
- OperA = new ShaderIrOp(RoundInst, OperA);
+ operA = new ShaderIrOp(roundInst, operA);
}
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), OperA)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), operA)));
}
- private static void EmitF2i(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitF2I(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- IntType Type = GetIntType(OpCode);
+ IntType type = GetIntType(opCode);
- if (Type == IntType.U64 ||
- Type == IntType.S64)
+ if (type == IntType.U64 ||
+ type == IntType.S64)
{
//TODO: 64-bits support.
//Note: GLSL doesn't support 64-bits integers.
throw new NotImplementedException();
}
- bool NegA = OpCode.Read(45);
- bool AbsA = OpCode.Read(49);
+ bool negA = opCode.Read(45);
+ bool absA = opCode.Read(49);
- ShaderIrNode OperA;
+ ShaderIrNode operA;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperA = OpCode.Cbuf34(); break;
- case ShaderOper.Immf: OperA = OpCode.Immf19_20(); break;
- case ShaderOper.RR: OperA = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operA = opCode.Cbuf34(); break;
+ case ShaderOper.Immf: operA = opCode.Immf19_20(); break;
+ case ShaderOper.Rr: operA = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- OperA = GetAluFabsFneg(OperA, AbsA, NegA);
+ operA = GetAluFabsFneg(operA, absA, negA);
- ShaderIrInst RoundInst = GetRoundInst(OpCode);
+ ShaderIrInst roundInst = GetRoundInst(opCode);
- if (RoundInst != ShaderIrInst.Invalid)
+ if (roundInst != ShaderIrInst.Invalid)
{
- OperA = new ShaderIrOp(RoundInst, OperA);
+ operA = new ShaderIrOp(roundInst, operA);
}
- bool Signed = Type >= IntType.S8;
+ bool signed = type >= IntType.S8;
- int Size = 8 << ((int)Type & 3);
+ int size = 8 << ((int)type & 3);
- if (Size < 32)
+ if (size < 32)
{
- uint Mask = uint.MaxValue >> (32 - Size);
+ uint mask = uint.MaxValue >> (32 - size);
- float CMin = 0;
- float CMax = Mask;
+ float cMin = 0;
+ float cMax = mask;
- if (Signed)
+ if (signed)
{
- uint HalfMask = Mask >> 1;
+ uint halfMask = mask >> 1;
- CMin -= HalfMask + 1;
- CMax = HalfMask;
+ cMin -= halfMask + 1;
+ cMax = halfMask;
}
- ShaderIrOperImmf IMin = new ShaderIrOperImmf(CMin);
- ShaderIrOperImmf IMax = new ShaderIrOperImmf(CMax);
+ ShaderIrOperImmf min = new ShaderIrOperImmf(cMin);
+ ShaderIrOperImmf max = new ShaderIrOperImmf(cMax);
- OperA = new ShaderIrOp(ShaderIrInst.Fclamp, OperA, IMin, IMax);
+ operA = new ShaderIrOp(ShaderIrInst.Fclamp, operA, min, max);
}
- ShaderIrInst Inst = Signed
+ ShaderIrInst inst = signed
? ShaderIrInst.Ftos
: ShaderIrInst.Ftou;
- ShaderIrNode Op = new ShaderIrOp(Inst, OperA);
+ ShaderIrNode op = new ShaderIrOp(inst, operA);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op)));
}
- private static void EmitI2f(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitI2F(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- IntType Type = GetIntType(OpCode);
+ IntType type = GetIntType(opCode);
- if (Type == IntType.U64 ||
- Type == IntType.S64)
+ if (type == IntType.U64 ||
+ type == IntType.S64)
{
//TODO: 64-bits support.
//Note: GLSL doesn't support 64-bits integers.
throw new NotImplementedException();
}
- int Sel = OpCode.Read(41, 3);
+ int sel = opCode.Read(41, 3);
- bool NegA = OpCode.Read(45);
- bool AbsA = OpCode.Read(49);
+ bool negA = opCode.Read(45);
+ bool absA = opCode.Read(49);
- ShaderIrNode OperA;
+ ShaderIrNode operA;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperA = OpCode.Cbuf34(); break;
- case ShaderOper.Imm: OperA = OpCode.Imm19_20(); break;
- case ShaderOper.RR: OperA = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operA = opCode.Cbuf34(); break;
+ case ShaderOper.Imm: operA = opCode.Imm19_20(); break;
+ case ShaderOper.Rr: operA = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- OperA = GetAluIabsIneg(OperA, AbsA, NegA);
+ operA = GetAluIabsIneg(operA, absA, negA);
- bool Signed = Type >= IntType.S8;
+ bool signed = type >= IntType.S8;
- int Shift = Sel * 8;
+ int shift = sel * 8;
- int Size = 8 << ((int)Type & 3);
+ int size = 8 << ((int)type & 3);
- if (Shift != 0)
+ if (shift != 0)
{
- OperA = new ShaderIrOp(ShaderIrInst.Asr, OperA, new ShaderIrOperImm(Shift));
+ operA = new ShaderIrOp(ShaderIrInst.Asr, operA, new ShaderIrOperImm(shift));
}
- if (Size < 32)
+ if (size < 32)
{
- OperA = ExtendTo32(OperA, Signed, Size);
+ operA = ExtendTo32(operA, signed, size);
}
- ShaderIrInst Inst = Signed
+ ShaderIrInst inst = signed
? ShaderIrInst.Stof
: ShaderIrInst.Utof;
- ShaderIrNode Op = new ShaderIrOp(Inst, OperA);
+ ShaderIrNode op = new ShaderIrOp(inst, operA);
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), Op)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), op)));
}
- private static void EmitI2i(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitI2I(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- IntType Type = GetIntType(OpCode);
+ IntType type = GetIntType(opCode);
- if (Type == IntType.U64 ||
- Type == IntType.S64)
+ if (type == IntType.U64 ||
+ type == IntType.S64)
{
//TODO: 64-bits support.
//Note: GLSL doesn't support 64-bits integers.
throw new NotImplementedException();
}
- int Sel = OpCode.Read(41, 3);
+ int sel = opCode.Read(41, 3);
- bool NegA = OpCode.Read(45);
- bool AbsA = OpCode.Read(49);
- bool SatA = OpCode.Read(50);
+ bool negA = opCode.Read(45);
+ bool absA = opCode.Read(49);
+ bool satA = opCode.Read(50);
- ShaderIrNode OperA;
+ ShaderIrNode operA;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: OperA = OpCode.Cbuf34(); break;
- case ShaderOper.Immf: OperA = OpCode.Immf19_20(); break;
- case ShaderOper.RR: OperA = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: operA = opCode.Cbuf34(); break;
+ case ShaderOper.Immf: operA = opCode.Immf19_20(); break;
+ case ShaderOper.Rr: operA = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- OperA = GetAluIabsIneg(OperA, AbsA, NegA);
+ operA = GetAluIabsIneg(operA, absA, negA);
- bool Signed = Type >= IntType.S8;
+ bool signed = type >= IntType.S8;
- int Shift = Sel * 8;
+ int shift = sel * 8;
- int Size = 8 << ((int)Type & 3);
+ int size = 8 << ((int)type & 3);
- if (Shift != 0)
+ if (shift != 0)
{
- OperA = new ShaderIrOp(ShaderIrInst.Asr, OperA, new ShaderIrOperImm(Shift));
+ operA = new ShaderIrOp(ShaderIrInst.Asr, operA, new ShaderIrOperImm(shift));
}
- if (Size < 32)
+ if (size < 32)
{
- uint Mask = uint.MaxValue >> (32 - Size);
+ uint mask = uint.MaxValue >> (32 - size);
- if (SatA)
+ if (satA)
{
- uint CMin = 0;
- uint CMax = Mask;
+ uint cMin = 0;
+ uint cMax = mask;
- if (Signed)
+ if (signed)
{
- uint HalfMask = Mask >> 1;
+ uint halfMask = mask >> 1;
- CMin -= HalfMask + 1;
- CMax = HalfMask;
+ cMin -= halfMask + 1;
+ cMax = halfMask;
}
- ShaderIrOperImm IMin = new ShaderIrOperImm((int)CMin);
- ShaderIrOperImm IMax = new ShaderIrOperImm((int)CMax);
+ ShaderIrOperImm min = new ShaderIrOperImm((int)cMin);
+ ShaderIrOperImm max = new ShaderIrOperImm((int)cMax);
- OperA = new ShaderIrOp(Signed
+ operA = new ShaderIrOp(signed
? ShaderIrInst.Clamps
- : ShaderIrInst.Clampu, OperA, IMin, IMax);
+ : ShaderIrInst.Clampu, operA, min, max);
}
else
{
- OperA = ExtendTo32(OperA, Signed, Size);
+ operA = ExtendTo32(operA, signed, size);
}
}
- Block.AddNode(OpCode.PredNode(new ShaderIrAsg(OpCode.Gpr0(), OperA)));
+ block.AddNode(opCode.PredNode(new ShaderIrAsg(opCode.Gpr0(), operA)));
}
- private static void EmitSel(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
+ private static void EmitSel(ShaderIrBlock block, long opCode, ShaderOper oper)
{
- ShaderIrOperGpr Dst = OpCode.Gpr0();
- ShaderIrNode Pred = OpCode.Pred39N();
+ ShaderIrOperGpr dst = opCode.Gpr0();
+ ShaderIrNode pred = opCode.Pred39N();
- ShaderIrNode ResultA = OpCode.Gpr8();
- ShaderIrNode ResultB;
+ ShaderIrNode resultA = opCode.Gpr8();
+ ShaderIrNode resultB;
- switch (Oper)
+ switch (oper)
{
- case ShaderOper.CR: ResultB = OpCode.Cbuf34(); break;
- case ShaderOper.Imm: ResultB = OpCode.Imm19_20(); break;
- case ShaderOper.RR: ResultB = OpCode.Gpr20(); break;
+ case ShaderOper.Cr: resultB = opCode.Cbuf34(); break;
+ case ShaderOper.Imm: resultB = opCode.Imm19_20(); break;
+ case ShaderOper.Rr: resultB = opCode.Gpr20(); break;
- default: throw new ArgumentException(nameof(Oper));
+ default: throw new ArgumentException(nameof(oper));
}
- Block.AddNode(OpCode.PredNode(new ShaderIrCond(Pred, new ShaderIrAsg(Dst, ResultA), false)));
+ block.AddNode(opCode.PredNode(new ShaderIrCond(pred, new ShaderIrAsg(dst, resultA), false)));
- Block.AddNode(OpCode.PredNode(new ShaderIrCond(Pred, new ShaderIrAsg(Dst, ResultB), true)));
+ block.AddNode(opCode.PredNode(new ShaderIrCond(pred, new ShaderIrAsg(dst, resultB), true)));
}
- private static IntType GetIntType(long OpCode)
+ private static IntType GetIntType(long opCode)
{
- bool Signed = OpCode.Read(13);
+ bool signed = opCode.Read(13);
- IntType Type = (IntType)(OpCode.Read(10, 3));
+ IntType type = (IntType)(opCode.Read(10, 3));
- if (Signed)
+ if (signed)
{
- Type += (int)IntType.S8;
+ type += (int)IntType.S8;
}
- return Type;
+ return type;
}
- private static FloatType GetFloatType(long OpCode)
+ private static FloatType GetFloatType(long opCode)
{
- return (FloatType)(OpCode.Read(8, 3));
+ return (FloatType)(opCode.Read(8, 3));
}
- private static ShaderIrInst GetRoundInst(long OpCode)
+ private static ShaderIrInst GetRoundInst(long opCode)
{
- switch (OpCode.Read(39, 3))
+ switch (opCode.Read(39, 3))
{
case 1: return ShaderIrInst.Floor;
case 2: return ShaderIrInst.Ceil;
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeOpCode.cs b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeOpCode.cs
index e241e1ca..4b1e4046 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeOpCode.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeOpCode.cs
@@ -4,227 +4,227 @@ namespace Ryujinx.Graphics.Gal.Shader
{
static partial class ShaderDecode
{
- private static int Read(this long OpCode, int Position, int Mask)
+ private static int Read(this long opCode, int position, int mask)
{
- return (int)(OpCode >> Position) & Mask;
+ return (int)(opCode >> position) & mask;
}
- private static bool Read(this long OpCode, int Position)
+ private static bool Read(this long opCode, int position)
{
- return ((OpCode >> Position) & 1) != 0;
+ return ((opCode >> position) & 1) != 0;
}
- private static int Branch(this long OpCode)
+ private static int Branch(this long opCode)
{
- return ((int)(OpCode >> 20) << 8) >> 8;
+ return ((int)(opCode >> 20) << 8) >> 8;
}
- private static bool HasArray(this long OpCode)
+ private static bool HasArray(this long opCode)
{
- return OpCode.Read(0x1c);
+ return opCode.Read(0x1c);
}
- private static ShaderIrOperAbuf[] Abuf20(this long OpCode)
+ private static ShaderIrOperAbuf[] Abuf20(this long opCode)
{
- int Abuf = OpCode.Read(20, 0x3ff);
- int Size = OpCode.Read(47, 3);
+ int abuf = opCode.Read(20, 0x3ff);
+ int size = opCode.Read(47, 3);
- ShaderIrOperGpr Vertex = OpCode.Gpr39();
+ ShaderIrOperGpr vertex = opCode.Gpr39();
- ShaderIrOperAbuf[] Opers = new ShaderIrOperAbuf[Size + 1];
+ ShaderIrOperAbuf[] opers = new ShaderIrOperAbuf[size + 1];
- for (int Index = 0; Index <= Size; Index++)
+ for (int index = 0; index <= size; index++)
{
- Opers[Index] = new ShaderIrOperAbuf(Abuf + Index * 4, Vertex);
+ opers[index] = new ShaderIrOperAbuf(abuf + index * 4, vertex);
}
- return Opers;
+ return opers;
}
- private static ShaderIrOperAbuf Abuf28(this long OpCode)
+ private static ShaderIrOperAbuf Abuf28(this long opCode)
{
- int Abuf = OpCode.Read(28, 0x3ff);
+ int abuf = opCode.Read(28, 0x3ff);
- return new ShaderIrOperAbuf(Abuf, OpCode.Gpr39());
+ return new ShaderIrOperAbuf(abuf, opCode.Gpr39());
}
- private static ShaderIrOperCbuf Cbuf34(this long OpCode)
+ private static ShaderIrOperCbuf Cbuf34(this long opCode)
{
return new ShaderIrOperCbuf(
- OpCode.Read(34, 0x1f),
- OpCode.Read(20, 0x3fff));
+ opCode.Read(34, 0x1f),
+ opCode.Read(20, 0x3fff));
}
- private static ShaderIrOperGpr Gpr8(this long OpCode)
+ private static ShaderIrOperGpr Gpr8(this long opCode)
{
- return new ShaderIrOperGpr(OpCode.Read(8, 0xff));
+ return new ShaderIrOperGpr(opCode.Read(8, 0xff));
}
- private static ShaderIrOperGpr Gpr20(this long OpCode)
+ private static ShaderIrOperGpr Gpr20(this long opCode)
{
- return new ShaderIrOperGpr(OpCode.Read(20, 0xff));
+ return new ShaderIrOperGpr(opCode.Read(20, 0xff));
}
- private static ShaderIrOperGpr Gpr39(this long OpCode)
+ private static ShaderIrOperGpr Gpr39(this long opCode)
{
- return new ShaderIrOperGpr(OpCode.Read(39, 0xff));
+ return new ShaderIrOperGpr(opCode.Read(39, 0xff));
}
- private static ShaderIrOperGpr Gpr0(this long OpCode)
+ private static ShaderIrOperGpr Gpr0(this long opCode)
{
- return new ShaderIrOperGpr(OpCode.Read(0, 0xff));
+ return new ShaderIrOperGpr(opCode.Read(0, 0xff));
}
- private static ShaderIrOperGpr Gpr28(this long OpCode)
+ private static ShaderIrOperGpr Gpr28(this long opCode)
{
- return new ShaderIrOperGpr(OpCode.Read(28, 0xff));
+ return new ShaderIrOperGpr(opCode.Read(28, 0xff));
}
- private static ShaderIrOperGpr[] GprHalfVec8(this long OpCode)
+ private static ShaderIrOperGpr[] GprHalfVec8(this long opCode)
{
- return GetGprHalfVec2(OpCode.Read(8, 0xff), OpCode.Read(47, 3));
+ return GetGprHalfVec2(opCode.Read(8, 0xff), opCode.Read(47, 3));
}
- private static ShaderIrOperGpr[] GprHalfVec20(this long OpCode)
+ private static ShaderIrOperGpr[] GprHalfVec20(this long opCode)
{
- return GetGprHalfVec2(OpCode.Read(20, 0xff), OpCode.Read(28, 3));
+ return GetGprHalfVec2(opCode.Read(20, 0xff), opCode.Read(28, 3));
}
- private static ShaderIrOperGpr[] GetGprHalfVec2(int Gpr, int Mask)
+ private static ShaderIrOperGpr[] GetGprHalfVec2(int gpr, int mask)
{
- if (Mask == 1)
+ if (mask == 1)
{
//This value is used for FP32, the whole 32-bits register
//is used as each element on the vector.
return new ShaderIrOperGpr[]
{
- new ShaderIrOperGpr(Gpr),
- new ShaderIrOperGpr(Gpr)
+ new ShaderIrOperGpr(gpr),
+ new ShaderIrOperGpr(gpr)
};
}
- ShaderIrOperGpr Low = new ShaderIrOperGpr(Gpr, 0);
- ShaderIrOperGpr High = new ShaderIrOperGpr(Gpr, 1);
+ ShaderIrOperGpr low = new ShaderIrOperGpr(gpr, 0);
+ ShaderIrOperGpr high = new ShaderIrOperGpr(gpr, 1);
return new ShaderIrOperGpr[]
{
- (Mask & 1) != 0 ? High : Low,
- (Mask & 2) != 0 ? High : Low
+ (mask & 1) != 0 ? high : low,
+ (mask & 2) != 0 ? high : low
};
}
- private static ShaderIrOperGpr GprHalf0(this long OpCode, int HalfPart)
+ private static ShaderIrOperGpr GprHalf0(this long opCode, int halfPart)
{
- return new ShaderIrOperGpr(OpCode.Read(0, 0xff), HalfPart);
+ return new ShaderIrOperGpr(opCode.Read(0, 0xff), halfPart);
}
- private static ShaderIrOperGpr GprHalf28(this long OpCode, int HalfPart)
+ private static ShaderIrOperGpr GprHalf28(this long opCode, int halfPart)
{
- return new ShaderIrOperGpr(OpCode.Read(28, 0xff), HalfPart);
+ return new ShaderIrOperGpr(opCode.Read(28, 0xff), halfPart);
}
- private static ShaderIrOperImm Imm5_39(this long OpCode)
+ private static ShaderIrOperImm Imm5_39(this long opCode)
{
- return new ShaderIrOperImm(OpCode.Read(39, 0x1f));
+ return new ShaderIrOperImm(opCode.Read(39, 0x1f));
}
- private static ShaderIrOperImm Imm13_36(this long OpCode)
+ private static ShaderIrOperImm Imm13_36(this long opCode)
{
- return new ShaderIrOperImm(OpCode.Read(36, 0x1fff));
+ return new ShaderIrOperImm(opCode.Read(36, 0x1fff));
}
- private static ShaderIrOperImm Imm32_20(this long OpCode)
+ private static ShaderIrOperImm Imm32_20(this long opCode)
{
- return new ShaderIrOperImm((int)(OpCode >> 20));
+ return new ShaderIrOperImm((int)(opCode >> 20));
}
- private static ShaderIrOperImmf Immf32_20(this long OpCode)
+ private static ShaderIrOperImmf Immf32_20(this long opCode)
{
- return new ShaderIrOperImmf(BitConverter.Int32BitsToSingle((int)(OpCode >> 20)));
+ return new ShaderIrOperImmf(BitConverter.Int32BitsToSingle((int)(opCode >> 20)));
}
- private static ShaderIrOperImm ImmU16_20(this long OpCode)
+ private static ShaderIrOperImm ImmU16_20(this long opCode)
{
- return new ShaderIrOperImm(OpCode.Read(20, 0xffff));
+ return new ShaderIrOperImm(opCode.Read(20, 0xffff));
}
- private static ShaderIrOperImm Imm19_20(this long OpCode)
+ private static ShaderIrOperImm Imm19_20(this long opCode)
{
- int Value = OpCode.Read(20, 0x7ffff);
+ int value = opCode.Read(20, 0x7ffff);
- bool Neg = OpCode.Read(56);
+ bool neg = opCode.Read(56);
- if (Neg)
+ if (neg)
{
- Value = -Value;
+ value = -value;
}
- return new ShaderIrOperImm(Value);
+ return new ShaderIrOperImm(value);
}
- private static ShaderIrOperImmf Immf19_20(this long OpCode)
+ private static ShaderIrOperImmf Immf19_20(this long opCode)
{
- uint Imm = (uint)(OpCode >> 20) & 0x7ffff;
+ uint imm = (uint)(opCode >> 20) & 0x7ffff;
- bool Neg = OpCode.Read(56);
+ bool neg = opCode.Read(56);
- Imm <<= 12;
+ imm <<= 12;
- if (Neg)
+ if (neg)
{
- Imm |= 0x80000000;
+ imm |= 0x80000000;
}
- float Value = BitConverter.Int32BitsToSingle((int)Imm);
+ float value = BitConverter.Int32BitsToSingle((int)imm);
- return new ShaderIrOperImmf(Value);
+ return new ShaderIrOperImmf(value);
}
- private static ShaderIrOperPred Pred0(this long OpCode)
+ private static ShaderIrOperPred Pred0(this long opCode)
{
- return new ShaderIrOperPred(OpCode.Read(0, 7));
+ return new ShaderIrOperPred(opCode.Read(0, 7));
}
- private static ShaderIrOperPred Pred3(this long OpCode)
+ private static ShaderIrOperPred Pred3(this long opCode)
{
- return new ShaderIrOperPred(OpCode.Read(3, 7));
+ return new ShaderIrOperPred(opCode.Read(3, 7));
}
- private static ShaderIrOperPred Pred12(this long OpCode)
+ private static ShaderIrOperPred Pred12(this long opCode)
{
- return new ShaderIrOperPred(OpCode.Read(12, 7));
+ return new ShaderIrOperPred(opCode.Read(12, 7));
}
- private static ShaderIrOperPred Pred29(this long OpCode)
+ private static ShaderIrOperPred Pred29(this long opCode)
{
- return new ShaderIrOperPred(OpCode.Read(29, 7));
+ return new ShaderIrOperPred(opCode.Read(29, 7));
}
- private static ShaderIrNode Pred39N(this long OpCode)
+ private static ShaderIrNode Pred39N(this long opCode)
{
- ShaderIrNode Node = OpCode.Pred39();
+ ShaderIrNode node = opCode.Pred39();
- if (OpCode.Read(42))
+ if (opCode.Read(42))
{
- Node = new ShaderIrOp(ShaderIrInst.Bnot, Node);
+ node = new ShaderIrOp(ShaderIrInst.Bnot, node);
}
- return Node;
+ return node;
}
- private static ShaderIrOperPred Pred39(this long OpCode)
+ private static ShaderIrOperPred Pred39(this long opCode)
{
- return new ShaderIrOperPred(OpCode.Read(39, 7));
+ return new ShaderIrOperPred(opCode.Read(39, 7));
}
- private static ShaderIrOperPred Pred48(this long OpCode)
+ private static ShaderIrOperPred Pred48(this long opCode)
{
- return new ShaderIrOperPred(OpCode.Read(48, 7));
+ return new ShaderIrOperPred(opCode.Read(48, 7));
}
- private static ShaderIrInst Cmp(this long OpCode)
+ private static ShaderIrInst Cmp(this long opCode)
{
- switch (OpCode.Read(49, 7))
+ switch (opCode.Read(49, 7))
{
case 1: return ShaderIrInst.Clt;
case 2: return ShaderIrInst.Ceq;
@@ -234,12 +234,12 @@ namespace Ryujinx.Graphics.Gal.Shader
case 6: return ShaderIrInst.Cge;
}
- throw new ArgumentException(nameof(OpCode));
+ throw new ArgumentException(nameof(opCode));
}
- private static ShaderIrInst CmpF(this long OpCode)
+ private static ShaderIrInst CmpF(this long opCode)
{
- switch (OpCode.Read(48, 0xf))
+ switch (opCode.Read(48, 0xf))
{
case 0x1: return ShaderIrInst.Fclt;
case 0x2: return ShaderIrInst.Fceq;
@@ -257,57 +257,57 @@ namespace Ryujinx.Graphics.Gal.Shader
case 0xe: return ShaderIrInst.Fcgeu;
}
- throw new ArgumentException(nameof(OpCode));
+ throw new ArgumentException(nameof(opCode));
}
- private static ShaderIrInst BLop45(this long OpCode)
+ private static ShaderIrInst BLop45(this long opCode)
{
- switch (OpCode.Read(45, 3))
+ switch (opCode.Read(45, 3))
{
case 0: return ShaderIrInst.Band;
case 1: return ShaderIrInst.Bor;
case 2: return ShaderIrInst.Bxor;
}
- throw new ArgumentException(nameof(OpCode));
+ throw new ArgumentException(nameof(opCode));
}
- private static ShaderIrInst BLop24(this long OpCode)
+ private static ShaderIrInst BLop24(this long opCode)
{
- switch (OpCode.Read(24, 3))
+ switch (opCode.Read(24, 3))
{
case 0: return ShaderIrInst.Band;
case 1: return ShaderIrInst.Bor;
case 2: return ShaderIrInst.Bxor;
}
- throw new ArgumentException(nameof(OpCode));
+ throw new ArgumentException(nameof(opCode));
}
- private static ShaderIrNode PredNode(this long OpCode, ShaderIrNode Node)
+ private static ShaderIrNode PredNode(this long opCode, ShaderIrNode node)
{
- ShaderIrOperPred Pred = OpCode.PredNode();
+ ShaderIrOperPred pred = opCode.PredNode();
- if (Pred.Index != ShaderIrOperPred.UnusedIndex)
+ if (pred.Index != ShaderIrOperPred.UnusedIndex)
{
- bool Inv = OpCode.Read(19);
+ bool inv = opCode.Read(19);
- Node = new ShaderIrCond(Pred, Node, Inv);
+ node = new ShaderIrCond(pred, node, inv);
}
- return Node;
+ return node;
}
- private static ShaderIrOperPred PredNode(this long OpCode)
+ private static ShaderIrOperPred PredNode(this long opCode)
{
- int Pred = OpCode.Read(16, 0xf);
+ int pred = opCode.Read(16, 0xf);
- if (Pred != 0xf)
+ if (pred != 0xf)
{
- Pred &= 7;
+ pred &= 7;
}
- return new ShaderIrOperPred(Pred);
+ return new ShaderIrOperPred(pred);
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeSpecial.cs b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeSpecial.cs
index 35abdb76..9098ca5e 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeSpecial.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeSpecial.cs
@@ -2,23 +2,23 @@
{
static partial class ShaderDecode
{
- public static void Out_R(ShaderIrBlock Block, long OpCode, int Position)
+ public static void Out_R(ShaderIrBlock block, long opCode, int position)
{
//TODO: Those registers have to be used for something
- ShaderIrOperGpr Gpr0 = OpCode.Gpr0();
- ShaderIrOperGpr Gpr8 = OpCode.Gpr8();
- ShaderIrOperGpr Gpr20 = OpCode.Gpr20();
+ ShaderIrOperGpr gpr0 = opCode.Gpr0();
+ ShaderIrOperGpr gpr8 = opCode.Gpr8();
+ ShaderIrOperGpr gpr20 = opCode.Gpr20();
- int Type = OpCode.Read(39, 3);
+ int type = opCode.Read(39, 3);
- if ((Type & 1) != 0)
+ if ((type & 1) != 0)
{
- Block.AddNode(OpCode.PredNode(new ShaderIrOp(ShaderIrInst.Emit)));
+ block.AddNode(opCode.PredNode(new ShaderIrOp(ShaderIrInst.Emit)));
}
- if ((Type & 2) != 0)
+ if ((type & 2) != 0)
{
- Block.AddNode(OpCode.PredNode(new ShaderIrOp(ShaderIrInst.Cut)));
+ block.AddNode(opCode.PredNode(new ShaderIrOp(ShaderIrInst.Cut)));
}
}
}
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderDecoder.cs b/Ryujinx.Graphics/Gal/Shader/ShaderDecoder.cs
index f8c07f31..4b23f8d0 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderDecoder.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderDecoder.cs
@@ -8,74 +8,74 @@ namespace Ryujinx.Graphics.Gal.Shader
private const bool AddDbgComments = true;
- public static ShaderIrBlock[] Decode(IGalMemory Memory, long Start)
+ public static ShaderIrBlock[] Decode(IGalMemory memory, long start)
{
- Dictionary<int, ShaderIrBlock> Visited = new Dictionary<int, ShaderIrBlock>();
- Dictionary<int, ShaderIrBlock> VisitedEnd = new Dictionary<int, ShaderIrBlock>();
+ Dictionary<int, ShaderIrBlock> visited = new Dictionary<int, ShaderIrBlock>();
+ Dictionary<int, ShaderIrBlock> visitedEnd = new Dictionary<int, ShaderIrBlock>();
- Queue<ShaderIrBlock> Blocks = new Queue<ShaderIrBlock>();
+ Queue<ShaderIrBlock> blocks = new Queue<ShaderIrBlock>();
- long Beginning = Start + HeaderSize;
+ long beginning = start + HeaderSize;
- ShaderIrBlock Enqueue(int Position, ShaderIrBlock Source = null)
+ ShaderIrBlock Enqueue(int position, ShaderIrBlock source = null)
{
- if (!Visited.TryGetValue(Position, out ShaderIrBlock Output))
+ if (!visited.TryGetValue(position, out ShaderIrBlock output))
{
- Output = new ShaderIrBlock(Position);
+ output = new ShaderIrBlock(position);
- Blocks.Enqueue(Output);
+ blocks.Enqueue(output);
- Visited.Add(Position, Output);
+ visited.Add(position, output);
}
- if (Source != null)
+ if (source != null)
{
- Output.Sources.Add(Source);
+ output.Sources.Add(source);
}
- return Output;
+ return output;
}
- ShaderIrBlock Entry = Enqueue(0);
+ ShaderIrBlock entry = Enqueue(0);
- while (Blocks.Count > 0)
+ while (blocks.Count > 0)
{
- ShaderIrBlock Current = Blocks.Dequeue();
+ ShaderIrBlock current = blocks.Dequeue();
- FillBlock(Memory, Current, Beginning);
+ FillBlock(memory, current, beginning);
//Set child blocks. "Branch" is the block the branch instruction
//points to (when taken), "Next" is the block at the next address,
//executed when the branch is not taken. For Unconditional Branches
//or end of shader, Next is null.
- if (Current.Nodes.Count > 0)
+ if (current.Nodes.Count > 0)
{
- ShaderIrNode LastNode = Current.GetLastNode();
+ ShaderIrNode lastNode = current.GetLastNode();
- ShaderIrOp InnerOp = GetInnermostOp(LastNode);
+ ShaderIrOp innerOp = GetInnermostOp(lastNode);
- if (InnerOp?.Inst == ShaderIrInst.Bra)
+ if (innerOp?.Inst == ShaderIrInst.Bra)
{
- int Target = ((ShaderIrOperImm)InnerOp.OperandA).Value;
+ int target = ((ShaderIrOperImm)innerOp.OperandA).Value;
- Current.Branch = Enqueue(Target, Current);
+ current.Branch = Enqueue(target, current);
}
- foreach (ShaderIrNode Node in Current.Nodes)
+ foreach (ShaderIrNode node in current.Nodes)
{
- InnerOp = GetInnermostOp(Node);
+ innerOp = GetInnermostOp(node);
- if (InnerOp is ShaderIrOp CurrOp && CurrOp.Inst == ShaderIrInst.Ssy)
+ if (innerOp is ShaderIrOp currOp && currOp.Inst == ShaderIrInst.Ssy)
{
- int Target = ((ShaderIrOperImm)CurrOp.OperandA).Value;
+ int target = ((ShaderIrOperImm)currOp.OperandA).Value;
- Enqueue(Target, Current);
+ Enqueue(target, current);
}
}
- if (NodeHasNext(LastNode))
+ if (NodeHasNext(lastNode))
{
- Current.Next = Enqueue(Current.EndPosition);
+ current.Next = Enqueue(current.EndPosition);
}
}
@@ -83,136 +83,136 @@ namespace Ryujinx.Graphics.Gal.Shader
//then we need to split the bigger block and have two small blocks,
//the end position of the bigger "Current" block should then be == to
//the position of the "Smaller" block.
- while (VisitedEnd.TryGetValue(Current.EndPosition, out ShaderIrBlock Smaller))
+ while (visitedEnd.TryGetValue(current.EndPosition, out ShaderIrBlock smaller))
{
- if (Current.Position > Smaller.Position)
+ if (current.Position > smaller.Position)
{
- ShaderIrBlock Temp = Smaller;
+ ShaderIrBlock temp = smaller;
- Smaller = Current;
- Current = Temp;
+ smaller = current;
+ current = temp;
}
- Current.EndPosition = Smaller.Position;
- Current.Next = Smaller;
- Current.Branch = null;
+ current.EndPosition = smaller.Position;
+ current.Next = smaller;
+ current.Branch = null;
- Current.Nodes.RemoveRange(
- Current.Nodes.Count - Smaller.Nodes.Count,
- Smaller.Nodes.Count);
+ current.Nodes.RemoveRange(
+ current.Nodes.Count - smaller.Nodes.Count,
+ smaller.Nodes.Count);
- VisitedEnd[Smaller.EndPosition] = Smaller;
+ visitedEnd[smaller.EndPosition] = smaller;
}
- VisitedEnd.Add(Current.EndPosition, Current);
+ visitedEnd.Add(current.EndPosition, current);
}
//Make and sort Graph blocks array by position.
- ShaderIrBlock[] Graph = new ShaderIrBlock[Visited.Count];
+ ShaderIrBlock[] graph = new ShaderIrBlock[visited.Count];
- while (Visited.Count > 0)
+ while (visited.Count > 0)
{
- uint FirstPos = uint.MaxValue;
+ uint firstPos = uint.MaxValue;
- foreach (ShaderIrBlock Block in Visited.Values)
+ foreach (ShaderIrBlock block in visited.Values)
{
- if (FirstPos > (uint)Block.Position)
- FirstPos = (uint)Block.Position;
+ if (firstPos > (uint)block.Position)
+ firstPos = (uint)block.Position;
}
- ShaderIrBlock Current = Visited[(int)FirstPos];
+ ShaderIrBlock current = visited[(int)firstPos];
do
{
- Graph[Graph.Length - Visited.Count] = Current;
+ graph[graph.Length - visited.Count] = current;
- Visited.Remove(Current.Position);
+ visited.Remove(current.Position);
- Current = Current.Next;
+ current = current.Next;
}
- while (Current != null);
+ while (current != null);
}
- return Graph;
+ return graph;
}
- private static void FillBlock(IGalMemory Memory, ShaderIrBlock Block, long Beginning)
+ private static void FillBlock(IGalMemory memory, ShaderIrBlock block, long beginning)
{
- int Position = Block.Position;
+ int position = block.Position;
do
{
//Ignore scheduling instructions, which are written every 32 bytes.
- if ((Position & 0x1f) == 0)
+ if ((position & 0x1f) == 0)
{
- Position += 8;
+ position += 8;
continue;
}
- uint Word0 = (uint)Memory.ReadInt32(Position + Beginning + 0);
- uint Word1 = (uint)Memory.ReadInt32(Position + Beginning + 4);
+ uint word0 = (uint)memory.ReadInt32(position + beginning + 0);
+ uint word1 = (uint)memory.ReadInt32(position + beginning + 4);
- Position += 8;
+ position += 8;
- long OpCode = Word0 | (long)Word1 << 32;
+ long opCode = word0 | (long)word1 << 32;
- ShaderDecodeFunc Decode = ShaderOpCodeTable.GetDecoder(OpCode);
+ ShaderDecodeFunc decode = ShaderOpCodeTable.GetDecoder(opCode);
if (AddDbgComments)
{
- string DbgOpCode = $"0x{(Position - 8):x16}: 0x{OpCode:x16} ";
+ string dbgOpCode = $"0x{(position - 8):x16}: 0x{opCode:x16} ";
- DbgOpCode += (Decode?.Method.Name ?? "???");
+ dbgOpCode += (decode?.Method.Name ?? "???");
- if (Decode == ShaderDecode.Bra || Decode == ShaderDecode.Ssy)
+ if (decode == ShaderDecode.Bra || decode == ShaderDecode.Ssy)
{
- int Offset = ((int)(OpCode >> 20) << 8) >> 8;
+ int offset = ((int)(opCode >> 20) << 8) >> 8;
- long Target = Position + Offset;
+ long target = position + offset;
- DbgOpCode += " (0x" + Target.ToString("x16") + ")";
+ dbgOpCode += " (0x" + target.ToString("x16") + ")";
}
- Block.AddNode(new ShaderIrCmnt(DbgOpCode));
+ block.AddNode(new ShaderIrCmnt(dbgOpCode));
}
- if (Decode == null)
+ if (decode == null)
{
continue;
}
- Decode(Block, OpCode, Position);
+ decode(block, opCode, position);
}
- while (!IsFlowChange(Block.GetLastNode()));
+ while (!IsFlowChange(block.GetLastNode()));
- Block.EndPosition = Position;
+ block.EndPosition = position;
}
- private static bool IsFlowChange(ShaderIrNode Node)
+ private static bool IsFlowChange(ShaderIrNode node)
{
- return !NodeHasNext(GetInnermostOp(Node));
+ return !NodeHasNext(GetInnermostOp(node));
}
- private static ShaderIrOp GetInnermostOp(ShaderIrNode Node)
+ private static ShaderIrOp GetInnermostOp(ShaderIrNode node)
{
- if (Node is ShaderIrCond Cond)
+ if (node is ShaderIrCond cond)
{
- Node = Cond.Child;
+ node = cond.Child;
}
- return Node is ShaderIrOp Op ? Op : null;
+ return node is ShaderIrOp op ? op : null;
}
- private static bool NodeHasNext(ShaderIrNode Node)
+ private static bool NodeHasNext(ShaderIrNode node)
{
- if (!(Node is ShaderIrOp Op))
+ if (!(node is ShaderIrOp op))
{
return true;
}
- return Op.Inst != ShaderIrInst.Exit &&
- Op.Inst != ShaderIrInst.Bra;
+ return op.Inst != ShaderIrInst.Exit &&
+ op.Inst != ShaderIrInst.Bra;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderHeader.cs b/Ryujinx.Graphics/Gal/Shader/ShaderHeader.cs
index eca90fc3..2f9326e1 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderHeader.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderHeader.cs
@@ -11,9 +11,9 @@ namespace Ryujinx.Graphics.Gal.Shader
public bool Enabled => Red || Green || Blue || Alpha;
- public bool ComponentEnabled(int Component)
+ public bool ComponentEnabled(int component)
{
- switch (Component)
+ switch (component)
{
case 0: return Red;
case 1: return Green;
@@ -21,7 +21,7 @@ namespace Ryujinx.Graphics.Gal.Shader
case 3: return Alpha;
}
- throw new ArgumentException(nameof(Component));
+ throw new ArgumentException(nameof(component));
}
}
@@ -59,88 +59,88 @@ namespace Ryujinx.Graphics.Gal.Shader
public bool OmapSampleMask { get; private set; }
public bool OmapDepth { get; private set; }
- public ShaderHeader(IGalMemory Memory, long Position)
+ public ShaderHeader(IGalMemory memory, long position)
{
- uint CommonWord0 = (uint)Memory.ReadInt32(Position + 0);
- uint CommonWord1 = (uint)Memory.ReadInt32(Position + 4);
- uint CommonWord2 = (uint)Memory.ReadInt32(Position + 8);
- uint CommonWord3 = (uint)Memory.ReadInt32(Position + 12);
- uint CommonWord4 = (uint)Memory.ReadInt32(Position + 16);
-
- SphType = ReadBits(CommonWord0, 0, 5);
- Version = ReadBits(CommonWord0, 5, 5);
- ShaderType = ReadBits(CommonWord0, 10, 4);
- MrtEnable = ReadBits(CommonWord0, 14, 1) != 0;
- KillsPixels = ReadBits(CommonWord0, 15, 1) != 0;
- DoesGlobalStore = ReadBits(CommonWord0, 16, 1) != 0;
- SassVersion = ReadBits(CommonWord0, 17, 4);
- DoesLoadOrStore = ReadBits(CommonWord0, 26, 1) != 0;
- DoesFp64 = ReadBits(CommonWord0, 27, 1) != 0;
- StreamOutMask = ReadBits(CommonWord0, 28, 4);
-
- ShaderLocalMemoryLowSize = ReadBits(CommonWord1, 0, 24);
- PerPatchAttributeCount = ReadBits(CommonWord1, 24, 8);
-
- ShaderLocalMemoryHighSize = ReadBits(CommonWord2, 0, 24);
- ThreadsPerInputPrimitive = ReadBits(CommonWord2, 24, 8);
-
- ShaderLocalMemoryCrsSize = ReadBits(CommonWord3, 0, 24);
- OutputTopology = ReadBits(CommonWord3, 24, 4);
-
- MaxOutputVertexCount = ReadBits(CommonWord4, 0, 12);
- StoreReqStart = ReadBits(CommonWord4, 12, 8);
- StoreReqEnd = ReadBits(CommonWord4, 24, 8);
+ uint commonWord0 = (uint)memory.ReadInt32(position + 0);
+ uint commonWord1 = (uint)memory.ReadInt32(position + 4);
+ uint commonWord2 = (uint)memory.ReadInt32(position + 8);
+ uint commonWord3 = (uint)memory.ReadInt32(position + 12);
+ uint commonWord4 = (uint)memory.ReadInt32(position + 16);
+
+ SphType = ReadBits(commonWord0, 0, 5);
+ Version = ReadBits(commonWord0, 5, 5);
+ ShaderType = ReadBits(commonWord0, 10, 4);
+ MrtEnable = ReadBits(commonWord0, 14, 1) != 0;
+ KillsPixels = ReadBits(commonWord0, 15, 1) != 0;
+ DoesGlobalStore = ReadBits(commonWord0, 16, 1) != 0;
+ SassVersion = ReadBits(commonWord0, 17, 4);
+ DoesLoadOrStore = ReadBits(commonWord0, 26, 1) != 0;
+ DoesFp64 = ReadBits(commonWord0, 27, 1) != 0;
+ StreamOutMask = ReadBits(commonWord0, 28, 4);
+
+ ShaderLocalMemoryLowSize = ReadBits(commonWord1, 0, 24);
+ PerPatchAttributeCount = ReadBits(commonWord1, 24, 8);
+
+ ShaderLocalMemoryHighSize = ReadBits(commonWord2, 0, 24);
+ ThreadsPerInputPrimitive = ReadBits(commonWord2, 24, 8);
+
+ ShaderLocalMemoryCrsSize = ReadBits(commonWord3, 0, 24);
+ OutputTopology = ReadBits(commonWord3, 24, 4);
+
+ MaxOutputVertexCount = ReadBits(commonWord4, 0, 12);
+ StoreReqStart = ReadBits(commonWord4, 12, 8);
+ StoreReqEnd = ReadBits(commonWord4, 24, 8);
//Type 2 (fragment?) reading
- uint Type2OmapTarget = (uint)Memory.ReadInt32(Position + 72);
- uint Type2Omap = (uint)Memory.ReadInt32(Position + 76);
+ uint type2OmapTarget = (uint)memory.ReadInt32(position + 72);
+ uint type2Omap = (uint)memory.ReadInt32(position + 76);
OmapTargets = new OmapTarget[8];
for (int i = 0; i < OmapTargets.Length; i++)
{
- int Offset = i * 4;
+ int offset = i * 4;
OmapTargets[i] = new OmapTarget
{
- Red = ReadBits(Type2OmapTarget, Offset + 0, 1) != 0,
- Green = ReadBits(Type2OmapTarget, Offset + 1, 1) != 0,
- Blue = ReadBits(Type2OmapTarget, Offset + 2, 1) != 0,
- Alpha = ReadBits(Type2OmapTarget, Offset + 3, 1) != 0
+ Red = ReadBits(type2OmapTarget, offset + 0, 1) != 0,
+ Green = ReadBits(type2OmapTarget, offset + 1, 1) != 0,
+ Blue = ReadBits(type2OmapTarget, offset + 2, 1) != 0,
+ Alpha = ReadBits(type2OmapTarget, offset + 3, 1) != 0
};
}
- OmapSampleMask = ReadBits(Type2Omap, 0, 1) != 0;
- OmapDepth = ReadBits(Type2Omap, 1, 1) != 0;
+ OmapSampleMask = ReadBits(type2Omap, 0, 1) != 0;
+ OmapDepth = ReadBits(type2Omap, 1, 1) != 0;
}
public int DepthRegister
{
get
{
- int Count = 0;
+ int count = 0;
- for (int Index = 0; Index < OmapTargets.Length; Index++)
+ for (int index = 0; index < OmapTargets.Length; index++)
{
- for (int Component = 0; Component < 4; Component++)
+ for (int component = 0; component < 4; component++)
{
- if (OmapTargets[Index].ComponentEnabled(Component))
+ if (OmapTargets[index].ComponentEnabled(component))
{
- Count++;
+ count++;
}
}
}
// Depth register is always two registers after the last color output
- return Count + 1;
+ return count + 1;
}
}
- private static int ReadBits(uint Word, int Offset, int BitWidth)
+ private static int ReadBits(uint word, int offset, int bitWidth)
{
- uint Mask = (1u << BitWidth) - 1u;
+ uint mask = (1u << bitWidth) - 1u;
- return (int)((Word >> Offset) & Mask);
+ return (int)((word >> offset) & mask);
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderIrAsg.cs b/Ryujinx.Graphics/Gal/Shader/ShaderIrAsg.cs
index 00f8f6a5..53871a14 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderIrAsg.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderIrAsg.cs
@@ -5,10 +5,10 @@ namespace Ryujinx.Graphics.Gal.Shader
public ShaderIrNode Dst { get; set; }
public ShaderIrNode Src { get; set; }
- public ShaderIrAsg(ShaderIrNode Dst, ShaderIrNode Src)
+ public ShaderIrAsg(ShaderIrNode dst, ShaderIrNode src)
{
- this.Dst = Dst;
- this.Src = Src;
+ Dst = dst;
+ Src = src;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderIrBlock.cs b/Ryujinx.Graphics/Gal/Shader/ShaderIrBlock.cs
index 782f9626..49257d28 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderIrBlock.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderIrBlock.cs
@@ -14,18 +14,18 @@ namespace Ryujinx.Graphics.Gal.Shader
public List<ShaderIrNode> Nodes { get; private set; }
- public ShaderIrBlock(int Position)
+ public ShaderIrBlock(int position)
{
- this.Position = Position;
+ Position = position;
Sources = new List<ShaderIrBlock>();
Nodes = new List<ShaderIrNode>();
}
- public void AddNode(ShaderIrNode Node)
+ public void AddNode(ShaderIrNode node)
{
- Nodes.Add(Node);
+ Nodes.Add(node);
}
public ShaderIrNode[] GetNodes()
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderIrCmnt.cs b/Ryujinx.Graphics/Gal/Shader/ShaderIrCmnt.cs
index 03031ec5..5da04e5e 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderIrCmnt.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderIrCmnt.cs
@@ -4,9 +4,9 @@ namespace Ryujinx.Graphics.Gal.Shader
{
public string Comment { get; private set; }
- public ShaderIrCmnt(string Comment)
+ public ShaderIrCmnt(string comment)
{
- this.Comment = Comment;
+ Comment = comment;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderIrCond.cs b/Ryujinx.Graphics/Gal/Shader/ShaderIrCond.cs
index 8fb01660..34acf90d 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderIrCond.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderIrCond.cs
@@ -7,11 +7,11 @@ namespace Ryujinx.Graphics.Gal.Shader
public bool Not { get; private set; }
- public ShaderIrCond(ShaderIrNode Pred, ShaderIrNode Child, bool Not)
+ public ShaderIrCond(ShaderIrNode pred, ShaderIrNode child, bool not)
{
- this.Pred = Pred;
- this.Child = Child;
- this.Not = Not;
+ Pred = pred;
+ Child = child;
+ Not = not;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderIrMetaIpa.cs b/Ryujinx.Graphics/Gal/Shader/ShaderIrMetaIpa.cs
index 3b884621..07db6467 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderIrMetaIpa.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderIrMetaIpa.cs
@@ -4,9 +4,9 @@
{
public ShaderIpaMode Mode { get; private set; }
- public ShaderIrMetaIpa(ShaderIpaMode Mode)
+ public ShaderIrMetaIpa(ShaderIpaMode mode)
{
- this.Mode = Mode;
+ Mode = mode;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderIrMetaTex.cs b/Ryujinx.Graphics/Gal/Shader/ShaderIrMetaTex.cs
index 72ea221a..e0265138 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderIrMetaTex.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderIrMetaTex.cs
@@ -13,12 +13,12 @@ namespace Ryujinx.Graphics.Gal.Shader
public ShaderIrOperGpr DepthCompare;
public int Component; // for TLD4(S)
- public ShaderIrMetaTex(int Elem, GalTextureTarget TextureTarget, TextureInstructionSuffix TextureInstructionSuffix, params ShaderIrNode[] Coordinates)
+ public ShaderIrMetaTex(int elem, GalTextureTarget textureTarget, TextureInstructionSuffix textureInstructionSuffix, params ShaderIrNode[] coordinates)
{
- this.Elem = Elem;
- this.TextureTarget = TextureTarget;
- this.TextureInstructionSuffix = TextureInstructionSuffix;
- this.Coordinates = Coordinates;
+ Elem = elem;
+ TextureTarget = textureTarget;
+ TextureInstructionSuffix = textureInstructionSuffix;
+ Coordinates = coordinates;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderIrMetaTexq.cs b/Ryujinx.Graphics/Gal/Shader/ShaderIrMetaTexq.cs
index 92871137..c925ea4e 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderIrMetaTexq.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderIrMetaTexq.cs
@@ -6,10 +6,10 @@ namespace Ryujinx.Graphics.Gal.Shader
public int Elem { get; private set; }
- public ShaderIrMetaTexq(ShaderTexqInfo Info, int Elem)
+ public ShaderIrMetaTexq(ShaderTexqInfo info, int elem)
{
- this.Info = Info;
- this.Elem = Elem;
+ Info = info;
+ Elem = elem;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderIrOp.cs b/Ryujinx.Graphics/Gal/Shader/ShaderIrOp.cs
index 12a6123c..c91c3926 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderIrOp.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderIrOp.cs
@@ -9,17 +9,17 @@ namespace Ryujinx.Graphics.Gal.Shader
public ShaderIrMeta MetaData { get; set; }
public ShaderIrOp(
- ShaderIrInst Inst,
- ShaderIrNode OperandA = null,
- ShaderIrNode OperandB = null,
- ShaderIrNode OperandC = null,
- ShaderIrMeta MetaData = null)
+ ShaderIrInst inst,
+ ShaderIrNode operandA = null,
+ ShaderIrNode operandB = null,
+ ShaderIrNode operandC = null,
+ ShaderIrMeta metaData = null)
{
- this.Inst = Inst;
- this.OperandA = OperandA;
- this.OperandB = OperandB;
- this.OperandC = OperandC;
- this.MetaData = MetaData;
+ Inst = inst;
+ OperandA = operandA;
+ OperandB = operandB;
+ OperandC = operandC;
+ MetaData = metaData;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderIrOperAbuf.cs b/Ryujinx.Graphics/Gal/Shader/ShaderIrOperAbuf.cs
index f17d9c0e..1f339e80 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderIrOperAbuf.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderIrOperAbuf.cs
@@ -6,10 +6,10 @@ namespace Ryujinx.Graphics.Gal.Shader
public ShaderIrNode Vertex { get; private set; }
- public ShaderIrOperAbuf(int Offs, ShaderIrNode Vertex)
+ public ShaderIrOperAbuf(int offs, ShaderIrNode vertex)
{
- this.Offs = Offs;
- this.Vertex = Vertex;
+ Offs = offs;
+ Vertex = vertex;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderIrOperCbuf.cs b/Ryujinx.Graphics/Gal/Shader/ShaderIrOperCbuf.cs
index b040c5c6..9f419bbb 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderIrOperCbuf.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderIrOperCbuf.cs
@@ -7,11 +7,11 @@ namespace Ryujinx.Graphics.Gal.Shader
public ShaderIrNode Offs { get; private set; }
- public ShaderIrOperCbuf(int Index, int Pos, ShaderIrNode Offs = null)
+ public ShaderIrOperCbuf(int index, int pos, ShaderIrNode offs = null)
{
- this.Index = Index;
- this.Pos = Pos;
- this.Offs = Offs;
+ Index = index;
+ Pos = pos;
+ Offs = offs;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderIrOperGpr.cs b/Ryujinx.Graphics/Gal/Shader/ShaderIrOperGpr.cs
index b4a5cab4..0d102d89 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderIrOperGpr.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderIrOperGpr.cs
@@ -2,35 +2,35 @@ namespace Ryujinx.Graphics.Gal.Shader
{
class ShaderIrOperGpr : ShaderIrNode
{
- public const int ZRIndex = 0xff;
+ public const int ZrIndex = 0xff;
- public bool IsConst => Index == ZRIndex;
+ public bool IsConst => Index == ZrIndex;
- public bool IsValidRegister => (uint)Index <= ZRIndex;
+ public bool IsValidRegister => (uint)Index <= ZrIndex;
public int Index { get; set; }
public int HalfPart { get; set; }
public ShaderRegisterSize RegisterSize { get; private set; }
- public ShaderIrOperGpr(int Index)
+ public ShaderIrOperGpr(int index)
{
- this.Index = Index;
+ Index = index;
RegisterSize = ShaderRegisterSize.Single;
}
- public ShaderIrOperGpr(int Index, int HalfPart)
+ public ShaderIrOperGpr(int index, int halfPart)
{
- this.Index = Index;
- this.HalfPart = HalfPart;
+ Index = index;
+ HalfPart = halfPart;
RegisterSize = ShaderRegisterSize.Half;
}
- public static ShaderIrOperGpr MakeTemporary(int Index = 0)
+ public static ShaderIrOperGpr MakeTemporary(int index = 0)
{
- return new ShaderIrOperGpr(0x100 + Index);
+ return new ShaderIrOperGpr(0x100 + index);
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderIrOperImm.cs b/Ryujinx.Graphics/Gal/Shader/ShaderIrOperImm.cs
index ba2c2c9b..6b23b365 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderIrOperImm.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderIrOperImm.cs
@@ -4,9 +4,9 @@ namespace Ryujinx.Graphics.Gal.Shader
{
public int Value { get; private set; }
- public ShaderIrOperImm(int Value)
+ public ShaderIrOperImm(int value)
{
- this.Value = Value;
+ Value = value;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderIrOperImmf.cs b/Ryujinx.Graphics/Gal/Shader/ShaderIrOperImmf.cs
index 3c27e483..5b08c5b1 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderIrOperImmf.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderIrOperImmf.cs
@@ -4,9 +4,9 @@ namespace Ryujinx.Graphics.Gal.Shader
{
public float Value { get; private set; }
- public ShaderIrOperImmf(float Value)
+ public ShaderIrOperImmf(float value)
{
- this.Value = Value;
+ Value = value;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderIrOperPred.cs b/Ryujinx.Graphics/Gal/Shader/ShaderIrOperPred.cs
index 74cca0ef..6c16a145 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderIrOperPred.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderIrOperPred.cs
@@ -9,9 +9,9 @@ namespace Ryujinx.Graphics.Gal.Shader
public int Index { get; set; }
- public ShaderIrOperPred(int Index)
+ public ShaderIrOperPred(int index)
{
- this.Index = Index;
+ Index = index;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderOpCodeTable.cs b/Ryujinx.Graphics/Gal/Shader/ShaderOpCodeTable.cs
index d2bbd38c..1edf91a0 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderOpCodeTable.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderOpCodeTable.cs
@@ -12,18 +12,18 @@ namespace Ryujinx.Graphics.Gal.Shader
public int XBits;
- public ShaderDecodeEntry(ShaderDecodeFunc Func, int XBits)
+ public ShaderDecodeEntry(ShaderDecodeFunc func, int xBits)
{
- this.Func = Func;
- this.XBits = XBits;
+ Func = func;
+ XBits = xBits;
}
}
- private static ShaderDecodeEntry[] OpCodes;
+ private static ShaderDecodeEntry[] _opCodes;
static ShaderOpCodeTable()
{
- OpCodes = new ShaderDecodeEntry[1 << EncodingBits];
+ _opCodes = new ShaderDecodeEntry[1 << EncodingBits];
#region Instructions
Set("0100110000000x", ShaderDecode.Bfe_C);
@@ -123,7 +123,7 @@ namespace Ryujinx.Graphics.Gal.Shader
Set("1101x00xxxxxxx", ShaderDecode.Texs);
Set("1101101xxxxxxx", ShaderDecode.Tlds);
Set("110010xxxx111x", ShaderDecode.Tld4);
- Set("1101111100xxxx", ShaderDecode.Tld4s);
+ Set("1101111100xxxx", ShaderDecode.Tld4S);
Set("01011111xxxxxx", ShaderDecode.Vmad);
Set("0100111xxxxxxx", ShaderDecode.Xmad_CR);
Set("0011011x00xxxx", ShaderDecode.Xmad_I);
@@ -132,59 +132,59 @@ namespace Ryujinx.Graphics.Gal.Shader
#endregion
}
- private static void Set(string Encoding, ShaderDecodeFunc Func)
+ private static void Set(string encoding, ShaderDecodeFunc func)
{
- if (Encoding.Length != EncodingBits)
+ if (encoding.Length != EncodingBits)
{
- throw new ArgumentException(nameof(Encoding));
+ throw new ArgumentException(nameof(encoding));
}
- int Bit = Encoding.Length - 1;
- int Value = 0;
- int XMask = 0;
- int XBits = 0;
+ int bit = encoding.Length - 1;
+ int value = 0;
+ int xMask = 0;
+ int xBits = 0;
- int[] XPos = new int[Encoding.Length];
+ int[] xPos = new int[encoding.Length];
- for (int Index = 0; Index < Encoding.Length; Index++, Bit--)
+ for (int index = 0; index < encoding.Length; index++, bit--)
{
- char Chr = Encoding[Index];
+ char chr = encoding[index];
- if (Chr == '1')
+ if (chr == '1')
{
- Value |= 1 << Bit;
+ value |= 1 << bit;
}
- else if (Chr == 'x')
+ else if (chr == 'x')
{
- XMask |= 1 << Bit;
+ xMask |= 1 << bit;
- XPos[XBits++] = Bit;
+ xPos[xBits++] = bit;
}
}
- XMask = ~XMask;
+ xMask = ~xMask;
- ShaderDecodeEntry Entry = new ShaderDecodeEntry(Func, XBits);
+ ShaderDecodeEntry entry = new ShaderDecodeEntry(func, xBits);
- for (int Index = 0; Index < (1 << XBits); Index++)
+ for (int index = 0; index < (1 << xBits); index++)
{
- Value &= XMask;
+ value &= xMask;
- for (int X = 0; X < XBits; X++)
+ for (int x = 0; x < xBits; x++)
{
- Value |= ((Index >> X) & 1) << XPos[X];
+ value |= ((index >> x) & 1) << xPos[x];
}
- if (OpCodes[Value] == null || OpCodes[Value].XBits > XBits)
+ if (_opCodes[value] == null || _opCodes[value].XBits > xBits)
{
- OpCodes[Value] = Entry;
+ _opCodes[value] = entry;
}
}
}
- public static ShaderDecodeFunc GetDecoder(long OpCode)
+ public static ShaderDecodeFunc GetDecoder(long opCode)
{
- return OpCodes[(ulong)OpCode >> (64 - EncodingBits)]?.Func;
+ return _opCodes[(ulong)opCode >> (64 - EncodingBits)]?.Func;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderOper.cs b/Ryujinx.Graphics/Gal/Shader/ShaderOper.cs
index aa485482..22a2ab85 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderOper.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderOper.cs
@@ -2,10 +2,10 @@ namespace Ryujinx.Graphics.Gal.Shader
{
enum ShaderOper
{
- CR,
+ Cr,
Imm,
Immf,
- RC,
- RR
+ Rc,
+ Rr
}
} \ No newline at end of file