From 361d7d13842608aa7d7bd4cb187d540518bb09e3 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Tue, 10 Nov 2026 06:05:01 -0500 Subject: wiki: 2026-11-10 morning refresh - X reliable, GR timeouts fixed; beef-ring/CB/RT walls Refresh STATE-CURRENT, the Main Page and the status/frontier pages: ebf3130f fixes the X DMA-init path and flips the GR pair-close/pair-safe replay fixes default ON (X green on attempt 1 in three consecutive cycles, backend_timeout=0, draws retire in 3-2400 ms); bb802909 is committed. The replayed draw still writes 0 pages; the beef GR ring resolution, the fixed-CB image's zero 0x80 MVP block and the render-target bind are the named walls. Published to open-iov.org. --- wiki/OpenGL.md | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'wiki/OpenGL.md') diff --git a/wiki/OpenGL.md b/wiki/OpenGL.md index 1219b84..c499967 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 @ cb8e822b`. Tags: `[live]` observed with the +Status: 2026-11-09, tree `master @ bb802909`. Tags: `[live]` observed with the stock guest driver; `[wip]` partial; `[wall]` current blocker; `[target]` defined success state. @@ -75,18 +75,20 @@ Rated honestly, against the milestone ladder in the plan: | 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]` | -| X server green with `sema_vas_cand_ms=1`; `glxinfo -B` NVIDIA 4.6.0 direct | `[live]` | +| X green on attempt 1 in three consecutive cycles (`ebf3130f`) | `[live]` | | GSP event-IRQ fix wakes the guest poll; glxgears completes swaps | `[live]` | | 2D path end-to-end: accelerated X fills read back via `xwd` | `[live]` | -| Guest's real GL draws forward and execute on the physical GPU (`work_gr backend_ok=9`) | `[live]` | +| Guest's real GL draws forward and execute on the physical GPU (`work_gr backend_ok=5-7`) | `[live]` | +| GR backend timeouts fixed (`backend_timeout=0`; draws retire in 3-2400 ms) | `[live]` | +| CB-DIAG decodes the draw's fixed-CB stream (1492 `0x3800` offsets, 1092 words) | `[live]` | | Beef GR channel `0xbeef0100` captures real GL draw sections | `[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 submits and retires its per-frame draws (GR `0xbeef0100`, CE `0xbeef0101`/`0xbeef0102`); DDX kick channel decoded | `[live]` | | X server survives the run on a 12 GB guest (the DDX's 4 GB sysmem allocation forces the size) | `[live]` | -| Constant-buffer (MVP) page resolves and the draw writes render-target pixels | `[wall]` | -| MME front-end defer / GR stale-wedge stability | `[wall]` | -| DDX push-buffer get-word publish and notifier recycle | `[wall]` | +| Beef GR ring resolves deterministically; fixed-CB scan runs every cycle | `[wall]` | +| Fixed-CB image's `0x80` MVP block becomes non-zero | `[wall]` | +| Render-target bind matches the copy-out page | `[wall]` | | NVIDIA Vulkan ICD creates a device | `[wall]` | | Non-black rendered frames through the emulated vGPU | `[wall]` | | 60 fps sustained, no forcing (M-GL4) | `[target]` | @@ -110,17 +112,18 @@ 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 guest's GL draws forward and execute on the physical GPU. The remaining -gates are the constant-buffer (MVP) page, the MME front-end/stale-wedge -stability, and the X DDX get-word/notifier completion before the first -rendered frame. +the guest's GL draws forward and execute on the physical GPU and X is +reliable. The remaining gates are the beef GR ring resolution, the fixed-CB +image's zero MVP block, and the render-target bind 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. glxgears completes swaps and its GL - draws execute on the physical GPU, but the constant-buffer (MVP) page does - not resolve, so the engine writes 0 pages. + draws execute on the physical GPU, but the replayed draw still writes 0 + pages: the beef ring, the fixed-CB image's zero MVP block and the + render-target bind are unresolved. * No frame-rate or latency numbers. * The published two-VM GZDoom demo videos used the labelled `virtio-gpu`/ `virgl` path, not the emulated vGPU. -- cgit v1.2.3