From b8004cdcce75f9cbe0070f9f52b49fa914bdebf3 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Sun, 15 Nov 2026 14:11:01 -0500 Subject: docs(wiki): 2026-11-15 status refresh - DS stage image authored+live (st0=st1=020a0481; DS 0x84000420, two boots); draw-issue mac=0x22 and stores remain; STATE-CURRENT snapshot --- wiki/Graphics-Execution.md | 58 ++++++++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 23 deletions(-) (limited to 'wiki/Graphics-Execution.md') diff --git a/wiki/Graphics-Execution.md b/wiki/Graphics-Execution.md index 5fd4943..31ad576 100644 --- a/wiki/Graphics-Execution.md +++ b/wiki/Graphics-Execution.md @@ -12,8 +12,7 @@ > [`../docs/04-implementation/04-real-render-walls.md`](../docs/04-implementation/04-real-render-walls.md) > (the measured walls); the docs tree wins on disagreement. -Status: 2026-11-15, tree `master @ 444ae2c1` plus in-flight graphics changes in -the working tree. Tags: `[live]` observed end to +Status: 2026-11-15, tree `master @ 692a7eb0`. Tags: `[live]` observed end to end; `[wip]` partially built; `[wall]` current blocker; `[target]` defined success state; `[planned]` designed, not built. @@ -124,14 +123,19 @@ fidelity: broke its kept/final count (`444ae2c1`), and the stage block was silently skipped by a double-counted budget; with both fixed the prelude emits 84 words and the DS stage VAs populate (one validated boot carried the full - post-REARM chain, `mac=0x22` and `DS 86040624`). The remaining gap is the - **DS stage-0/1 image**: the synthesized binds read `family+0x900` (zero in - the live family page) while the client's VTG SPH image is at - `family+0x600`, so binding `+0x600` is the in-flight change. Stores still - miss (`wrote=0`, `px0=0`), the window/screen present is still the frontier - (§6), and the per-boot binding lottery (the GL client usually rides the X - channel in indirect mode, and X start keeps a first-generation lottery) is - the throughput limiter. + post-REARM chain, `mac=0x22` and `DS 86040624`). The **DS stage-0/1 image is + now authored and live**: the module writes a VTG SPH at `family+0x900` + (`SPH-AUTHOR`, first word `020a0481`), rewrites the window's own later + `0x2054` slot-1 bind to the authored page (`SPH-SLOT1-REWRITE`), and the DS + latch reads the authored image for both vertex slots (`DS-IMAGE + st0=st1=020a0481 code=ff007321`; the DS value fell + `0x86040626 -> 0x84000420`), reproduced on two boots. The remaining DS bits + are stage type/context (SPH5/SPH10/SPH18); the `DRAW_IAB` (`mac=0x22`) call + does not run in the 728-B draw window, whose released macros are + `0x33/0x39/0x1/0x0`, so stores still miss (`wrote=0`, `px0=0`). The + window/screen present is still the frontier (§6), and the per-boot binding + lottery (the GL client usually rides the X channel in indirect mode, and X + start keeps a first-generation lottery) is the throughput limiter. ## 4. The channel and object picture @@ -190,9 +194,10 @@ swaps, and the GR backend no longer times out (the pair-close/pair-safe frames and captured videos (45.4 s and 50 s), the RM write-lock holder (Xorg in the DDX vidheap scrub wait) is fixed (`df6e71bb`), the X DDX/ScreenInit stability walls are closed, and the direct-GL ring/USERD - machinery is hardened. The MME pack now completes and the draw macro runs; - the next step is the DS stage image so the draw stores, then the - window/screen present path. + machinery is hardened. The MME pack completes and the draw macro runs, and + the authored DS stage image is live for both vertex slots; the next step is + the draw-issue macro (`mac=0x22`) and the stores, then the window/screen + present path. During bring-up the module also carries a **diagnostics-only mirror** for apps that spin on a shared progress word; it exists so a run can proceed while the @@ -212,12 +217,17 @@ requires it switched off, along with any external poke. MME overlay (`GR LAUNCH submitted` + OK). The 2799-word pack completes (2799/2799), the first `MME-PACK-REARM` fires (engine-global completion plus keep-done-across-recycle), the fixed-CB region is aliased, the - released calls run macros, and `DRAW_IAB` (`mac=0x22`) executes. The - prelude now emits 84 words and the DS stage VAs populate; the last named - gate is the **DS stage-0/1 image**: the synthesized binds read - `family+0x900` (zero in the live family page) while the client's VTG SPH - image is at `family+0x600`, so the `+0x600` bind is in flight. Stores - still miss (`wrote=0`, `px0=0`). Closed on the way: the QMD-carrier theory + released calls run macros, and `DRAW_IAB` (`mac=0x22`) executes on the 324-B + window class after a cross-lane `MME-PACK-REARM`. The **DS stage-0/1 image + is now authored and live**: a VTG SPH is written at `family+0x900` + (`SPH-AUTHOR`, first word `020a0481`) and the window's own `0x2054` slot-1 + bind is rewritten to it (`SPH-SLOT1-REWRITE`), so the DS latch reads + `st0=st1=020a0481 code=ff007321` and the DS value falls + `0x86040626 -> 0x84000420` (reproduced on two boots). The remaining gates + are the stage type/context bits (SPH5/SPH10/SPH18) and the draw-issue call: + the 728-B draw window's released macros are `0x33/0x39/0x1/0x0`, the + `DRAW_IAB` (`mac=0x22`) call does not run, and stores still miss + (`wrote=0`, `px0=0`). Closed on the way: the QMD-carrier theory (refuted: no QMD bit in the entry format, no QMD magic in 256 MiB BAR1) and RT routing (the clear targets RT0 while the window binds RT1; RT0 bind verified 16x with correct target/geometry, still 61/61 `wrote=0`). The @@ -288,8 +298,9 @@ requires it switched off, along with any external poke. | Multi-part MME keep-window: multi-frame windows admitted; the 2799-word pack completes (2799/2799) | `[live]` | | Part-launch poison eliminated: client `SET_REPORT_SEMAPHORE`/`SET_NOTIFY` targets redirected to a mapped scratch slot (49 cycles, 0 poison, 0 MMU faults) | `[live]` | | First `MME-PACK-REARM` captured (engine-global completion plus keep-done-across-recycle); fixed-CB region aliased; released calls run macros | `[live]` | -| `DRAW_IAB` (`mac=0x22`) executes; SPH-BIND prelude emits 84 words; DS stage VAs populate | `[live]` (single validated boot) | -| DS stage-0/1 image (synthesized binds read `family+0x900` = zero; the client's VTG SPH image is at `family+0x600`) | `[wall]` — `+0x600` bind in flight | +| `DRAW_IAB` (`mac=0x22`) executes on the 324-B window class after a cross-lane `MME-PACK-REARM`; SPH-BIND prelude emits 84 words; DS stage VAs populate | `[live]` | +| DS stage-0/1 image: a VTG SPH is authored at `family+0x900` and the window's own slot-1 bind rewritten to it; the DS latch reads `st0=st1=020a0481` (`0x86040626 -> 0x84000420`, two boots) | `[live]` | +| Remaining DS bits (stage type/context: SPH5/SPH10/SPH18); the 728-B draw window's released macros (`0x33/0x39/0x1/0x0`) do not include `DRAW_IAB` (`mac=0x22`); stores `wrote=0` | `[wall]` | | Window/screen present produces non-black window pixels | `[wall]` | | X screen-init first-generation lottery (`modeNum` parity; only an immediately-post-boot X passes DDX DMA init; dominant throughput limiter) | `[wip]` | | Non-black screen pixels from the emulated vGPU's 3D pipeline | `[wall]` | @@ -306,8 +317,9 @@ requires it switched off, along with any external poke. rendered-frame claim. GZDoom reaching `V_Init: allocate screen` proves the client's GL init and the direct-GL GR lane, not the game loop or a presented frame; the client's draw-state push reaches the engine, the MME - program completes and the draw macro executes, but the DS stage image is - not yet right, so its draws do not store and the window stays black. + program completes and the draw macro executes, and the authored DS stage + image is fetched by both vertex slots, but the 728-B window's draw-issue + call and the stores are still missing, so the window stays black. * The engine-zero-write (NOWRITE) campaign is not a rendering result: it and the draw census together proved the submission is macro-driven (no method-grammar draw header exists), that RT routing is not the cause, and -- cgit v1.2.3