Skip to content

Commit 24d3660

Browse files
authored
refactor: Use CollectionsMarshal.SetCount to resize lists (#2945)
Makes code easier to read (as it was before a122c71). The SetCount implementation looks very similar to the previously used Resize method of FastList. For value types it just sets the internal count, for reference types it clears the pointers. Both what was done before as well.
1 parent b7134af commit 24d3660

File tree

2 files changed

+4
-30
lines changed

2 files changed

+4
-30
lines changed

sources/engine/Stride.Engine/Rendering/Compositing/ForwardRenderer.cs

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -471,16 +471,7 @@ protected static PixelFormat ComputeNonMSAADepthFormat(PixelFormat format)
471471
private void ResolveMSAA(RenderDrawContext drawContext)
472472
{
473473
// Resolve render targets
474-
if (currentRenderTargetsNonMSAA.Count < currentRenderTargets.Count)
475-
{
476-
currentRenderTargetsNonMSAA.EnsureCapacity(currentRenderTargets.Count);
477-
while (currentRenderTargetsNonMSAA.Count != currentRenderTargets.Count)
478-
currentRenderTargetsNonMSAA.Add(null);
479-
}
480-
else if (currentRenderTargetsNonMSAA.Count > currentRenderTargets.Count)
481-
{
482-
currentRenderTargetsNonMSAA.RemoveRange(currentRenderTargets.Count, currentRenderTargetsNonMSAA.Count - currentRenderTargets.Count);
483-
}
474+
CollectionsMarshal.SetCount(currentRenderTargetsNonMSAA, currentRenderTargets.Count);
484475

485476
for (int index = 0; index < currentRenderTargets.Count; index++)
486477
{
@@ -849,16 +840,7 @@ private void PrepareRenderTargets(RenderDrawContext drawContext, Texture outputR
849840

850841
var renderTargets = OpaqueRenderStage.OutputValidator.RenderTargets;
851842

852-
if (currentRenderTargets.Count < renderTargets.Count)
853-
{
854-
currentRenderTargets.EnsureCapacity(renderTargets.Count);
855-
while (currentRenderTargets.Count != renderTargets.Count)
856-
currentRenderTargets.Add(null);
857-
}
858-
else if (currentRenderTargets.Count > renderTargets.Count)
859-
{
860-
currentRenderTargets.RemoveRange(renderTargets.Count, currentRenderTargets.Count - renderTargets.Count);
861-
}
843+
CollectionsMarshal.SetCount(currentRenderTargets, renderTargets.Count);
862844

863845
for (int index = 0; index < renderTargets.Count; index++)
864846
{

sources/engine/Stride.Rendering/Rendering/RenderSystem.cs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using Stride.Core.Threading;
1111
using Stride.Core.Diagnostics;
1212
using Stride.Graphics;
13+
using System.Runtime.InteropServices;
1314

1415
namespace Stride.Rendering
1516
{
@@ -285,16 +286,7 @@ public unsafe void Prepare(RenderDrawContext context)
285286
var renderStage = RenderStages[renderViewStage.Index];
286287
var sortedRenderNodes = renderViewStage.SortedRenderNodes;
287288

288-
if (sortedRenderNodes.Count < renderNodes.Count)
289-
{
290-
sortedRenderNodes.EnsureCapacity(renderNodes.Count);
291-
while (sortedRenderNodes.Count != renderNodes.Count)
292-
sortedRenderNodes.Add(default);
293-
}
294-
else if (sortedRenderNodes.Count > renderNodes.Count)
295-
{
296-
sortedRenderNodes.RemoveRange(renderNodes.Count, sortedRenderNodes.Count - renderNodes.Count);
297-
}
289+
CollectionsMarshal.SetCount(sortedRenderNodes, renderNodes.Count);
298290

299291
if (renderStage.SortMode != null)
300292
{

0 commit comments

Comments
 (0)