refactor(app): compose world rendering startup
Move Region/environment, mandatory modern rendering, terrain, WB, texture, and sampler construction behind the typed Phase-4 composition boundary. Give every fallible GL constructor prefix retryable ownership so partial startup failure cannot leak or replay resource deletion while preserving the accepted render path and DAT inputs. Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
cd7b519f78
commit
6a2fe98cc4
22 changed files with 1983 additions and 634 deletions
|
|
@ -16,11 +16,22 @@ internal static unsafe class TrackedGlResource
|
|||
GL gl,
|
||||
uint buffer,
|
||||
long capacityBytes,
|
||||
string context) =>
|
||||
CreateRetryableBufferDeletion(
|
||||
gl,
|
||||
buffer,
|
||||
() => capacityBytes,
|
||||
context);
|
||||
|
||||
public static RetryableGpuResourceRelease CreateRetryableBufferDeletion(
|
||||
GL gl,
|
||||
uint buffer,
|
||||
Func<long> capacityBytes,
|
||||
string context)
|
||||
{
|
||||
if (buffer == 0)
|
||||
throw new ArgumentOutOfRangeException(nameof(buffer));
|
||||
ArgumentOutOfRangeException.ThrowIfNegative(capacityBytes);
|
||||
ArgumentNullException.ThrowIfNull(capacityBytes);
|
||||
return new RetryableGpuResourceRelease(
|
||||
() => GLHelpers.ThrowOnResourceError(gl, $"{context} (precondition)"),
|
||||
() =>
|
||||
|
|
@ -34,8 +45,10 @@ internal static unsafe class TrackedGlResource
|
|||
},
|
||||
() =>
|
||||
{
|
||||
if (capacityBytes != 0)
|
||||
GpuMemoryTracker.TrackDeallocation(capacityBytes, GpuResourceType.Buffer);
|
||||
long bytes = capacityBytes();
|
||||
ArgumentOutOfRangeException.ThrowIfNegative(bytes);
|
||||
if (bytes != 0)
|
||||
GpuMemoryTracker.TrackDeallocation(bytes, GpuResourceType.Buffer);
|
||||
},
|
||||
() => GpuMemoryTracker.TrackResourceDeallocation(GpuResourceType.Buffer));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue