summaryrefslogtreecommitdiffstats
path: root/wiki/OpenGL.md
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-10 16:42:39 -0500
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-10 16:42:39 -0500
commit25e3e800df8e5caf18d7e846a0cd36df4f5834f9 (patch)
treeaa39f53f4b136bf422994af90680191fa0ec743e /wiki/OpenGL.md
parentdf6e71bb5188bdc762ca0fbc73352f9067572589 (diff)
downloadopen-iov-25e3e800df8e5caf18d7e846a0cd36df4f5834f9.tar.gz
open-iov-25e3e800df8e5caf18d7e846a0cd36df4f5834f9.zip
wiki: 2026-11-10 afternoon refresh - first real GPU readback; direct-GL/window walls
Refresh STATE-CURRENT, the Main Page and the status/frontier pages: the DDX 3D replay executes and a guest pbuffer glClear+glReadPixels returns a red pixel (ff0000ff); the RM write-lock holder (Xorg in the DDX scrub wait) is fixed in df6e71bb. The direct-GL client channel still emits only setup/notify kicks (ops_runs=0), a window draw wedges X, and X startup/RM stability plus the DDX 4 GB sysmem allocation remain. Published to open-iov.org.
Diffstat (limited to 'wiki/OpenGL.md')
-rw-r--r--wiki/OpenGL.md32
1 files changed, 16 insertions, 16 deletions
diff --git a/wiki/OpenGL.md b/wiki/OpenGL.md
index c499967..7445d12 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-09, tree `master @ bb802909`. Tags: `[live]` observed with the
+Status: 2026-11-09, tree `master @ df6e71bb`. Tags: `[live]` observed with the
stock guest driver; `[wip]` partial; `[wall]` current blocker; `[target]`
defined success state.
@@ -80,17 +80,17 @@ Rated honestly, against the milestone ladder in the plan:
| 2D path end-to-end: accelerated X fills read back via `xwd` | `[live]` |
| Guest's real GL draws forward and execute on the physical GPU (`work_gr backend_ok=5-7`) | `[live]` |
| GR backend timeouts fixed (`backend_timeout=0`; draws retire in 3-2400 ms) | `[live]` |
-| CB-DIAG decodes the draw's fixed-CB stream (1492 `0x3800` offsets, 1092 words) | `[live]` |
-| Beef GR channel `0xbeef0100` captures real GL draw sections | `[live]` |
+| DDX 3D replay executes (`section captured` + `GR LAUNCH` on `0x1000014`, 12 launches/cycle) | `[live]` |
+| First real GPU readback: pbuffer `glClear(red)+glReadPixels` -> `pixel=ff0000ff` | `[live]` |
+| RM write-lock holder identified (Xorg in the DDX vidheap scrub wait) and fixed (`df6e71bb`) | `[live]` |
| Engine executes a launch built from the captured section (real `sm_75` SASS retired) | `[live]` |
| Verbatim 3D method-stream replay retired by the engine, no MMU fault | `[live]` |
-| Direct GL client submits and retires its per-frame draws (GR `0xbeef0100`, CE `0xbeef0101`/`0xbeef0102`); DDX kick channel decoded | `[live]` |
| X server survives the run on a 12 GB guest (the DDX's 4 GB sysmem allocation forces the size) | `[live]` |
-| Beef GR ring resolves deterministically; fixed-CB scan runs every cycle | `[wall]` |
-| Fixed-CB image's `0x80` MVP block becomes non-zero | `[wall]` |
-| Render-target bind matches the copy-out page | `[wall]` |
+| Direct-GL channel `0xbfef0002` submits a captured draw (`ops_runs>0`) | `[wall]` |
+| Window/screen present completes without wedging X (ivshmem frame path) | `[wall]` |
+| X startup/RM stability (`0x51`, vmalloc 96 GB) | `[wall]` |
| NVIDIA Vulkan ICD creates a device | `[wall]` |
-| Non-black rendered frames through the emulated vGPU | `[wall]` |
+| Non-black screen rendered frames through the emulated vGPU | `[wall]` |
| 60 fps sustained, no forcing (M-GL4) | `[target]` |
## 4. How OpenGL runs are verified
@@ -112,18 +112,18 @@ non-black through the mdev), M-GL4 (60 fps, no forcing), M-GL5 (two VMs, two
mdevs), M-GL6 (split-screen video). The project sits **between M-GL1 and
M-GL2**: the interface and execution work is done — the display/KMS stack
registers, X settles, the client submits and retires its GR/CE channels, and
-the guest's GL draws forward and execute on the physical GPU and X is
-reliable. The remaining gates are the beef GR ring resolution, the fixed-CB
-image's zero MVP block, and the render-target bind before the first rendered
-frame.
+the first real GPU readback is proven (pbuffer `pixel=ff0000ff`). The
+remaining gates are the direct-GL client's draw submission/capture on
+`0xbfef0002` and the window/screen present path (a window draw currently
+wedges X) before the first rendered screen frame.
## 6. What is not claimed
* No OpenGL frame from the emulated vGPU has produced real rendered pixels
- yet; every capture so far is black. glxgears completes swaps and its GL
- draws execute on the physical GPU, but the replayed draw still writes 0
- pages: the beef ring, the fixed-CB image's zero MVP block and the
- render-target bind are unresolved.
+ yet; every screen capture so far is black. The pbuffer probe renders and
+ reads back a red pixel, but the direct-GL client still emits only
+ setup/notify kicks, and a synchronous window draw wedges X. Those are the
+ current walls.
* No frame-rate or latency numbers.
* The published two-VM GZDoom demo videos used the labelled `virtio-gpu`/
`virgl` path, not the emulated vGPU.