summaryrefslogtreecommitdiffstats
path: root/wiki/Project-Plan.md
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-11 10:50:17 -0500
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-11 10:50:17 -0500
commit2f7635151e173e353d9105e4fef2aa343ea9a525 (patch)
tree01a05bb7b694c7aa1d3ac97dd95a062018630d98 /wiki/Project-Plan.md
parent4acac093f514b007915cab903e49e084f85a4e18 (diff)
downloadopen-iov-2f7635151e173e353d9105e4fef2aa343ea9a525.tar.gz
open-iov-2f7635151e173e353d9105e4fef2aa343ea9a525.zip
wiki: 2026-11-11 status refresh - first non-black GPU frames + 45.4 s video; direct-GL GR ring resolves; CE-ring/window walls (STATE-CURRENT too)
Diffstat (limited to 'wiki/Project-Plan.md')
-rw-r--r--wiki/Project-Plan.md26
1 files changed, 15 insertions, 11 deletions
diff --git a/wiki/Project-Plan.md b/wiki/Project-Plan.md
index 5694a77..dd8de18 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 @ df6e71bb`. Tags: `[done]`, `[active]`,
+Status: 2026-11-11, tree `master @ 4acac093`. Tags: `[done]`, `[active]`,
`[ahead]` — the plan's own state vocabulary, distinct from the goal tags.
## 1. How the plan works
@@ -40,11 +40,11 @@ itself:
## 2. The phases
-| Phase | What it delivers | Exit gate | State (2026-10-30) |
+| Phase | What it delivers | Exit gate | State (2026-11-11) |
|---|---|---|---|
| **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 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 |
+| **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 with M-GL2's off-screen half proven: the display/KMS and DDX replay machinery work, the first non-black GPU-rendered frames and a 45.4 s video are captured, and the direct-GL GR ring resolves; the direct-GL CE ring, 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,14 @@ available (P5 runs across the whole plan).
Ranked, in dependency order:
1. **Graphics pixels (P2).** The client and display stacks execute, the
- 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:
+ DDX 3D replay runs, the first non-black GPU-rendered frames and a 45.4 s
+ video are captured off-screen, and the direct-GL GR ring `0xbeef0100`
+ resolves with advancing releases. The named walls are the direct-GL CE
+ ring `0xbeef0101` (it never resolves, so GZDoom wedges ~90 s after
+ `V_Init`), the window/screen present path (glxgears' window is black and a
+ window draw wedges X), X startup/stability (`_nv052600rm` soft-lock,
+ `0x51`, vmalloc), and the DDX's 4 GB sysmem allocation (12 GB guest
+ workaround), then non-black window 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
@@ -83,8 +85,10 @@ 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`); 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.
+first non-black GPU-rendered frames with a captured video (the ring-ledger
+scrub release, `f6184ac3`); the direct-GL GR ring resolution (`4acac093`);
+the RM write-lock holder fix (`df6e71bb`); and the guest Vulkan pipeline
+running end to end.
## 4. The gates