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/OpenGL.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/OpenGL.md')
| -rw-r--r-- | wiki/OpenGL.md | 41 |
1 files changed, 30 insertions, 11 deletions
diff --git a/wiki/OpenGL.md b/wiki/OpenGL.md index f07765f..8a5e256 100644 --- a/wiki/OpenGL.md +++ b/wiki/OpenGL.md @@ -12,7 +12,7 @@ > [`../docs/03-architecture/02-guest-stack-and-cudasw.md`](../docs/03-architecture/02-guest-stack-and-cudasw.md) > (the guest stack). The docs tree wins on disagreement. -Status: 2026-11-15, tree `master @ 692a7eb0`. Tags: `[live]` observed with the +Status: 2026-11-15, tree `master @ 6aeb20c7`. Tags: `[live]` observed with the stock guest driver; `[wip]` partial; `[wall]` current blocker; `[target]` defined success state. @@ -104,7 +104,11 @@ Rated honestly, against the milestone ladder in the plan: | 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 screen pixels | `[wall]` | | X screen-init first-generation lottery (`modeNum` parity; only an immediately-post-boot X passes DDX DMA init; dominant throughput limiter) | `[wip]` | | 60 fps sustained, no forcing (M-GL4) | `[target]` | @@ -143,12 +147,24 @@ prelude intact (84 words) and the DS stage VAs populated. The **DS stage-0/1 image is now authored and live** (a VTG SPH at `family+0x900`, first word `020a0481`, with the window's own slot-1 bind rewritten to it): 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), the draw-issue call (the -728-B window's released macros are `0x33/0x39/0x1/0x0`, not `DRAW_IAB`), so -the draw still does not store, the window/screen present path (glxgears' -window is black and a window draw can wedge X), and the per-boot binding/X -first-generation start lottery — then the first rendered screen frame. +`0x86040626 -> 0x84000420`, reproduced on two boots. The release path is now +host-deterministic when the pack completes: the saved-window release carrier +snapshots the held window and re-submits it with the calls released once the +pack is resident (c772 end to end), and the held-CALL census plus the SA[34] +golden fill prove the slot-34 `DRAW_IAB` call and its target are present +(`MME-CALL-TARGET slot=34 method=0x3910 client=0x265 golden=0x265 +used=0x265`). The remaining blocker is **call order**: the saved 728-B state +window places the slot-34 run after the `0x33/0x39` setup, so the last `0x39` +latches DS `0x84000420` and the MFE never reaches CALL(34) (c780); the 324-B +DRAW window places it first and ran `mac=0x22` (c716). A release-window +reorder (`a03a68ea`) is landed but not yet exercised, 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). +After that come the remaining DS stage type/context +bits (SPH5/SPH10/SPH18), the stores, the window/screen present path +(glxgears' window is black and a window draw can wedge X), and the per-boot +binding/X first-generation start lottery — then the first rendered screen +frame. ## 6. What is not claimed @@ -158,9 +174,12 @@ first-generation start lottery — then the first rendered screen frame. sysmem -> kvmfr ivshmem -> host reader), not from a windowed X screen capture. 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, a synchronous window draw can wedge X, and X start - retains a per-boot first-generation lottery. Those are the current walls. + fetched by both vertex slots; the release carrier can now replay the held + window deterministically when the pack completes, 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, a synchronous window draw + can wedge X, and X start retains a per-boot first-generation lottery. Those + are the current walls. * GZDoom reaching `V_Init: allocate screen` is not a rendered-frame claim; it proves the client's GL init and the direct-GL GR lane, not the game loop or a presented frame. |
