diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-22 16:55:19 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-22 16:55:19 -0400 |
| commit | b366b162a4442f694639d7622a0e00f0cfc6fee8 (patch) | |
| tree | 5c10d6f963467fd0c6e4c8596a5f95599f5596ff /wiki/open-iov.org/index.php?title=LIME_Is_Mediated_Emulation&action=info.html | |
| parent | 3855bb22d0400507def51881ebb688428963b7f9 (diff) | |
| download | open-iov-b366b162a4442f694639d7622a0e00f0cfc6fee8.tar.gz open-iov-b366b162a4442f694639d7622a0e00f0cfc6fee8.zip | |
r493 THE 3D-ENGINE WALL: serve the live GSP's own KGR static data to the guest
The X driver's nvSelect3DClass -> nv3dAllocDevice maps GR_GET_INFO index
SM_VERSION (0x0c) through an SM-version -> SPA-version table; the emulated
KGR_GET_INFO fill never set index 0x0c, so SM_VERSION read back as
SM_VERSION_NONE (0) and every Xorg/EGL session died at 'Failed to select a
3D engine' (the class list and the engine list were never the problem: the
X log carries neither 'Failed to determine graphics capabilities' nor
'Failed to determine engines list').
The physical backend already asks the LIVE GSP the real client's whole KGR
query set at mode-35 boot (gsp_phys_rmcall_user_lane_kgr_queries) and threw
the replies away. Retain them (generation-keyed, invalidated with the
backend static cache) and serve the identical bytes in the guest-side
GSP_RM_CONTROL dispatch for the same commands, so the guest's GL/3D stack
reads the device's true GR static values (SM_VERSION 0x75, warps, caps,
topology, ctx-buffer tables) instead of fabricated approximations. Falls
through to the emulated handlers unchanged when no capture exists (backend
not READY, other boot mode, cmd not captured) and never answers with more
bytes than the guest requested.
Diffstat (limited to 'wiki/open-iov.org/index.php?title=LIME_Is_Mediated_Emulation&action=info.html')
0 files changed, 0 insertions, 0 deletions
