summaryrefslogtreecommitdiffstats
path: root/wiki/OpenGL.md
diff options
context:
space:
mode:
Diffstat (limited to 'wiki/OpenGL.md')
-rw-r--r--wiki/OpenGL.md35
1 files changed, 22 insertions, 13 deletions
diff --git a/wiki/OpenGL.md b/wiki/OpenGL.md
index 8264620..cc35fe6 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-10-30, tree `master @ b4930168`. Tags: `[live]` observed with the
+Status: 2026-11-09, tree `master @ 4acc81e8`. Tags: `[live]` observed with the
stock guest driver; `[wip]` partial; `[wall]` current blocker; `[target]`
defined success state.
@@ -41,9 +41,12 @@ Two forms of operation exist, and both are visible in the guest:
which executes it against its own GL context. Here the X server's channel
carries the graphics stream.
-On the emulated vGPU the readable command source today is the **X server's
-channel**, whose graphics-class (`0xC597`, `TURING_A`) sections the emulation
-captures and executes ([`Graphics-Execution.md`](Graphics-Execution.md) §3).
+On the emulated vGPU the readable command sources today are the **direct GL
+client's own channels** — the GR channel `0xbeef0100` and its CE siblings
+`0xbeef0101`/`0xbeef0102` — and the **X server's channels**, whose
+graphics-class (`0xC597`, `TURING_A`) sections the emulation captures and
+whose DDX kick channel (`0xbfef0002`) is decoded from its ring head
+([`Graphics-Execution.md`](Graphics-Execution.md) §3).
## 2. What an NVIDIA GL frame involves (observed shapes)
@@ -55,9 +58,10 @@ captures and executes ([`Graphics-Execution.md`](Graphics-Execution.md) §3).
data, and draw-issuing methods that drive the fixed-function pipeline
(vertex fetch, primitive assembly, rasterisation, fragment work, ROP).
* **Program/descriptor delivery** — the driver uploads shader code and
- descriptors through its copy/utility-channel inline-data path; this upload
- is the piece the emulation must materialise for the engine to run *real*
- programs ([`Vulkan.md`](Vulkan.md) has the mirror-image of the same gap).
+ descriptors through its copy/utility-channel inline-data path. The GL draw
+ path decodes these uploads and the engine executes the draw; Vulkan's
+ inline-to-memory arm is the remaining mirror-image gap
+ ([`Vulkan.md`](Vulkan.md)).
* **Present** — the X server's present/readback path runs as light 2D-class
and copy-engine operations; the emulator decodes and executes those shapes.
@@ -68,14 +72,16 @@ Rated honestly, against the milestone ladder in the plan:
| Item | State |
|---|---|
| X server initialises on the emulated vGPU (driver push-DMA sanity test, ScreenInit) | `[live]` |
-| `glxinfo -B` reports the NVIDIA renderer (OpenGL 4.6.0, driver 570.144) | `[live]` |
+| nvidia-modeset/NvKms registers (`/dev/dri/card0`, `renderD128`, `fb0`); `nvidia-smi -L` enumerates | `[live]` (campaign configuration) |
+| `glxinfo -B` reports the NVIDIA renderer (OpenGL 4.6.0, driver 570.144, direct rendering) | `[live]` |
| The X driver's RC-watchdog channel registers and its notifier is authored | `[live]` |
-| GZDoom launches and runs on the emulated vGPU | `[live]` (menu/frames black) |
+| GZDoom obtains a real GL context; windowed GZDoom reaches renderer startup | `[live]` (menu/frames black) |
| X server's `0xC597` graphics section captured and decoded | `[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: device-init gate handled; client channels allocate; readback path returns with no GL error | `[wip]` |
-| Direct GL client submits its per-frame draws | `[wall]` (no submissions observed) |
+| Direct GL client: device-init gate handled; client channels allocate; readback path returns with no GL error | `[live]` |
+| Direct GL client submits and retires its per-frame draws (GR `0xbeef0100`, CE `0xbeef0101`/`0xbeef0102`); DDX kick channel decoded | `[live]` |
+| X GLX context-creation completion and the client kick-slot word | `[wall]` |
| Non-black rendered frames through the emulated vGPU | `[wall]` |
| 60 fps sustained, no forcing (M-GL4) | `[target]` |
@@ -96,8 +102,11 @@ The graphics plan defines M-GL1 (client context-init decodes and executes; the
client leaves its retry loop), M-GL2 (`glxgears` non-black), M-GL3 (GZDoom GL
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 work is done — the client creates its channels and its
-readback path is clean — and pixels are the gate.
+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 engine authors stores — and the remaining gate is the X GLX
+context-creation completion plus the client kick-slot word before the first
+rendered frame.
## 6. What is not claimed