summaryrefslogtreecommitdiffstats
path: root/userspace/lib/libvgpu.c
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-05 09:57:00 -0500
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-05 09:57:00 -0500
commitf9cecd5faafd9cd59cd1da764fbc6df32b154d97 (patch)
tree0bb9130c574d4db341e4067ed6467ddd172c9838 /userspace/lib/libvgpu.c
parent4e65e2e28ee595e9210992752201a0c9c0143ba3 (diff)
downloadopen-iov-f9cecd5faafd9cd59cd1da764fbc6df32b154d97.tar.gz
open-iov-f9cecd5faafd9cd59cd1da764fbc6df32b154d97.zip
vgsp-gr: bind the beef GL draw to the captured 900-page screen surface, not a cross-VAS 10-page operand buffer
The PS SPH has MRT_ENABLE=0 (writes RT0); the beef window binds no colour target of its own, so the last trusted 0x800..0xbff run (the X screen surface 0x120400000, 1280x720, 900 pages) is the render target. Its pages were resolved through the global VA-keyed pin/ledger, which conflated clients: the beef client's own injected pin for VA 0x120400000 (a SYS staging/operand buffer holding SASS/method words) shadowed the X server's surface VAS and cut the set at 10 pages. Capture the surface's source VAS and resolve its pages through that VAS in the fill, bypassing the pin override for this page set. Re-patch the SURF prelude when the launch's rec base differs from the cached one, and copy the emitted SURF run's target/geometry into the RT0 run so RT0 == RT1 every launch (was hardcoded to the 0xa relocation half). r1483: the beef retirement is now 0/900 pages of the visible surface (was 0/10), RT0-BIND target=0xa000000, data[0] va=0x120400000 pa=0x100000, n_data =900, 6 launches, poison=0. The engine still stores nothing: GR-STATE sph is zero at retire and the launch traps at method 0x1528, so the next wall is making the pipeline program bind visible to the DS, not the RT VA.
Diffstat (limited to 'userspace/lib/libvgpu.c')
0 files changed, 0 insertions, 0 deletions