You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Complete the production GPU-memory policy around the implemented allocator,
pools, staging ring, deferred frees, and VMA budget sampling. The engine needs
truthful per-heap/per-domain telemetry and deterministic admission decisions;
it must not pretend that unrelated geometry, environment, texture, transient,
and CPU arena values are one global hard budget.
Scope
Define a stable per-frame GPU telemetry snapshot from VMA heap budgets plus
engine-owned counters for geometry streaming, textures, environment lighting,
staging, and transient render-graph allocations.
Define pressure thresholds and explicit admission/retry outcomes per resource
class. Allocation/cook/bake callers must receive an actionable failure or
fallback path rather than assert, spin, or leave partial GPU state.
Make geometry streaming capacity, environment-lighting quality/budget,
texture residency, and transient render-graph pressure visible in one
reporting surface while retaining each subsystem's actual ownership.
Specify and implement the policy for device-local heap pressure, unified
memory, missing VK_EXT_memory_budget, and allocation failure. Quality
reduction or eviction must be explicit, bounded, and observable.
Export diagnostics/metrics suitable for the editor and logs: heap budget and
usage, domain usage, pressure state, rejected/deferred work, evictions, and
fallback reason.
GpuMemoryTelemetry is a reporting snapshot, not an ownership transfer or a
promise that VMA's global usage can be divided perfectly by engine domain. The
policy evaluates before a new optional allocation is committed; mandatory
allocation failure still propagates a structured error and leaves existing
resources intact. cstring DebugName is borrowed for the call only.
Acceptance criteria
Editor/log telemetry identifies heap budget/usage, engine domain usage,
pressure state, pending frees, and the cause of every deferred/rejected
request.
Geometry, textures, environment lighting, and render-graph transients use
their declared policy path; no optional workload bypasses pressure handling.
Missing memory-budget extension, UMA hardware, critical pressure, and VMA
allocation failure have deterministic, tested behavior.
A failed admission or allocation leaves a valid prior GPU resource and emits
an actionable diagnostic; no new assertion-only OOM path is introduced.
Summary
Complete the production GPU-memory policy around the implemented allocator,
pools, staging ring, deferred frees, and VMA budget sampling. The engine needs
truthful per-heap/per-domain telemetry and deterministic admission decisions;
it must not pretend that unrelated geometry, environment, texture, transient,
and CPU arena values are one global hard budget.
Scope
engine-owned counters for geometry streaming, textures, environment lighting,
staging, and transient render-graph allocations.
class. Allocation/cook/bake callers must receive an actionable failure or
fallback path rather than assert, spin, or leave partial GPU state.
texture residency, and transient render-graph pressure visible in one
reporting surface while retaining each subsystem's actual ownership.
memory, missing
VK_EXT_memory_budget, and allocation failure. Qualityreduction or eviction must be explicit, bounded, and observable.
usage, domain usage, pressure state, rejected/deferred work, evictions, and
fallback reason.
allocation-failure coverage when Headless VulkanDevice test fixture for RRM/texture-pipeline GPU-level tests #753 supplies its real
VulkanDevicefixture.
Non-goals
Core::Memory::GpuAllocator, VMA pools, the staging ring, ortimeline-safe deferred frees that already exist.
heuristics in place of timeline completion.
Implementation contract
GpuMemoryTelemetryis a reporting snapshot, not an ownership transfer or apromise that VMA's global usage can be divided perfectly by engine domain. The
policy evaluates before a new optional allocation is committed; mandatory
allocation failure still propagates a structured error and leaves existing
resources intact.
cstring DebugNameis borrowed for the call only.Acceptance criteria
pressure state, pending frees, and the cause of every deferred/rejected
request.
their declared policy path; no optional workload bypasses pressure handling.
allocation failure have deterministic, tested behavior.
an actionable diagnostic; no new assertion-only OOM path is introduced.
required real-device integration cases when available.
References
ZEngine/docs/future-plan/gpu-allocator-rearchitecture.mdZEngine/docs/future-plan/render-resource-manager.mdproduction completioncriteria 4 and 5
VulkanDevicetest fixture (separate dependency)