summaryrefslogtreecommitdiffstats
path: root/wiki/Graphics-Execution.md
diff options
context:
space:
mode:
Diffstat (limited to 'wiki/Graphics-Execution.md')
-rw-r--r--wiki/Graphics-Execution.md58
1 files changed, 35 insertions, 23 deletions
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