summaryrefslogtreecommitdiffstats
path: root/wiki/Project-Plan.md
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-15 14:11:01 -0500
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-15 14:11:01 -0500
commitb8004cdcce75f9cbe0070f9f52b49fa914bdebf3 (patch)
tree9de523a9b1bc9570ebd3d5a02fa607190acafee4 /wiki/Project-Plan.md
parent692a7eb0c5d13a2f4b22c5bdad80b3749c6cf7ef (diff)
downloadopen-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/Project-Plan.md')
-rw-r--r--wiki/Project-Plan.md23
1 files changed, 12 insertions, 11 deletions
diff --git a/wiki/Project-Plan.md b/wiki/Project-Plan.md
index 293e6c6..9f8b55d 100644
--- a/wiki/Project-Plan.md
+++ b/wiki/Project-Plan.md
@@ -15,8 +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-15, tree `master @ 444ae2c1` plus in-flight graphics changes in
-the working tree. Tags: `[done]`, `[active]`,
+Status: 2026-11-15, tree `master @ 692a7eb0`. Tags: `[done]`, `[active]`,
`[ahead]` — the plan's own state vocabulary, distinct from the goal tags.
## 1. How the plan works
@@ -41,11 +40,11 @@ itself:
## 2. The phases
-| Phase | What it delivers | Exit gate | State (2026-11-14) |
+| Phase | What it delivers | Exit gate | State (2026-11-15) |
|---|---|---|---|
| **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 with M-GL2's off-screen half proven: the display/KMS and DDX replay machinery work, X + stock GLX are green, the first non-black GPU-rendered frames and videos are captured, the X DDX/ScreenInit stability walls are closed, captured GL sections execute on the engine, the direct-GL submission is fully decoded (macro-driven, no classic draw header), the client's draw-state push reaches the engine, the MME pack completes and the `DRAW_IAB` macro executes; the remaining walls are the DS stage image (so the draw stores), the window/screen present, and the per-boot binding/X first-generation start lottery |
+| **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, X + stock GLX are green, the first non-black GPU-rendered frames and videos are captured, the X DDX/ScreenInit stability walls are closed, captured GL sections execute on the engine, the direct-GL submission is fully decoded (macro-driven, no classic draw header), the client's draw-state push reaches the engine, the MME pack completes, the `DRAW_IAB` macro executes, the DS stage image is authored and live for both vertex slots (`st0=st1=020a0481`); the remaining walls are the remaining DS stage type/context bits, the draw-issue `mac=0x22`/stores, the window/screen present, and the per-boot binding/X first-generation start lottery |
| **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]` |
@@ -67,13 +66,15 @@ Ranked, in dependency order:
draw header), and the client's draw-state push reaches the engine with the
golden MME overlay. The MME pack then completes and `DRAW_IAB` (`mac=0x22`)
executes with the SPH-BIND prelude intact and the DS stage VAs populated.
- The named walls are the **DS stage-0/1 image** (the synthesized binds read
- `family+0x900`, zero in the live family page, while the client's VTG SPH
- image is at `family+0x600`; the `+0x600` bind is in flight), the
- window/screen present path (glxgears' window is black and a window draw
- wedges X), the per-boot binding/X first-generation start lottery (even
- `modeNum` required; now the dominant throughput limiter), and then
- non-black window frames.
+ The **DS stage-0/1 image is now authored and live** (a VTG SPH at
+ `family+0x900`, first word `020a0481`; the window's own slot-1 bind is
+ rewritten to it; DS `0x86040626 -> 0x84000420`, two boots). The named walls
+ are the remaining DS stage type/context bits (SPH5/SPH10/SPH18) plus the
+ draw-issue call (the 728-B window's released macros are `0x33/0x39/0x1/0x0`,
+ not `DRAW_IAB`), the window/screen present path (glxgears' window is black
+ and a window draw wedges X), the per-boot binding/X first-generation start
+ lottery (even `modeNum` required; now the dominant throughput limiter), and
+ 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,