aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/Translation
diff options
context:
space:
mode:
authorAndrey Sukharev <SukharevAndrey@users.noreply.github.com>2022-12-05 16:47:39 +0300
committerGitHub <noreply@github.com>2022-12-05 14:47:39 +0100
commit4da44e09cb2a32f69b4a6b47221117b78e4618dc (patch)
treec3648a09202374dabff6fac472fe341bf9e1f0ee /Ryujinx.Graphics.Shader/Translation
parentae13f0ab4da5b371bba746c1bd6598baaa44585d (diff)
Make structs readonly when applicable (#4002)
* Make all structs readonly when applicable. It should reduce amount of needless defensive copies * Make structs with trivial boilerplate equality code record structs * Remove unnecessary readonly modifiers from TextureCreateInfo * Make BitMap structs readonly too
Diffstat (limited to 'Ryujinx.Graphics.Shader/Translation')
-rw-r--r--Ryujinx.Graphics.Shader/Translation/AttributeInfo.cs2
-rw-r--r--Ryujinx.Graphics.Shader/Translation/EmitterContext.cs2
-rw-r--r--Ryujinx.Graphics.Shader/Translation/FunctionMatch.cs4
-rw-r--r--Ryujinx.Graphics.Shader/Translation/RegisterUsage.cs2
-rw-r--r--Ryujinx.Graphics.Shader/Translation/ShaderConfig.cs31
-rw-r--r--Ryujinx.Graphics.Shader/Translation/ShaderHeader.cs2
-rw-r--r--Ryujinx.Graphics.Shader/Translation/Ssa.cs2
-rw-r--r--Ryujinx.Graphics.Shader/Translation/TranslationOptions.cs2
-rw-r--r--Ryujinx.Graphics.Shader/Translation/Translator.cs2
9 files changed, 10 insertions, 39 deletions
diff --git a/Ryujinx.Graphics.Shader/Translation/AttributeInfo.cs b/Ryujinx.Graphics.Shader/Translation/AttributeInfo.cs
index 839edbe9..1647f656 100644
--- a/Ryujinx.Graphics.Shader/Translation/AttributeInfo.cs
+++ b/Ryujinx.Graphics.Shader/Translation/AttributeInfo.cs
@@ -2,7 +2,7 @@
namespace Ryujinx.Graphics.Shader.Translation
{
- struct AttributeInfo
+ readonly struct AttributeInfo
{
private static readonly Dictionary<int, AttributeInfo> _builtInAttributes = new Dictionary<int, AttributeInfo>()
{
diff --git a/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs b/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs
index ef5d7b96..7961ada8 100644
--- a/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs
+++ b/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs
@@ -21,7 +21,7 @@ namespace Ryujinx.Graphics.Shader.Translation
public int OperationsCount => _operations.Count;
- private struct BrxTarget
+ private readonly struct BrxTarget
{
public readonly Operand Selector;
public readonly int ExpectedValue;
diff --git a/Ryujinx.Graphics.Shader/Translation/FunctionMatch.cs b/Ryujinx.Graphics.Shader/Translation/FunctionMatch.cs
index 1c5d8c54..073e120a 100644
--- a/Ryujinx.Graphics.Shader/Translation/FunctionMatch.cs
+++ b/Ryujinx.Graphics.Shader/Translation/FunctionMatch.cs
@@ -87,7 +87,7 @@ namespace Ryujinx.Graphics.Shader.Translation
}
}
- private struct TreeNodeUse
+ private readonly struct TreeNodeUse
{
public TreeNode Node { get; }
public int Index { get; }
@@ -345,7 +345,7 @@ namespace Ryujinx.Graphics.Shader.Translation
bool Matches(in InstOp opInfo);
}
- private struct PatternTreeNodeUse
+ private readonly struct PatternTreeNodeUse
{
public IPatternTreeNode Node { get; }
public int Index { get; }
diff --git a/Ryujinx.Graphics.Shader/Translation/RegisterUsage.cs b/Ryujinx.Graphics.Shader/Translation/RegisterUsage.cs
index 158ba5ef..9e31831d 100644
--- a/Ryujinx.Graphics.Shader/Translation/RegisterUsage.cs
+++ b/Ryujinx.Graphics.Shader/Translation/RegisterUsage.cs
@@ -114,7 +114,7 @@ namespace Ryujinx.Graphics.Shader.Translation
}
}
- public struct FunctionRegisterUsage
+ public readonly struct FunctionRegisterUsage
{
public Register[] InArguments { get; }
public Register[] OutArguments { get; }
diff --git a/Ryujinx.Graphics.Shader/Translation/ShaderConfig.cs b/Ryujinx.Graphics.Shader/Translation/ShaderConfig.cs
index ae4107e8..12cd4cd1 100644
--- a/Ryujinx.Graphics.Shader/Translation/ShaderConfig.cs
+++ b/Ryujinx.Graphics.Shader/Translation/ShaderConfig.cs
@@ -69,36 +69,7 @@ namespace Ryujinx.Graphics.Shader.Translation
private int _usedStorageBuffers;
private int _usedStorageBuffersWrite;
- private struct TextureInfo : IEquatable<TextureInfo>
- {
- public int CbufSlot { get; }
- public int Handle { get; }
- public bool Indexed { get; }
- public TextureFormat Format { get; }
-
- public TextureInfo(int cbufSlot, int handle, bool indexed, TextureFormat format)
- {
- CbufSlot = cbufSlot;
- Handle = handle;
- Indexed = indexed;
- Format = format;
- }
-
- public override bool Equals(object obj)
- {
- return obj is TextureInfo other && Equals(other);
- }
-
- public bool Equals(TextureInfo other)
- {
- return CbufSlot == other.CbufSlot && Handle == other.Handle && Indexed == other.Indexed && Format == other.Format;
- }
-
- public override int GetHashCode()
- {
- return HashCode.Combine(CbufSlot, Handle, Indexed, Format);
- }
- }
+ private readonly record struct TextureInfo(int CbufSlot, int Handle, bool Indexed, TextureFormat Format);
private struct TextureMeta
{
diff --git a/Ryujinx.Graphics.Shader/Translation/ShaderHeader.cs b/Ryujinx.Graphics.Shader/Translation/ShaderHeader.cs
index e53c77af..b643262f 100644
--- a/Ryujinx.Graphics.Shader/Translation/ShaderHeader.cs
+++ b/Ryujinx.Graphics.Shader/Translation/ShaderHeader.cs
@@ -12,7 +12,7 @@ namespace Ryujinx.Graphics.Shader.Translation
ScreenLinear = 3
}
- struct ImapPixelType
+ readonly struct ImapPixelType
{
public PixelImap X { get; }
public PixelImap Y { get; }
diff --git a/Ryujinx.Graphics.Shader/Translation/Ssa.cs b/Ryujinx.Graphics.Shader/Translation/Ssa.cs
index 8c63d72d..16b8b924 100644
--- a/Ryujinx.Graphics.Shader/Translation/Ssa.cs
+++ b/Ryujinx.Graphics.Shader/Translation/Ssa.cs
@@ -108,7 +108,7 @@ namespace Ryujinx.Graphics.Shader.Translation
}
}
- private struct Definition
+ private readonly struct Definition
{
public BasicBlock Block { get; }
public Operand Local { get; }
diff --git a/Ryujinx.Graphics.Shader/Translation/TranslationOptions.cs b/Ryujinx.Graphics.Shader/Translation/TranslationOptions.cs
index 532e9abb..d9829ac4 100644
--- a/Ryujinx.Graphics.Shader/Translation/TranslationOptions.cs
+++ b/Ryujinx.Graphics.Shader/Translation/TranslationOptions.cs
@@ -1,6 +1,6 @@
namespace Ryujinx.Graphics.Shader.Translation
{
- public struct TranslationOptions
+ public readonly struct TranslationOptions
{
public TargetLanguage TargetLanguage { get; }
public TargetApi TargetApi { get; }
diff --git a/Ryujinx.Graphics.Shader/Translation/Translator.cs b/Ryujinx.Graphics.Shader/Translation/Translator.cs
index f8795c0f..3fb586cb 100644
--- a/Ryujinx.Graphics.Shader/Translation/Translator.cs
+++ b/Ryujinx.Graphics.Shader/Translation/Translator.cs
@@ -14,7 +14,7 @@ namespace Ryujinx.Graphics.Shader.Translation
{
private const int HeaderSize = 0x50;
- internal struct FunctionCode
+ internal readonly struct FunctionCode
{
public Operation[] Code { get; }