CesiumGS / CesiumGS/cesium-native

Remove glTF compressed buffers after decompressing

Open
#107 2 comments 0 reactions 0 assignees View on GitHub
enhancement performance
Dominant language
C++
Stars
623
Forks
277
PR merge metrics
No merged PRs in 30d

Description

When a glTF contains a Draco-compressed buffer or a jpg/png compressed image, we decompress/decode them at load time. However, the original compressed data hangs around. We could save memory by freeing these original buffers after we're done loading data from them.

Doing this is mostly trivial, except for (unlikely?) edge cases where a single block of compressed data in a glTF Buffer is used by multiple primitives (draco) or images (jpg/png).

Contributor guide

Open the contributing guide

Research direction

Start by tracing the glTF load-time paths for Draco decompression and jpg/png image decoding, then inspect how their original compressed buffers are owned. Check the shared-block edge cases where one buffer serves multiple primitives or images. Done means compressed data is freed only after all consumers finish loading, without affecting valid glTF assets.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-graphics, performance
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.