aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Shader/Translation/Rewriter.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Graphics.Shader/Translation/Rewriter.cs')
-rw-r--r--src/Ryujinx.Graphics.Shader/Translation/Rewriter.cs75
1 files changed, 35 insertions, 40 deletions
diff --git a/src/Ryujinx.Graphics.Shader/Translation/Rewriter.cs b/src/Ryujinx.Graphics.Shader/Translation/Rewriter.cs
index f5a524a0..42e3ecee 100644
--- a/src/Ryujinx.Graphics.Shader/Translation/Rewriter.cs
+++ b/src/Ryujinx.Graphics.Shader/Translation/Rewriter.cs
@@ -4,7 +4,6 @@ using Ryujinx.Graphics.Shader.Translation.Optimizations;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
-
using static Ryujinx.Graphics.Shader.IntermediateRepresentation.OperandHelper;
namespace Ryujinx.Graphics.Shader.Translation
@@ -134,7 +133,7 @@ namespace Ryujinx.Graphics.Shader.Translation
AggregateType.Vector2 => 2,
AggregateType.Vector3 => 3,
AggregateType.Vector4 => 4,
- _ => 1
+ _ => 1,
};
if (elemCount == 1)
@@ -154,9 +153,9 @@ namespace Ryujinx.Graphics.Shader.Translation
inputs[srcIndex] = operation.GetSource(srcIndex);
}
- inputs[inputs.Length - 1] = Const(i);
+ inputs[^1] = Const(i);
- Operation loadOp = new Operation(Instruction.Load, StorageKind.ConstantBuffer, value, inputs);
+ Operation loadOp = new(Instruction.Load, StorageKind.ConstantBuffer, value, inputs);
node.List.AddBefore(node, loadOp);
@@ -169,8 +168,8 @@ namespace Ryujinx.Graphics.Shader.Translation
Operand isCurrentIndex = Local();
Operand selection = Local();
- Operation compareOp = new Operation(Instruction.CompareEqual, isCurrentIndex, new Operand[] { elemIndex, Const(i) });
- Operation selectOp = new Operation(Instruction.ConditionalSelect, selection, new Operand[] { isCurrentIndex, value, result });
+ Operation compareOp = new(Instruction.CompareEqual, isCurrentIndex, new Operand[] { elemIndex, Const(i) });
+ Operation selectOp = new(Instruction.ConditionalSelect, selection, new Operand[] { isCurrentIndex, value, result });
node.List.AddBefore(node, compareOp);
node.List.AddBefore(node, selectOp);
@@ -267,10 +266,8 @@ namespace Ryujinx.Graphics.Shader.Translation
{
TextureOperation texOp = (TextureOperation)node.Value;
- bool isBindless = (texOp.Flags & TextureFlags.Bindless) != 0;
- bool intCoords = (texOp.Flags & TextureFlags.IntCoords) != 0;
-
- bool isArray = (texOp.Type & SamplerType.Array) != 0;
+ bool isBindless = (texOp.Flags & TextureFlags.Bindless) != 0;
+ bool intCoords = (texOp.Flags & TextureFlags.IntCoords) != 0;
bool isIndexed = (texOp.Type & SamplerType.Indexed) != 0;
int coordsCount = texOp.Type.GetDimensions();
@@ -318,10 +315,7 @@ namespace Ryujinx.Graphics.Shader.Translation
{
TextureOperation texOp = (TextureOperation)node.Value;
- bool isBindless = (texOp.Flags & TextureFlags.Bindless) != 0;
- bool intCoords = (texOp.Flags & TextureFlags.IntCoords) != 0;
-
- bool isArray = (texOp.Type & SamplerType.Array) != 0;
+ bool isBindless = (texOp.Flags & TextureFlags.Bindless) != 0;
bool isIndexed = (texOp.Type & SamplerType.Indexed) != 0;
if (texOp.Inst == Instruction.TextureSize &&
@@ -383,8 +377,8 @@ namespace Ryujinx.Graphics.Shader.Translation
TextureOperation texOp = (TextureOperation)node.Value;
- bool isBindless = (texOp.Flags & TextureFlags.Bindless) != 0;
- bool intCoords = (texOp.Flags & TextureFlags.IntCoords) != 0;
+ bool isBindless = (texOp.Flags & TextureFlags.Bindless) != 0;
+ bool intCoords = (texOp.Flags & TextureFlags.IntCoords) != 0;
bool isCoordNormalized = isBindless || config.GpuAccessor.QueryTextureCoordNormalized(texOp.Handle, texOp.CbufSlot);
@@ -393,7 +387,6 @@ namespace Ryujinx.Graphics.Shader.Translation
return node;
}
- bool isArray = (texOp.Type & SamplerType.Array) != 0;
bool isIndexed = (texOp.Type & SamplerType.Indexed) != 0;
int coordsCount = texOp.Type.GetDimensions();
@@ -453,7 +446,7 @@ namespace Ryujinx.Graphics.Shader.Translation
TextureOperation texOp = (TextureOperation)node.Value;
bool isBindless = (texOp.Flags & TextureFlags.Bindless) != 0;
- bool isGather = (texOp.Flags & TextureFlags.Gather) != 0;
+ bool isGather = (texOp.Flags & TextureFlags.Gather) != 0;
int gatherBiasPrecision = config.GpuAccessor.QueryHostGatherBiasPrecision();
@@ -462,10 +455,12 @@ namespace Ryujinx.Graphics.Shader.Translation
return node;
}
+#pragma warning disable IDE0059 // Remove unnecessary value assignment
bool intCoords = (texOp.Flags & TextureFlags.IntCoords) != 0;
- bool isArray = (texOp.Type & SamplerType.Array) != 0;
+ bool isArray = (texOp.Type & SamplerType.Array) != 0;
bool isIndexed = (texOp.Type & SamplerType.Indexed) != 0;
+#pragma warning restore IDE0059
int coordsCount = texOp.Type.GetDimensions();
int coordsIndex = isBindless || isIndexed ? 1 : 0;
@@ -536,7 +531,7 @@ namespace Ryujinx.Graphics.Shader.Translation
TextureOperation texOp = (TextureOperation)node.Value;
- bool hasOffset = (texOp.Flags & TextureFlags.Offset) != 0;
+ bool hasOffset = (texOp.Flags & TextureFlags.Offset) != 0;
bool hasOffsets = (texOp.Flags & TextureFlags.Offsets) != 0;
bool hasInvalidOffset = (hasOffset || hasOffsets) && !config.GpuAccessor.QueryHostSupportsNonConstantTextureOffset();
@@ -548,16 +543,16 @@ namespace Ryujinx.Graphics.Shader.Translation
return node;
}
- bool isGather = (texOp.Flags & TextureFlags.Gather) != 0;
+ bool isGather = (texOp.Flags & TextureFlags.Gather) != 0;
bool hasDerivatives = (texOp.Flags & TextureFlags.Derivatives) != 0;
- bool intCoords = (texOp.Flags & TextureFlags.IntCoords) != 0;
- bool hasLodBias = (texOp.Flags & TextureFlags.LodBias) != 0;
- bool hasLodLevel = (texOp.Flags & TextureFlags.LodLevel) != 0;
+ bool intCoords = (texOp.Flags & TextureFlags.IntCoords) != 0;
+ bool hasLodBias = (texOp.Flags & TextureFlags.LodBias) != 0;
+ bool hasLodLevel = (texOp.Flags & TextureFlags.LodLevel) != 0;
- bool isArray = (texOp.Type & SamplerType.Array) != 0;
- bool isIndexed = (texOp.Type & SamplerType.Indexed) != 0;
+ bool isArray = (texOp.Type & SamplerType.Array) != 0;
+ bool isIndexed = (texOp.Type & SamplerType.Indexed) != 0;
bool isMultisample = (texOp.Type & SamplerType.Multisample) != 0;
- bool isShadow = (texOp.Type & SamplerType.Shadow) != 0;
+ bool isShadow = (texOp.Type & SamplerType.Shadow) != 0;
int coordsCount = texOp.Type.GetDimensions();
@@ -647,12 +642,12 @@ namespace Ryujinx.Graphics.Shader.Translation
if (hasLodBias)
{
- sources[dstIndex++] = texOp.GetSource(srcIndex++);
+ sources[dstIndex++] = texOp.GetSource(srcIndex++);
}
if (isGather && !isShadow)
{
- sources[dstIndex++] = texOp.GetSource(srcIndex++);
+ sources[dstIndex++] = texOp.GetSource(srcIndex++);
}
int coordsIndex = isBindless || isIndexed ? 1 : 0;
@@ -712,7 +707,7 @@ namespace Ryujinx.Graphics.Shader.Translation
newSources[coordsIndex + index] = coordPlusOffset;
}
- TextureOperation newTexOp = new TextureOperation(
+ TextureOperation newTexOp = new(
Instruction.TextureSample,
texOp.Type,
texOp.Format,
@@ -771,7 +766,7 @@ namespace Ryujinx.Graphics.Shader.Translation
}
}
- TextureOperation newTexOp = new TextureOperation(
+ TextureOperation newTexOp = new(
Instruction.TextureSample,
texOp.Type,
texOp.Format,
@@ -862,13 +857,13 @@ namespace Ryujinx.Graphics.Shader.Translation
int maxPositive = format switch
{
- TextureFormat.R8Snorm => sbyte.MaxValue,
- TextureFormat.R8G8Snorm => sbyte.MaxValue,
- TextureFormat.R8G8B8A8Snorm => sbyte.MaxValue,
- TextureFormat.R16Snorm => short.MaxValue,
- TextureFormat.R16G16Snorm => short.MaxValue,
+ TextureFormat.R8Snorm => sbyte.MaxValue,
+ TextureFormat.R8G8Snorm => sbyte.MaxValue,
+ TextureFormat.R8G8B8A8Snorm => sbyte.MaxValue,
+ TextureFormat.R16Snorm => short.MaxValue,
+ TextureFormat.R16G16Snorm => short.MaxValue,
TextureFormat.R16G16B16A16Snorm => short.MaxValue,
- _ => 0
+ _ => 0,
};
// The value being 0 means that the format is not a SNORM format,
@@ -886,8 +881,8 @@ namespace Ryujinx.Graphics.Shader.Translation
INode[] uses = dest.UseOps.ToArray();
- Operation convOp = new Operation(Instruction.ConvertS32ToFP32, Local(), dest);
- Operation normOp = new Operation(Instruction.FP32 | Instruction.Multiply, Local(), convOp.Dest, ConstF(1f / maxPositive));
+ Operation convOp = new(Instruction.ConvertS32ToFP32, Local(), dest);
+ Operation normOp = new(Instruction.FP32 | Instruction.Multiply, Local(), convOp.Dest, ConstF(1f / maxPositive));
node = node.List.AddAfter(node, convOp);
node = node.List.AddAfter(node, normOp);
@@ -990,4 +985,4 @@ namespace Ryujinx.Graphics.Shader.Translation
return false;
}
}
-} \ No newline at end of file
+}