Goal
Remove full-device stalls and make streaming uploads/lifetime management predictable before GPU-driven rendering increases buffer traffic.
Depends on
Phase 0 metrics. Coordinate interfaces with Phase 1 MDI work.
Workstreams
These touch shared Vulkan infrastructure and should merge in dependency order, although design/prototyping can proceed in parallel.
Resource lifetime
Upload path
Pooling and accounting
Relevant code
modules/world-lod/src/lod_manager_eviction_ops.zig
modules/world-lod/src/lod_vertex_pool.zig
modules/world-lod/src/lod_mesh_resources.zig
modules/world-lod/src/lod_manager_upload_ops.zig
modules/engine-graphics/src/vulkan/resource_manager.zig
modules/engine-graphics/src/vulkan/rhi_state_control.zig
Acceptance criteria
- Normal streaming, eviction, resize, and compaction execute without
vkDeviceWaitIdle.
- Resource destruction is demonstrably safe across frames in flight.
- Upload bytes and staging pressure remain within configured budgets.
- Teleport/rapid traversal does not produce periodic synchronization hitches.
- Reported LOD CPU/VRAM totals match allocated capacity within a documented tolerance.
Risks
Incorrect retirement values can cause use-after-free on GPU. Ring wraparound and transfer/graphics queue ownership must be explicitly tested. Keep a conservative fallback for unsupported timeline semaphore paths.
Goal
Remove full-device stalls and make streaming uploads/lifetime management predictable before GPU-driven rendering increases buffer traffic.
Depends on
Phase 0 metrics. Coordinate interfaces with Phase 1 MDI work.
Workstreams
These touch shared Vulkan infrastructure and should merge in dependency order, although design/prototyping can proceed in parallel.
Resource lifetime
vkDeviceWaitIdleuse with fence/timeline-based retirement.Upload path
Pooling and accounting
Relevant code
modules/world-lod/src/lod_manager_eviction_ops.zigmodules/world-lod/src/lod_vertex_pool.zigmodules/world-lod/src/lod_mesh_resources.zigmodules/world-lod/src/lod_manager_upload_ops.zigmodules/engine-graphics/src/vulkan/resource_manager.zigmodules/engine-graphics/src/vulkan/rhi_state_control.zigAcceptance criteria
vkDeviceWaitIdle.Risks
Incorrect retirement values can cause use-after-free on GPU. Ring wraparound and transfer/graphics queue ownership must be explicitly tested. Keep a conservative fallback for unsupported timeline semaphore paths.