test(ci): harden scheduling and allocation gates
All checks were successful
CI / linux-portable (push) Successful in 3m30s
CI / windows-gate (push) Successful in 6m15s
CI / release (push) Successful in 2m11s

This commit is contained in:
Erik 2026-08-27 19:28:10 +02:00
parent c4608b1127
commit d123c4b67c
11 changed files with 101 additions and 87 deletions

View file

@ -465,12 +465,10 @@ public sealed class DirectionalShadowCasterFrameTests
frame.Build(in query);
int copies = source.IndexCopies;
long before = GC.GetAllocatedBytesForCurrentThread();
for (int iteration = 0; iteration < 256; iteration++)
frame.Build(in query);
long allocated = GC.GetAllocatedBytesForCurrentThread() - before;
Assert.Equal(0, allocated);
ZeroAllocationProbe.AssertAllocatesNothing(
"DirectionalShadowCasterFrame.Build stable frame",
() => frame.Build(in query),
batchSize: 256);
Assert.Equal(1ul, frame.BuildSequence);
Assert.Equal(copies, source.IndexCopies);
Assert.Equal(0, frame.Stats.Classifications);
@ -508,16 +506,16 @@ public sealed class DirectionalShadowCasterFrameTests
frame.Build(in query);
}
long before = GC.GetAllocatedBytesForCurrentThread();
for (int iteration = 0; iteration < 64; iteration++)
void RefreshDenseFrame()
{
for (int index = 0; index < 75; index++)
source.PublishTransformChanges(dynamics[index].Id, 1);
frame.Build(in query);
}
long allocated = GC.GetAllocatedBytesForCurrentThread() - before;
Assert.Equal(0, allocated);
ZeroAllocationProbe.AssertAllocatesNothing(
"DirectionalShadowCasterFrame.Build dense changed frame",
RefreshDenseFrame,
batchSize: 64);
Assert.True(frame.Stats.DensityBulkRefresh);
Assert.Equal(75, frame.Stats.DynamicTransformRefreshes);
Assert.Equal(0, source.ProjectionReads);