docs(render): close unified residency slice

This commit is contained in:
Erik 2026-07-24 17:06:06 +02:00
parent 1853a57c12
commit 66690805c5
8 changed files with 192 additions and 5 deletions

View file

@ -512,6 +512,19 @@ the waiting attachment graph transitively, so A→B→C recovers B before C in t
same parent-first pass. Recovery is edge-triggered by object/appearance/pose
publication; permanent missing DAT or holding parts are never polled per frame.
Runtime content residence has one typed policy and diagnostic ledger without
centralizing physical storage. `ResidencyManager` owns generation-safe logical
asset identity, owner tokens, leases, immutable budgets, and aggregate
accounting. Specialized render/content owners continue to own their mesh
ranges, texture arrays, staging payloads, decoded animations/audio, and
retained shared-alpha scratch. The manager never sees a GL name: policy runs as
a single writer during update/resource maintenance, while logical eviction and
fence-delayed physical release remain render-thread owner operations. Prepared
package address space is reported separately from committed CPU bytes, and
allocator capacity is not double-counted as live GPU content. Slice D's
pressure and connected evidence is
`docs/research/2026-07-24-slice-d-unified-residency-report.md`.
The remaining aggregation is primarily `_playerController`'s player-specific
movement plus the separate `WorldEntity`/animation/physics component types.
Those should become ONE class:

View file

@ -230,6 +230,20 @@ no longer reference them. This lifetime machinery is acdream-owned integration
around the extracted WB mesh pipeline; it does not add a second DAT decoder or a
reduced-distance rendering path.
**Unified residency policy seam (2026-07-24).** The extracted WB caches remain
the physical owners of mesh, arena, atlas, and texture resources.
`AcDream.App.Rendering.Residency.ResidencyManager` adds an acdream-owned typed
policy/diagnostic layer over them: generation-safe asset handles, independent
owner tokens and leases, immutable startup budgets, aggregate accounting, and
bounded trim requests. It never stores or deletes a GL name. Existing owners
perform logical eviction and fence-delayed physical release on the render
thread. The same ledger observes the prepared-package mapping, prepared/staged
CPU mesh data, decoded animation/audio data, and retained shared-alpha scratch
without double-counting the package's clean memory-mapped pages as committed
heap. Deterministic pressure tests exceed every configured ceiling and prove
zero-charge teardown. Connected evidence:
`docs/research/2026-07-24-slice-d-unified-residency-report.md`.
**Workflow:** Before re-implementing any AC-specific rendering or dat-handling
algorithm, **check this inventory first**. If we already extracted it (🟢
sections), it's in `src/AcDream.App/Rendering/Wb/` — use our copy. If WB has