Skip to content

Commit 99a0be8

Browse files
[Rendering] Minor optimizations to SDL GPU Shader Program;
1 parent 700584b commit 99a0be8

File tree

1 file changed

+10
-24
lines changed

1 file changed

+10
-24
lines changed

Engine/Staple.Core/Rendering/RenderSystem/Backend/Impls/SDLGPU/SDLGPUShaderProgram.cs

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System;
33
using System.Collections.Generic;
44
using Standart.Hash.xxHash;
5+
using System.Runtime.InteropServices;
56

67
namespace Staple.Internal;
78

@@ -106,16 +107,11 @@ public bool ShouldPushVertexUniform(byte binding, Span<byte> data)
106107
{
107108
var hash = MakeDataHash(data);
108109

109-
if(vertexDataHashes.TryGetValue(binding, out var last) == false)
110-
{
111-
vertexDataHashes.Add(binding, hash);
112-
113-
return true;
114-
}
110+
ref var container = ref CollectionsMarshal.GetValueRefOrAddDefault(vertexDataHashes, binding, out var exists);
115111

116-
if(last != hash)
112+
if(exists == false || container != hash)
117113
{
118-
vertexDataHashes[binding] = hash;
114+
container = hash;
119115

120116
return true;
121117
}
@@ -127,16 +123,11 @@ public bool ShouldPushFragmentUniform(byte binding, Span<byte> data)
127123
{
128124
var hash = MakeDataHash(data);
129125

130-
if (fragmentDataHashes.TryGetValue(binding, out var last) == false)
131-
{
132-
fragmentDataHashes.Add(binding, hash);
133-
134-
return true;
135-
}
126+
ref var container = ref CollectionsMarshal.GetValueRefOrAddDefault(fragmentDataHashes, binding, out var exists);
136127

137-
if (last != hash)
128+
if (exists == false || container != hash)
138129
{
139-
fragmentDataHashes[binding] = hash;
130+
container = hash;
140131

141132
return true;
142133
}
@@ -148,16 +139,11 @@ public bool ShouldPushComputeUniform(byte binding, Span<byte> data)
148139
{
149140
var hash = MakeDataHash(data);
150141

151-
if (computeDataHashes.TryGetValue(binding, out var last) == false)
152-
{
153-
computeDataHashes.Add(binding, hash);
154-
155-
return true;
156-
}
142+
ref var container = ref CollectionsMarshal.GetValueRefOrAddDefault(computeDataHashes, binding, out var exists);
157143

158-
if (last != hash)
144+
if (exists == false || container != hash)
159145
{
160-
computeDataHashes[binding] = hash;
146+
container = hash;
161147

162148
return true;
163149
}

0 commit comments

Comments
 (0)