diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-15 14:11:01 -0500 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-15 14:11:01 -0500 |
| commit | b8004cdcce75f9cbe0070f9f52b49fa914bdebf3 (patch) | |
| tree | 9de523a9b1bc9570ebd3d5a02fa607190acafee4 /wiki/OpenGL.md | |
| parent | 692a7eb0c5d13a2f4b22c5bdad80b3749c6cf7ef (diff) | |
| download | open-iov-b8004cdcce75f9cbe0070f9f52b49fa914bdebf3.tar.gz open-iov-b8004cdcce75f9cbe0070f9f52b49fa914bdebf3.zip | |
docs(wiki): 2026-11-15 status refresh - DS stage image authored+live (st0=st1=020a0481; DS 0x84000420, two boots); draw-issue mac=0x22 and stores remain; STATE-CURRENT snapshot
Diffstat (limited to 'wiki/OpenGL.md')
| -rw-r--r-- | wiki/OpenGL.md | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/wiki/OpenGL.md b/wiki/OpenGL.md index 3d04e8e..f07765f 100644 --- a/wiki/OpenGL.md +++ b/wiki/OpenGL.md @@ -12,8 +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 @ 444ae2c1` plus in-flight graphics changes in -the working tree. Tags: `[live]` observed with the +Status: 2026-11-15, tree `master @ 692a7eb0`. Tags: `[live]` observed with the stock guest driver; `[wip]` partial; `[wall]` current blocker; `[target]` defined success state. @@ -103,8 +102,9 @@ Rated honestly, against the milestone ladder in the plan: | 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 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]` | @@ -139,13 +139,16 @@ client's draw-state push opens, captures and reaches the engine. The MME chain now completes and executes the draw macro: multi-frame keep-windows land, the 2799-word pack completes (2799/2799), the first `MME-PACK-REARM` fires, the fixed-CB region is aliased, and `DRAW_IAB` (`mac=0x22`) runs with the SPH-BIND -prelude intact (84 words) and the DS stage VAs populated. The remaining gates -are the **DS stage-0/1 image** (the synthesized binds read `family+0x900`, -which is zero in the live family page, while the client's VTG SPH image is at -`family+0x600`; the `+0x600` bind is in flight) so the draw 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. +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. ## 6. What is not claimed @@ -154,10 +157,10 @@ first rendered screen frame. videos (45.4 s and 50 s) come from the off-screen pbuffer path (pbuffer -> 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, but the DS stage image is not yet - right so the draw never stores, a synchronous window draw wedges X, and X - start retains a per-boot first-generation lottery. Those are the current - walls. + 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. * 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. |
