aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/CodeGen
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/CodeGen
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/CodeGen')
-rw-r--r--Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstInfo.cs2
-rw-r--r--Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs2
-rw-r--r--Ryujinx.Graphics.Shader/CodeGen/Spirv/OperationResult.cs2
-rw-r--r--Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvDelegates.cs2
-rw-r--r--Ryujinx.Graphics.Shader/CodeGen/Spirv/TextureMeta.cs33
5 files changed, 6 insertions, 35 deletions
diff --git a/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstInfo.cs b/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstInfo.cs
index fc9aef7e..7b2a6b46 100644
--- a/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstInfo.cs
+++ b/Ryujinx.Graphics.Shader/CodeGen/Glsl/Instructions/InstInfo.cs
@@ -1,6 +1,6 @@
namespace Ryujinx.Graphics.Shader.CodeGen.Glsl.Instructions
{
- struct InstInfo
+ readonly struct InstInfo
{
public InstType Type { get; }
diff --git a/Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs b/Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs
index b7891426..ccc87a7f 100644
--- a/Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs
+++ b/Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs
@@ -13,7 +13,7 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl
{
private static readonly string[] StagePrefixes = new string[] { "cp", "vp", "tcp", "tep", "gp", "fp" };
- private struct BuiltInAttribute
+ private readonly struct BuiltInAttribute
{
public string Name { get; }
diff --git a/Ryujinx.Graphics.Shader/CodeGen/Spirv/OperationResult.cs b/Ryujinx.Graphics.Shader/CodeGen/Spirv/OperationResult.cs
index f432f1c4..f80c8110 100644
--- a/Ryujinx.Graphics.Shader/CodeGen/Spirv/OperationResult.cs
+++ b/Ryujinx.Graphics.Shader/CodeGen/Spirv/OperationResult.cs
@@ -3,7 +3,7 @@ using Spv.Generator;
namespace Ryujinx.Graphics.Shader.CodeGen.Spirv
{
- struct OperationResult
+ readonly struct OperationResult
{
public static OperationResult Invalid => new OperationResult(AggregateType.Invalid, null);
diff --git a/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvDelegates.cs b/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvDelegates.cs
index fa0341ee..04c3be1b 100644
--- a/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvDelegates.cs
+++ b/Ryujinx.Graphics.Shader/CodeGen/Spirv/SpirvDelegates.cs
@@ -8,7 +8,7 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Spirv
/// <summary>
/// Delegate cache for SPIR-V instruction generators. Avoids delegate allocation when passing generators as arguments.
/// </summary>
- internal struct SpirvDelegates
+ internal readonly struct SpirvDelegates
{
// Unary
public readonly FuncUnaryInstruction GlslFAbs;
diff --git a/Ryujinx.Graphics.Shader/CodeGen/Spirv/TextureMeta.cs b/Ryujinx.Graphics.Shader/CodeGen/Spirv/TextureMeta.cs
index 686259ad..4de05603 100644
--- a/Ryujinx.Graphics.Shader/CodeGen/Spirv/TextureMeta.cs
+++ b/Ryujinx.Graphics.Shader/CodeGen/Spirv/TextureMeta.cs
@@ -1,33 +1,4 @@
-using System;
-
-namespace Ryujinx.Graphics.Shader.CodeGen.Spirv
+namespace Ryujinx.Graphics.Shader.CodeGen.Spirv
{
- struct TextureMeta : IEquatable<TextureMeta>
- {
- public int CbufSlot { get; }
- public int Handle { get; }
- public TextureFormat Format { get; }
-
- public TextureMeta(int cbufSlot, int handle, TextureFormat format)
- {
- CbufSlot = cbufSlot;
- Handle = handle;
- Format = format;
- }
-
- public override bool Equals(object obj)
- {
- return obj is TextureMeta other && Equals(other);
- }
-
- public bool Equals(TextureMeta other)
- {
- return CbufSlot == other.CbufSlot && Handle == other.Handle && Format == other.Format;
- }
-
- public override int GetHashCode()
- {
- return HashCode.Combine(CbufSlot, Handle, Format);
- }
- }
+ readonly record struct TextureMeta(int CbufSlot, int Handle, TextureFormat Format);
} \ No newline at end of file