perf(gjs): bake map previews off-frame through a queue#215
Merged
Conversation
The ported worlds have 100k+ tiles; the old path painted every tile as a clipped GSK node in the widget snapshot AND rebuilt the same node tree for the bake — millions of GI calls on the main thread, twice, for thumbnails whose tiles end up ~1.4px. - never paint tiles in vfunc_snapshot: accent + room colour until the bake lands, then the texture (O(1)) - module-wide bake queue, one bake per idle at idle priority, so 19 atlas cards become short steps between frames - LRU cache (48 textures) keyed by a map-content fingerprint — atlas re-entry reuses textures, edits re-bake exactly the maps that changed; welcome thumbnails serve the cached texture instantly and refresh in the background - reuse the Graphene temps in the per-tile loop and drop the op list once baked (six-figure object arrays per big map)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The ported worlds have 100k+ tiles; the old path painted every tile
as a clipped GSK node in the widget snapshot AND rebuilt the same
node tree for the bake — millions of GI calls on the main thread,
twice, for thumbnails whose tiles end up ~1.4px.
the bake lands, then the texture (O(1))
19 atlas cards become short steps between frames
atlas re-entry reuses textures, edits re-bake exactly the maps
that changed; welcome thumbnails serve the cached texture
instantly and refresh in the background
list once baked (six-figure object arrays per big map)