Skip to content

Allow transactional render passes with HD textures and opted-in local netplay views - #727

Open
tetrisgm wants to merge 23 commits into
masterfrom
feat/render-60fps
Open

tetrisgm wants to merge 23 commits into
masterfrom
feat/render-60fps

Conversation

@tetrisgm

@tetrisgm tetrisgm commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

HD native texture authority previously refused render passes even though the transaction restores authoritative CPU VRAM and GPU presentation surfaces. This change permits that path. In explicitly opted-in forward netplay, a temporal pass receives the same presentation-only local-view scope as the base own-view draw. Rollback resimulation remains refused.

The final diff is five files. Input replay, scheduling, PGXP, rewind, render-thread, and tracing work from the earlier draft has been removed.

Validation:

  • render_pass_sandbox_test passes on Windows and macOS. Positive opted-in local temporal passes, discarded passes, device-read abort, rollback refusal, and a nonparticipating peer preserve the shared RAM/register/clock/interrupt digest.
  • The real-GL HD fixture enables native HD authority, draws in a kept and a discarded pass, and verifies authoritative CPU VRAM plus restored presented-pixel digests. Focused passes mode passed 14/14 checks at 1x and 9x on macOS; Windows sandbox passed after the fixture change.
  • An R4 two-peer Link race resumed into a loaded state at effective 18x (4320 internal lines). Host 120 Hz presentation with the title's local HD HUD pack active (36 replacements indexed), guest 30 Hz with HD disabled: 50 own views each, six actual host temporal passes and none on the guest, zero aborts, 16/16 before/after shared-digest receipts per peer, four matching common netplay digests, zero dispatch/segment misses. The short sample did not apply an HD replacement draw (applied_draws=0), so it proves pass admission with HD authority but not replacement-pixel use. R4 consuming-title receipt.
  • Matched built-performance check: upstream master d19d8c7e versus this PR's renderer, same hidden real-GL 9x scenes, five interleaved runs per scene and OS. Windows capture medians: 329.25 ms base / 324.63 ms PR; lines: 435.23 / 450.08 ms. Mac capture: 306.12 / 290.59 ms; lines: 405.36 / 403.73 ms. Digests match within each OS, all checks pass, and the variation is larger than the patch's observed timing differences. These are fixture process-wall measurements, not title output FPS.
  • Same-binary R4 title feature-cost A/B at 18x and the same checkpoint: 30 Hz host setting made zero passes with 6.56 ms average local draw; 120 Hz setting made six passes with 6.31 ms average local draw. Both had matching common digests and no misses/aborts. This isolates enabling temporal passes, not upstream-master versus PR.

No sustained 120 FPS claim is made. Desktop Duplication delivered no updates on this PC; a 12-second Windows.Graphics.Capture probe saw changing window pixels but was capture-bound (13.15 captured surfaces/s versus 349 GL source captures and 167 swaps), so it cannot establish physical display cadence. The code change is restricted to permission and local-view scope; ongoing high-refresh throughput work is separate.

@mstan mstan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed head 1cd67fc.

The stated render-pass/HD/local-view compatibility is meaningful, and simulation correctness must remain unconditional inside an enabled enhancement. This draft is much broader than that contract: it also adds production input replay/benchmark controls and host-span tracing and changes host time, scheduling, PGXP, rewind and render-thread behavior. Please isolate the render-pass permission/transaction change from that independent tooling and performance work, or identify a minimal explicit dependency stack. Preserve canonical shared state and rollback-resimulation refusal; qualification must compare the shared digest before/after an actual local-view pass with HD authority, including abort/failure and a disabled/nonparticipating peer. The synthetic GL fixture is useful but does not clear the source ownership and scope questions. Keeping this as draft, with TechnicallyComputers assigned for the engine netplay/local-view policy. Tracking: beads-8zz2.

@mstan
mstan force-pushed the feat/render-60fps branch from 1cd67fc to ce40165 Compare October 24, 2026 18:20

@mstan mstan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rebased onto frozen master, preserving current bounded sleeper/FLS code and projective transaction/failure guards, and pushed ce40165. Added the missing emulation-side render-pass flag double to the standalone HD GL fixture. Its existing four-wave timer test now has a 45-second CTest envelope consistent with four internal ten-second watchdogs; the internal watchdogs remain unchanged.

The combined 21-test native gate and real GL scale/thread/quality matrix pass; the HD fixture also passes 209/208 checks and native reference 19 after the preload/STP expectation fixes on their owning branches. A generic refusal test with no configured pass is not positive HD transactional-pass qualification. The draft still needs its consuming-title positive pass/opted-in netplay contract and matched built-performance acceptance before promotion.

tetrisgm and others added 5 commits October 24, 2026 13:46
Carry only the render transaction permission and focused sandbox/GL checks; title-level qualification remains open.

Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
Merge current upstream and retain only the focused HD permission, local-view scope, and transaction qualification changes. Independent replay, scheduling, PGXP, and tracing work belongs in separate topics.

Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
@tetrisgm
tetrisgm marked this pull request as ready for review October 24, 2026 21:49
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.

3 participants