Skip to content

rtx: Snapshot object state#352

Merged
jeffamstutz merged 3 commits into
NVIDIA:next_releasefrom
tarcila:snapshot-object-state
Jul 21, 2026
Merged

rtx: Snapshot object state#352
jeffamstutz merged 3 commits into
NVIDIA:next_releasefrom
tarcila:snapshot-object-state

Conversation

@tarcila

@tarcila tarcila commented Jul 20, 2026

Copy link
Copy Markdown
Collaborator

Follow up on Helium's snapshot object parameters

tarcila added 3 commits July 20, 2026 10:26
helium snapshot-commit (anari-sdk 2026-07-18) routes getters to the
committed snapshot while setParam writes staging: the emissive capture
read the post-translate keys the same flush had just written and saw
nothing, silently dropping the Geometry Light on single-commit flows.
Mirror the translation instead: a freshly set pre-translate 'emissive'
determines the binding; post-translate keys only cover later commits.
MaterialX staged the transcoded MDL via setParam and delegated to MDL
in the same flush; under helium snapshot-commit the getters
MDL::syncSource uses read the committed snapshot and never see those
writes — the raw .mtlx path compiled as MDL 'code' and every MaterialX
material silently fell back to diffuse.

Two-part fix: a protected MDL::SourceHandoff that subclasses populate
every commit and syncSource prefers over the param getters — and the
param overwrite is REMOVED entirely. The app's source/sourceType/
materialName stay authoritative, which also fixes outage recovery:
the overwritten source param lagged a flush behind m_generatedSource,
so needsRetranscode's self-write recognition misfired after a FREEZE
and re-parsed generated MDL as a MaterialX document.
…mmits

Registry-created samplers never pass through anariCommitParameters(),
so nothing captures their committed parameter snapshot. Their direct
commitParameters() reads staging and works once — but the buffered
re-commit their RegisteredObject constructor queues runs under a
ReadCommittedScope against an EMPTY snapshot and loses every parameter
('missing image' image3D, invalid textures, thrust crash downstream).
Mirror staging into the snapshot at the four SamplerRegistry creation
sites; keep CompressedImage2D's equal-stamp re-finalize from zeroing
(and thereby leaking) its live CUDA array now that the path fires.

The World zero instance/group sites get the same treatment
prophylactically (no empirical failure traced there), and the zero
instance's staged 'id' is now actually re-committed — it observes
nothing, so no buffered commit would ever consume it (it silently
stayed at the ctor default before).
@tarcila
tarcila requested a review from jeffamstutz July 20, 2026 15:49
@jeffamstutz
jeffamstutz merged commit b1d9787 into NVIDIA:next_release Jul 21, 2026
9 of 24 checks passed
@tarcila
tarcila deleted the snapshot-object-state branch July 21, 2026 00:42
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.

2 participants