test: replace render source freezes

This commit is contained in:
Erik 2026-08-18 14:58:25 +02:00
parent c31a9ac411
commit 5a33369074
7 changed files with 425 additions and 345 deletions

View file

@ -84,6 +84,9 @@ internal sealed class RecordingGpuDevice : IGpuDevice
private readonly List<GpuRecordedCall> _calls = [];
private readonly List<Action> _queuedActions = [];
private readonly List<RecordingGpuBuffer> _createdBuffers = [];
private readonly List<RecordingGpuPipeline> _createdPipelines = [];
private readonly List<RecordingGpuSampler> _createdSamplers = [];
private readonly Dictionary<GpuSamplerDescription, RecordingGpuSampler> _samplers = [];
private readonly byte[] _ring;
private readonly Stack<uint> _freeTextureSlots = new();
@ -151,8 +154,18 @@ internal sealed class RecordingGpuDevice : IGpuDevice
public void Clear() => _calls.Clear();
public IGpuBuffer CreateBuffer(in GpuBufferDescription description) =>
new RecordingGpuBuffer(description);
public IReadOnlyList<RecordingGpuBuffer> CreatedBuffers => _createdBuffers;
public IReadOnlyList<RecordingGpuPipeline> CreatedPipelines => _createdPipelines;
public IReadOnlyList<RecordingGpuSampler> CreatedSamplers => _createdSamplers;
public IGpuBuffer CreateBuffer(in GpuBufferDescription description)
{
var buffer = new RecordingGpuBuffer(description);
_createdBuffers.Add(buffer);
return buffer;
}
/// <summary>
/// Campaign V slice V6i-2: every image this device made, in creation order.
@ -185,13 +198,16 @@ internal sealed class RecordingGpuDevice : IGpuDevice
RecordingGpuSampler created = new(description);
_samplers.Add(description, created);
_createdSamplers.Add(created);
return created;
}
public IGpuPipeline CreatePipeline(GpuPipelineDescription description)
{
ArgumentNullException.ThrowIfNull(description);
return new RecordingGpuPipeline(description);
var pipeline = new RecordingGpuPipeline(description);
_createdPipelines.Add(pipeline);
return pipeline;
}
public IGpuRenderTarget CreateRenderTarget(in GpuRenderTargetDescription description) =>