diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-15 16:39:17 -0500 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-15 16:39:17 -0500 |
| commit | 37b4d5756977b92d2c9f65ff9f3fa36462309c18 (patch) | |
| tree | 7004e3b7511a370ff714f7258bf70d9c4fc92dd0 /wiki/Graphics-Execution.md | |
| parent | 6aeb20c735a4ff49f86c8a63df700af6108cad7f (diff) | |
| download | open-iov-37b4d5756977b92d2c9f65ff9f3fa36462309c18.tar.gz open-iov-37b4d5756977b92d2c9f65ff9f3fa36462309c18.zip | |
docs(wiki): 2026-11-15 evening status refresh - held-window release carrier deterministic (c772), slot-34/SA[34] settled (0x265), call order is the blocker; eng64 chains the release behind the pack carrier; STATE-CURRENT snapshot
Diffstat (limited to 'wiki/Graphics-Execution.md')
| -rw-r--r-- | wiki/Graphics-Execution.md | 71 |
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 |
