RAM: free LL's LLVolumeFace mesh data after capture (~1.2 GB in heavy regions) -- follow-up #585

Closed
opened 2026-10-09 02:20:12 +00:00 by sky_line · 2 comments
Owner

The same heap profile attributes about 1.2 GB to LL's float mesh data kept after loading:

  • LLVolumeFace::operator= from LLMeshRepository::notifyMeshLoaded: positions and normals ~580 MB, tangents 217 MB, weights 137 MB, indices 124 MB.
  • LLSkinningUtil::updateRiggingInfo: 121 MB.

Under VK, our meshstore mirror (quantized, #573/#582) holds what rendering needs. LL's copy survives only for code that still reads it.

Goal

Once a mesh LOD is captured, release its LLVolumeFace vertex data, keeping only small metadata.

Readers to move off LL's data first

Map every one, then port it or keep a minimal subset:

  • avatar rigging info and spatial extents (LLVOVolume::updateRiggingInfo, LLVOAvatar::calculateSpatialExtents), which use per-face weights;
  • physics-shape display;
  • any CPU picking or raycast fallback (lineSegmentIntersect paths not covered by our pick);
  • selection silhouettes;
  • LOD switching / LLVolumeLODGroup refs;
  • mesh upload preview (uses its own data);
  • anything else touching getVolumeFace() positions on mesh volumes.

Rules

  • Don't free if a reader would then re-request the LOD every frame (avoid fetch churn).
  • Re-request from the raw mesh cache on demand where needed.

Done when

  • RSS drops by about 1 GB in the heavy region.
  • Picking, selection, avatar extents/LOD and physics display all work.

Follow-up to the renderer CPU-copy ticket.

The same heap profile attributes about **1.2 GB** to LL's float mesh data kept after loading: - `LLVolumeFace::operator=` from `LLMeshRepository::notifyMeshLoaded`: positions and normals ~580 MB, tangents 217 MB, weights 137 MB, indices 124 MB. - `LLSkinningUtil::updateRiggingInfo`: 121 MB. Under VK, our meshstore mirror (quantized, #573/#582) holds what rendering needs. LL's copy survives only for code that still reads it. ## Goal Once a mesh LOD is captured, release its `LLVolumeFace` vertex data, keeping only small metadata. ## Readers to move off LL's data first Map every one, then port it or keep a minimal subset: - avatar rigging info and spatial extents (`LLVOVolume::updateRiggingInfo`, `LLVOAvatar::calculateSpatialExtents`), which use per-face weights; - physics-shape display; - any CPU picking or raycast fallback (`lineSegmentIntersect` paths not covered by our pick); - selection silhouettes; - LOD switching / `LLVolumeLODGroup` refs; - mesh upload preview (uses its own data); - anything else touching `getVolumeFace()` positions on mesh volumes. ## Rules - Don't free if a reader would then re-request the LOD every frame (avoid fetch churn). - Re-request from the raw mesh cache on demand where needed. ## Done when - RSS drops by about 1 GB in the heavy region. - Picking, selection, avatar extents/LOD and physics display all work. Follow-up to the renderer CPU-copy ticket.
sky_line added this to the Slipstream project 2026-10-09 02:20:12 +00:00
Author
Owner

Started 2026-10-10. Plan: list every reader of LL's LLVolumeFace data (rigging info and extents, physics display, silhouettes, CPU raycast, LOD groups, decimation and weld, BLAS sources) and move each to our store data or a small kept subset. Then release the data after capture, behind a setting, with stats in the VKMem RAM log line.

Started 2026-10-10. Plan: list every reader of LL's LLVolumeFace data (rigging info and extents, physics display, silhouettes, CPU raycast, LOD groups, decimation and weld, BLAS sources) and move each to our store data or a small kept subset. Then release the data after capture, behind a setting, with stats in the VKMem RAM log line.
Author
Owner

Shipped in 1.3.0 Beta 1: LL's copy of mesh vertex data is freed once the renderer has captured a LOD (setting SLFreeCapturedMeshData, on by default).

Shipped in 1.3.0 Beta 1: LL's copy of mesh vertex data is freed once the renderer has captured a LOD (setting SLFreeCapturedMeshData, on by default).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#585
No description provided.