Skip to content

rendering: update retained frames incrementally - #72

Open
tritao wants to merge 2 commits into
stack/retained-submission-batchingfrom
stack/retained-incremental-updates
Open

rendering: update retained frames incrementally#72
tritao wants to merge 2 commits into
stack/retained-submission-batchingfrom
stack/retained-incremental-updates

Conversation

@tritao

@tritao tritao commented Aug 22, 2026

Copy link
Copy Markdown
Collaborator

Builds on #71.

Purpose

Once a retained frame exists, a small scene edit should not require rebuilding
the whole frame or scanning every command path to discover what changed. The
renderer needs to know which commands depend on the changed node and which
derived data the edit can invalidate.

This PR introduces that mutation model. It indexes retained dependencies,
classifies scene notifications, and applies supported updates transactionally.
If an update cannot be proven safe, the manager falls back to a full rebuild.

What changed

  • Index scene dependencies instead of rescanning every retained command path.
  • Classify changes into explicit content, plan, resource, pick-topology, and
    rebuild invalidation domains.
  • Patch transforms, legacy diffuse material state, visibility, and geometry
    through the internal SoRetainedUpdater.
  • Apply mutations as a transaction so a failed patch restores the previous
    retained state before rebuilding.
  • Keep SoRenderManager responsible only for orchestration: accept the
    incremental update or rebuild the frame.
  • Report exact patch and rebuild counts in deterministic mutation workloads.

Ownership and fallback

SoRetainedUpdater is the sole classifier for supported scene mutations and
their invalidation effects. Unsupported nodes, ambiguous dependencies, or a
failed transaction take the existing full-rebuild path.

This layer defines invalidation semantics. Reusing plans and validated GPU
resources based on those guarantees is the responsibility of #78.

Validation

  • Transform, material, visibility, and geometry mutation cases.
  • Dependency-index and parent-occurrence handling.
  • Transaction rollback and unsupported-mutation rebuild fallback.
  • Deterministic assertions for command patches, plan/resource revisions,
    pick-topology invalidation, and full rebuild counts.

@tritao tritao changed the title stack/retained incremental updates rendering: update retained frames incrementally Aug 22, 2026
@tritao
tritao force-pushed the stack/retained-incremental-updates branch 2 times, most recently from ed31031 to 029b6da Compare August 22, 2026 13:47
@tritao
tritao force-pushed the stack/retained-incremental-updates branch 2 times, most recently from bbe2850 to 987cd24 Compare August 22, 2026 18:51
@tritao
tritao force-pushed the stack/retained-incremental-updates branch from 987cd24 to fe46d7e Compare August 22, 2026 18:57
@tritao
tritao force-pushed the stack/retained-incremental-updates branch from fe46d7e to ded7f84 Compare August 22, 2026 19:48
@tritao
tritao force-pushed the stack/retained-incremental-updates branch from ded7f84 to 3b021a6 Compare August 23, 2026 01:44
@tritao
tritao marked this pull request as ready for review August 23, 2026 01:46
@tritao
tritao force-pushed the stack/retained-incremental-updates branch 2 times, most recently from aaed4e2 to db28ee7 Compare August 23, 2026 03:00
@tritao
tritao force-pushed the stack/retained-incremental-updates branch from db28ee7 to d81ab94 Compare August 23, 2026 03:09
@tritao
tritao force-pushed the stack/retained-incremental-updates branch from d81ab94 to 980ebbe Compare August 23, 2026 03:19
@tritao
tritao force-pushed the stack/retained-incremental-updates branch 2 times, most recently from 3824452 to f5c40d0 Compare August 23, 2026 10:09
@tritao
tritao force-pushed the stack/retained-incremental-updates branch from f5c40d0 to 86a66c8 Compare August 23, 2026 11:13
@tritao
tritao force-pushed the stack/retained-incremental-updates branch 2 times, most recently from 037da14 to 511818c Compare August 23, 2026 12:38
@tritao
tritao force-pushed the stack/retained-incremental-updates branch 2 times, most recently from 14d8393 to 2045b81 Compare August 23, 2026 17:46
@tritao
tritao force-pushed the stack/retained-incremental-updates branch from 2045b81 to c3e03d4 Compare August 23, 2026 21:21
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