summaryrefslogtreecommitdiffstats
path: root/wiki/OpenGL.md
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-09 19:08:20 -0500
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-09 19:08:20 -0500
commit4a2cf8292ad37767de22a26e7e35d0a8a06edad3 (patch)
tree10f953a510175edd01b08ad14a8f9728abac34b3 /wiki/OpenGL.md
parent21e0d611b5efbdcf6a14520c3294d6a78bb32220 (diff)
downloadopen-iov-4a2cf8292ad37767de22a26e7e35d0a8a06edad3.tar.gz
open-iov-4a2cf8292ad37767de22a26e7e35d0a8a06edad3.zip
wiki: 2026-11-09 evening refresh 2 - forced GLX reaches glcore; windowed GL waits on kernel kick completion
Refresh STATE-CURRENT, the Main Page and the status/frontier pages: with SDL_VIDEO_X11_FORCE_EGL=0 the windowed GL path selects libnvidia-glcore, but the minimal glxgears hangs in the glcore kick wait (poll on the per-slot /dev/nvidia-modeset fd) while the host completes the beef notifier memory. The X DDX get-word/notifier completion, the DDX 4 GB sysmem footprint and physical dispatch of the GL draws remain. Published to open-iov.org.
Diffstat (limited to 'wiki/OpenGL.md')
-rw-r--r--wiki/OpenGL.md17
1 files changed, 11 insertions, 6 deletions
diff --git a/wiki/OpenGL.md b/wiki/OpenGL.md
index 08f26fa..45af4c8 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 @ e342bd0f`. Tags: `[live]` observed with the
+Status: 2026-11-09, tree `master @ 21e0d611`. Tags: `[live]` observed with the
stock guest driver; `[wip]` partial; `[wall]` current blocker; `[target]`
defined success state.
@@ -77,13 +77,16 @@ Rated honestly, against the milestone ladder in the plan:
| The X driver's RC-watchdog channel registers and its notifier is authored | `[live]` |
| GZDoom obtains a real GL context; windowed GZDoom reaches renderer startup | `[live]` (menu/frames black) |
| GZDoom reaches `MAP01` on Mesa llvmpipe (not the emulated vGPU path) | `[wip]` |
+| Forced GLX (`SDL_VIDEO_X11_FORCE_EGL=0`) selects `libnvidia-glcore` | `[live]` |
+| Windowed GL present/kick completion (minimal `glxgears`) | `[wall]` |
| X server survives the GZDoom run on a 12 GB guest (the DDX's 4 GB sysmem allocation forces the size) | `[live]` |
| 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 | `[live]` |
| Direct GL client submits and retires its per-frame draws (GR `0xbeef0100`, CE `0xbeef0101`/`0xbeef0102`); DDX kick channel decoded | `[live]` |
-| NVIDIA Vulkan ICD creates a device, or forced GLX (`SDL_VIDEO_X11_FORCE_EGL=0`) reaches glcore | `[wall]` |
+| Guest kernel observes the kick completion and signals the modeset event | `[wall]` |
+| NVIDIA Vulkan ICD creates a device | `[wall]` |
| DDX push-buffer get-word publish and notifier recycle | `[wall]` |
| Physical dispatch of the direct-GL draws (`forwarded=0`) | `[wall]` |
| Non-black rendered frames through the emulated vGPU | `[wall]` |
@@ -108,15 +111,17 @@ 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 engine authors stores — and the remaining gates are the NVIDIA renderer
-path (Vulkan ICD or forced GLX), the X DDX get-word/notifier completion, and
-physical dispatch of the client's draws before the first rendered frame.
+the engine authors stores — and the remaining gates are the kernel-visible GL
+present/kick completion, the X DDX get-word/notifier completion, and physical
+dispatch of the client's draws before the first rendered 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. GZDoom reaching `MAP01` on Mesa
- llvmpipe is not a rendered frame from the emulated vGPU.
+ llvmpipe is not a rendered frame from the emulated vGPU, and the forced-GLX
+ run selects `libnvidia-glcore` but hangs in the present/kick wait
+ (`glxgears` reproduces it).
* No frame-rate or latency numbers.
* The published two-VM GZDoom demo videos used the labelled `virtio-gpu`/
`virgl` path, not the emulated vGPU.