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.md71
1 files changed, 54 insertions, 17 deletions
diff --git a/wiki/Graphics-Execution.md b/wiki/Graphics-Execution.md
index 31ad576..0b5d97c 100644
--- a/wiki/Graphics-Execution.md
+++ b/wiki/Graphics-Execution.md
@@ -12,7 +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 @ 692a7eb0`. Tags: `[live]` observed end to
+Status: 2026-11-15, tree `master @ 6aeb20c7`. Tags: `[live]` observed end to
end; `[wip]` partially built; `[wall]` current blocker; `[target]` defined
success state; `[planned]` designed, not built.
@@ -129,13 +129,30 @@ fidelity:
`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.
+ `0x86040626 -> 0x84000420`), reproduced on two boots. The release path is
+ now host-deterministic when the pack completes: a saved-window release
+ carrier snapshots the held window at `MME-CALL-HOLD` and re-submits it with
+ the calls released once the pack is resident (c772: `MME-CARRY-SAVE
+ win=240 held=68` -> `MME-CARRY-FIRE mode=release` -> synthetic `GR LAUNCH
+ push=0x6d6d6500` -> `MME-PACK-REARM` gen=5 -> DS `0x84000420` ->
+ `MME-CARRY-COMPLETE`), and the held-CALL census plus the SA[34] golden fill
+ prove the `DRAW_IAB` call and its target are present
+ (`MME-CALL-TARGET slot=34 method=0x3910 client=0x265 golden=0x265
+ used=0x265`; `MME-GOLDEN sa-fill slot=34 entry=0x265`). The remaining
+ blocker is **call order**: the saved 728-B state window places the slot-34
+ run at `off=0x340` after the `0x33/0x39` setup, so the last `0x39` latches
+ DS `0x84000420` and the MFE never reaches CALL(34) (c780 released
+ `0x33/0x39/0x0`); the 324-B DRAW window places it first (off `0x1c0`) and
+ ran `mac=0x22` (c716). A release-window reorder (`a03a68ea`:
+ `[head binds][slot-34 run][rest]`) is landed but not yet exercised, and
+ pack completion is still a per-boot lottery (poisoned pack-part; no pump
+ pass after the carry arm; carry-armed-never-fired); `6aeb20c7` (eng64)
+ chains the release behind a successful pack carrier and names a stalled
+ carrier's gate (`MME-CARRY-WAIT reason=...`), validation pending. The
+ remaining DS bits
+ are stage type/context (SPH5/SPH10/SPH18); stores still miss (`wrote=0`,
+ `px0=0`). The window/screen present is still the frontier (§6), and the
+ per-boot binding/X-first-generation lottery is the throughput limiter.
## 4. The channel and object picture
@@ -196,8 +213,8 @@ swaps, and the GR backend no longer times out (the pair-close/pair-safe
DDX/ScreenInit stability walls are closed, and the direct-GL ring/USERD
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.
+ the release call order (slot-34 `DRAW_IAB` before the setup calls) so the
+ draw issues and 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
@@ -223,10 +240,25 @@ requires it switched off, along with any external poke.
(`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
+ `0x86040626 -> 0x84000420` (reproduced on two boots). The release is
+ host-deterministic when the pack completes: the saved-window release
+ carrier snapshots the held window and re-submits it with calls released
+ once the pack is resident (c772: `MME-CARRY-SAVE win=240 held=68` ->
+ `MME-CARRY-FIRE mode=release` -> synthetic `GR LAUNCH push=0x6d6d6500` ->
+ `MME-PACK-REARM` gen=5 -> DS `0x84000420` -> `MME-CARRY-COMPLETE`); the
+ held-CALL census and SA[34] golden fill settle the call and its address
+ (`MME-CALL-TARGET slot=34 method=0x3910 client=0x265 golden=0x265
+ used=0x265`; `MME-GOLDEN sa-fill slot=34 entry=0x265`). The remaining
+ blocker is **call order**: the 728-B state window places the slot-34 run
+ at `off=0x340` after the `0x33/0x39` setup, so the last `0x39` latches DS
+ `0x84000420` and the MFE never reaches CALL(34) (c780 released
+ `0x33/0x39/0x0`); the 324-B DRAW window places it first (off `0x1c0`) and
+ ran `mac=0x22` (c716). The reorder `a03a68ea` (`[head binds][slot-34
+ run][rest]`) is landed but unexercised (the c781/c782 boots never completed
+ the pack), and pack completion is still a per-boot lottery (`6aeb20c7`,
+ eng64, chains the release behind a successful pack carrier and names the
+ stalled gate; validation pending). The remaining
+ DS bits are stage type/context (SPH5/SPH10/SPH18); 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
@@ -300,7 +332,11 @@ requires it switched off, along with any external poke.
| 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 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]` |
+| Saved-window release carrier: the held window is snapshotted at `MME-CALL-HOLD` and re-submitted with calls released once the pack is resident (c772: save 240/68 -> fire -> synthetic `GR LAUNCH 0x6d6d6500` -> REARM -> DS `0x84000420`) | `[live]` |
+| Held-CALL census + SA[34] golden fill: the slot-34 `DRAW_IAB` call is present in the saved 728-B window; `client=golden=used=0x265` (`MME-GOLDEN sa-fill slot=34 entry=0x265`) | `[live]` |
+| Call order: the 728-B window places slot-34 at `off=0x340` after the `0x33/0x39` setup, so the `0x39` DS latch pre-empts CALL(34) (c780: `mac=0x33/0x39/0x0`); the reorder `a03a68ea` is landed but unexercised | `[wall]` |
+| Pack-completion lottery (poisoned pack-part; no pump pass after the carry arm; carry-armed-never-fired) gates the deterministic release | `[wall]` |
+| DS `0x84000420` (SPH5/SPH10/SPH18 stage type/context) after the draw-issue call; 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]` |
@@ -318,8 +354,9 @@ requires it switched off, along with any external poke.
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, 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.
+ image is fetched by both vertex slots, but the 728-B window places the
+ slot-34 draw-issue call after the setup calls (so the DS latch pre-empts it)
+ 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