Skip to content

feat: renderer 2.0.7, pass atlasGroup through to the renderer node - #79

Merged
chiefcll merged 1 commit into
mainfrom
feat/renderer-2.0.7-atlas-group
Oct 21, 2026
Merged

chiefcll merged 1 commit into
mainfrom
feat/renderer-2.0.7-atlas-group

Conversation

@chiefcll

Copy link
Copy Markdown
Contributor

Summary

  • Require @solidtv/renderer ^2.0.7 (peer dependency and lockfile).
  • Pass the new atlasGroup node prop through to the renderer node. Only props on Solid's list reach the renderer, so it was dropped silently before.
  • Keep the DOM renderer building against 2.0.7, which makes rtl a required node prop: DOMNode now stores rtl (default null, inherit) and atlasGroup.

The image atlas

2.0.7 adds an imageAtlas renderer setting (default off, a prototype in this release). With it on, images up to about 510×510 are packed onto shared 1024×1024 pages, so images on one page can draw in one call. atlasGroup keeps a subtree's images on pages of their own, so a row's posters batch together and are freed together when the row scrolls away.

  • Apps enable it with createRenderer({ imageAtlas: true }); Solid already passes settings through unchanged.
  • atlasGroup does nothing without imageAtlas: true.
  • Each group costs at least one 4 MB page, so set it on rows, not cards. A group applies when an image loads; changing it later affects only images loaded afterwards.
  • With the setting on, linearGradient, holePunch and blur draw wrong on packed images. This is a renderer limitation, documented in its atlas design note.

Not in this PR: having Row/Column set atlasGroup themselves. It would cost a page per row while the feature is still a prototype, so it's left for a separate decision.

Limits

  • The DOM renderer stores rtl but does not mirror layouts, and it has no atlas: atlasGroup is stored only.

Test plan

  • New contract test: atlasGroup reaches el.lng at render and when set afterwards (fails without the change)
  • npm test: 730 passed, 13 skipped
  • npm run tsc, npm run lint and npm run build pass
  • npm run test:browser not run

🤖 Generated with Claude Code

Require @solidtv/renderer ^2.0.7. Its imageAtlas setting packs small
images onto shared texture pages; the atlasGroup node prop keeps a
subtree's images on pages of their own. Solid dropped the prop because
only listed props reach the renderer node, so add it to that list.

2.0.7 also makes rtl a required node prop, which broke tsc for the DOM
renderer. DOMNode now stores rtl (default null, inherit) and atlasGroup;
it does not mirror rtl layouts and has no atlas.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chiefcll
chiefcll merged commit 48bbdce into main Oct 21, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant