From 25e3e800df8e5caf18d7e846a0cd36df4f5834f9 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Tue, 10 Nov 2026 16:42:39 -0500 Subject: 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. --- wiki/Project-Plan.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'wiki/Project-Plan.md') diff --git a/wiki/Project-Plan.md b/wiki/Project-Plan.md index 0361ed6..5694a77 100644 --- a/wiki/Project-Plan.md +++ b/wiki/Project-Plan.md @@ -15,7 +15,7 @@ > [`../docs/06-portability/03-device-validation-and-porting-sequence.md`](../docs/06-portability/03-device-validation-and-porting-sequence.md); > the docs tree wins on disagreement. -Status: 2026-11-09, tree `master @ bb802909`. Tags: `[done]`, `[active]`, +Status: 2026-11-09, tree `master @ df6e71bb`. Tags: `[done]`, `[active]`, `[ahead]` — the plan's own state vocabulary, distinct from the goal tags. ## 1. How the plan works @@ -44,7 +44,7 @@ itself: |---|---|---|---| | **P0 — Platform** | Emulated vGPU device, GSP boot and GSP-RM emulation, stock guest driver initialisation | Driver-API smoke green (`ALL OK`) = evaluation rung 2 | `[done]` | | **P1 — First execution (compute)** | Guest CUDA kernels executing on the physical GPU, with engine-authored completions; then hardening | Verified clients + engine-authored completion = rung 3 core; hardening: staged-transfer class, every-boot acceptance, per-guest isolation | `[active]` — execution green; hardening in progress | -| **P2 — Graphics execution** | OpenGL/Vulkan draw commands executed by the physical 3D pipeline and delivered as readable pixels | The graphics ladder: M-GL1 client context-init executes; M-GL2 `glxgears` non-black; M-GL3 GZDoom GL non-black through the mdev | `[active]` — between M-GL1 and M-GL2; the display/KMS and direct-GL channel work is live, X is reliable, and the guest's GL draws execute on the physical GPU; the beef GR ring resolution, the fixed-CB image's zero MVP block and the render-target bind are the walls | +| **P2 — Graphics execution** | OpenGL/Vulkan draw commands executed by the physical 3D pipeline and delivered as readable pixels | The graphics ladder: M-GL1 client context-init executes; M-GL2 `glxgears` non-black; M-GL3 GZDoom GL non-black through the mdev | `[active]` — between M-GL1 and M-GL2; the display/KMS and DDX replay machinery work and the first real GPU readback is proven (pbuffer red pixel); the direct-GL draw capture, the window/screen present and X stability are the walls | | **P3 — Sustained and multi-tenant** | Frame rates without assistance; multiple VMs sharing the GPU with measured fairness; soak-stable operation | Graphics M-GL4 (60 fps, no forcing) and M-GL5 (two VMs, two mdevs); CUDA battery + soak; per-guest execution isolation = rungs 4/5 | `[ahead]` | | **P4 — Breadth** | Video (NVENC/NVDEC), Windows/DirectX guests, live migration, non-KVM hypervisor transports | Per-case bring-up gates plus the matrix's evidence expectations | `[ahead]` | | **P5 — Scale and portability** | New GPU generations and driver families carried forward; published performance programme | A profile + measured delta per version, validated on hardware; A/B numbers published per the measurement contract | `[ahead]` | @@ -58,12 +58,12 @@ available (P5 runs across the whole plan). Ranked, in dependency order: 1. **Graphics pixels (P2).** The client and display stacks execute, the - guest's GL draws forward and execute on the physical GPU, X is reliable, - and the 2D path is green; the named walls are the beef GR ring resolution - (the fixed-CB scan only runs when `0xbeef0100`'s ring resolves - deterministically), the fixed-CB image's zero `0x80` MVP block (parser - bugs identified), the render-target bind, and the DDX's 4 GB sysmem - allocation (12 GB guest workaround), then non-black frames. Full detail: + DDX 3D replay runs, and the first real GPU readback is proven (pbuffer + red pixel); the named walls are the direct-GL client's draw + submission/capture on `0xbfef0002` (setup/notify only, `ops_runs=0`), the + window/screen present path (a window draw wedges X), X startup/RM + stability (`0x51`), and the DDX's 4 GB sysmem allocation (12 GB guest + workaround), then non-black screen frames. Full detail: [`Graphics-Execution.md`](Graphics-Execution.md) §6. 2. **Compute hardening (P1).** The staged-transfer class (failure modes proven, fixes in flight); the every-boot acceptance campaign; per-guest execution @@ -81,10 +81,10 @@ bring-up (NvKms registers, X settles, GL 4.6); the UVM channel-pool tracker; the direct-GL GR release and CE ring discovery; the X DDX kick-channel decode and its three wait fixes (class-aware display arm, `0x8000 -> 0` notification completion, decoded GL release applied); the GSP event-IRQ fix that completes -swaps; the X DMA-init fix (`ebf3130f`) that makes X green on attempt 1; the -GR backend timeout fix (`backend_timeout=0`); the 2D path end-to-end; the -guest's real GL draws forwarding and executing on the physical GPU -(`backend_ok=5-7`); and the guest Vulkan pipeline running end to end. +swaps; the X DMA-init fix (`ebf3130f`); the GR backend timeout fix +(`backend_timeout=0`); the 2D path end-to-end; the DDX 3D replay and the +first real GPU readback (pbuffer `pixel=ff0000ff`); the RM write-lock holder +fix (`df6e71bb`); and the guest Vulkan pipeline running end to end. ## 4. The gates -- cgit v1.2.3