Skip to content

wgpu: VPro raster unit on the host GPU, and a wgpu window - #444

Merged
techomancer merged 1 commit into
mainfrom
wgpu
Nov 7, 2026
Merged

techomancer merged 1 commit into
mainfrom
wgpu

Conversation

@techomancer

Copy link
Copy Markdown
Owner

A common wgpu layer (src/wgpu) for host-GPU rasterisation, and the VPro (Odyssey) raster unit built on it, word for word with the CPU pipeline.

  • The board draws on the GPU raster unit with board memory mirrored on the CPU; dirty maps both ways, region readbacks, no waits on texture and image uploads (blit records, mip levels and scratch images as regions).
  • The texture unit runs on the GPU.
  • Batches submit as the board idles or after 4 ms; display swaps wait on stream positions, so a flip shows only drawing that has completed.
  • Window-id bytes written by GPU blits are also stored in the mirror, since the display front end reads them without waiting.
  • The VPro display composes on the GPU.
  • New window renderer: renderer = "wgpu" (or --renderer wgpu). VPro frames stay on the device, nothing is read back unless a screenshot or VNC asks. Newport's compositor runs as a WGSL kernel. GL stays the default; iris-gui is unchanged.
  • Testing: the CPU and GPU units agree on recorded sessions (new test), and on the guest GL suites, visual sweeps, piglit and seven X visual modes. New guest suite drivers in test/gltest (glsuite.sh, xsweep.sh, glsuite-compare.sh) and replay knobs (VPRO_REPLAY_WRITES, VPRO_REPLAY_TICK).

Squashed from the wgpu-raster branch.

A common wgpu layer (src/wgpu) for host-GPU rasterisation, and the VPro
(Odyssey) raster unit built on it, word for word with the CPU pipeline.

- The board draws on the GPU raster unit with board memory mirrored on the
  CPU; dirty maps both ways, region readbacks, no waits on texture and
  image uploads (blit records, mip levels and scratch images as regions).
- The texture unit runs on the GPU.
- Batches submit as the board idles or after 4 ms; display swaps wait on
  stream positions, so a flip shows only drawing that has completed.
- Window-id bytes written by GPU blits are also stored in the mirror,
  since the display front end reads them without waiting.
- The VPro display composes on the GPU.
- New window renderer: renderer = "wgpu" (or --renderer wgpu). VPro frames
  stay on the device, nothing is read back unless a screenshot or VNC asks.
  Newport's compositor runs as a WGSL kernel. GL stays the default; iris-gui
  is unchanged.
- Testing: the CPU and GPU units agree on recorded sessions (new test), and
  on the guest GL suites, visual sweeps, piglit and seven X visual modes.
  New guest suite drivers in test/gltest (glsuite.sh, xsweep.sh,
  glsuite-compare.sh) and replay knobs (VPRO_REPLAY_WRITES, VPRO_REPLAY_TICK).

Squashed from the wgpu-raster branch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@techomancer
techomancer merged commit 60a7700 into main Nov 7, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant