janis
|
5e4bc0ccf0
|
rendergraph: correct transient-resource aliasing with pooled placement
Lifetimes derive from the real dependency ordering (retained DAG +
compile-time happens-before closure), not command-index intervals.
Aliasing is restricted to the single-queue contract; alias reuse is
synchronized with memory/image barriers anchored at first-use commands.
- renderer_device: aliasable shared allocations (CAN_ALIAS), memory-
requirements queries incl. dedicated hints, offset-aware
bind_buffer/image_memory2, grouped bind under one allocator lock
- renderer_resources: unallocated resource creation, requirements
cached in Allocation::Unmanaged (OnceLock), MemoryGroup pooling with
intersecting memoryTypeBits, bind-time validation
- renderer_rendergraph: retained dependency DAG, happens_before
closure, batch lifetimes, Placement type, plan_placements with
pooled aliasing (first-fit over offset-sorted ranges, pool classes
split by bufferImageGranularity), alias-barrier construction,
placement/bind error variants
- perf: quadratic compile/resolve paths eliminated (per-resource
indexing, frontier caching, backward-scan prune, cached recording
index, recorder scratch reuse); single requirements query per
resource through plan/validate/bind
- design plan + GPU-gated validation tests
|
2026-10-27 01:57:27 +01:00 |
|