summaryrefslogtreecommitdiffstats
path: root/wiki/OpenGL.md
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-15 16:39:17 -0500
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-15 16:39:17 -0500
commit37b4d5756977b92d2c9f65ff9f3fa36462309c18 (patch)
tree7004e3b7511a370ff714f7258bf70d9c4fc92dd0 /wiki/OpenGL.md
parent6aeb20c735a4ff49f86c8a63df700af6108cad7f (diff)
downloadopen-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.md41
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.