Investigate GPU-process memory usage when displaying edges
What happened?
Not sure this is a bug. This issue is about investigating the memory usage when edges are displayed in CesiumJS, determining if anything can be done to further reduce memory. This usage has always been the case.
Displaying EXT_mesh_primitive_edge_visibility edges produces a large increase in Chromium GPU-process resident memory in our benchmark for a representative AEC dataset:
| Configuration | Peak GPU-process RSS |
|---|---|
| No edge extension | ~245 MB |
| Edge extension, edges hidden with lazy loading | ~246 MB |
| Edge extension, edges displayed | ~1244 MB |
Measured on an Apple M4 Max using Chromium/ANGLE Metal and a minified CesiumJS build containing #13785 and #13789. Three runs per configuration, first run discarded.
RSS is Resident Set Size, not a direct VRAM measurement. The ~1 GB increase needs attribution before assuming it is all live edge-buffer data.
Reproduction steps
- Use a CesiumJS build containing #13785 and #13789.
- Load an edge-bearing tileset with
edgeDisplayMode: Cesium.EdgeDisplayMode.SURFACES_ONLY. Do not callscene.snap(). - Move to a detailed view, wait for tiles to finish loading, and record Chromium’s GPU-process RSS.
- Start a fresh browser session and load the same tileset with
edgeDisplayMode: Cesium.EdgeDisplayMode.SURFACES_AND_EDGES. - Use the same camera position and viewport, wait for loading to finish, and record GPU-process RSS again.
Sandcastle example
No response
Environment
Browser: Chromium CesiumJS Version: Latest (main) Operating System: macOS and others
AI acknowledgment
- I used AI to generate this issue report.
- (If the above is checked) I have reviewed the AI-generated content before submitting.
Source: CesiumGS/cesium