tree be467d7fd908c7b5391d1e6509f0b0bcbd3aab76
parent d25e6a4b6c1b8382b588f08371231373780fbcd5
author luigi-rosso <hello@rive.app> 1785955836 +0000
committer luigi-rosso <hello@rive.app> 1785955836 +0000

feat(deferred): one session per render context, multi target replay, and the context tier deleted (#13368) e9f24d0296
* feat(deferred): one session per render context with multi target replay, the shared context tier deleted, and script GPU work routed from the import factory

* fix(editor): paint the stage background while a new file's scripts compile, the vm swap skip was keeping the previous file's frame on the shared texture

* fix(web): detach the deferred session before a pooled renderer is released, deleting a bound renderer left the session replaying into dead GL state

* fix(editor): retry the shared texture clear until it lands or the new stage paints, opening from the file browser skipped it while the canvas was off screen

* fix(editor): hold the shared texture clear until the canvas is displayed with real size, a frame recorded before then replays with no screen to present to

* fix(editor): clear the shared texture when leaving for the file browser and let a transferred canvas clear while detached, the worker draws its bitmap regardless of the DOM

* fix(web): present every screen target on the web sink, a frame recorded before a repoint carried the prior texture's target and static content went blank when it was refused

* chore: move the investigation scripts and write ups to archive/deferred-investigation-scripts, the suite carries the conclusions as asserts

* test(gm): the deferred GMs check themselves against their immediate frame in process, each pair was two identical goldens standing in for one parity assert, 487 baselines gone

* chore: drop the working notes and dated benchmark reports from the tree, the archive branch keeps them

* docs: pull the deferred rendering write up out of the tree, it lives on the archive branch

* chore: pull the benchmark suite, its skill, driver, and bench only assets out of this landing, the archive branch carries them for the follow up

* ci: run the example integration tests by directory again, the target list script left with the benchmark suite

* ci: claim parity gm families so one worker runs each, and fetch the parity rivs over lfs in the unit test jobs

* test(gm): seed browserstack baselines for the canvas dag gms from a metal render, the device rebaseline flow can refresh them if a threshold trips

* refactor(runtime): drop the file level instance factory params, every dart call site passed null since the session became the import factory

* refactor(deferred): drop the unused dart gpu census mirror, the investigation tooling that read it moved to the archive branch

* refactor(native): drop exports with zero callers, riveShutdownGPUScripting was the only path freeing the context session so wiring real process exit teardown is a conscious follow-up

* refactor(deferred): fold the dispose helper into its only caller and stop exporting it, nothing outside the package disposed a session

* refactor(cmd): drop accessors nothing reads, the live counter's asserting recorder destructor is long gone

* refactor(cmd): guard the 2d producer with the recording thread check, make id reuse unconditional, and drop the inert ore replay marker opcode and the canvas hook seam nothing plugs into

* fix(web): an explicit released flag for isDisposed and an eager context for immediate consumers, a lazy texture read as disposed from birth and the pool bound stopped meaning live contexts

* fix(cmd): read past the canvas id without naming it, the hook deletion left the variable unused and ci builds with werror

* fix(tests): a lost context makes isReady false again, the parity rivs ship as plain assets so devices get real bytes, and the corpus walks use filesystem so msvc builds

* fix(cmd): the 2d recording thread bind sat unreachable after a lambda return, move it into the constructor body

* fix(deferred): probe the whole deferred abi before enabling it, make a failed worker renderer terminal instead of forever pending, and assert when a neighbor's frame reaches a native sink

* chore(deferred): name the slot store as the worker bind publication point, pin factory immutability on the widget, and give the editor clear retries one generation

* chore: move the factory immutability note above the condition it explains

* test(gm): allow the golden diff tolerance on atomic backends in the parity compare, their raster order differs run to run and exactness failed frames no two of theirs ever matched

* test(goldens): rebaseline Hero_v2 on vulkan atomic, our vulkan prepass fixes move 72 pixels by up to 14 and the shift reproduced twice, candidate eyeballed at full size

* refactor(canvas): replace the deferBacking bool and sticky recording flag with makeDeferredRenderCanvas, only GL overrides it

* chore(ps5): restore the agc canvas overloads to master, the base signature no longer forces the reshape

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
