Skip to content

Blitter (xt-blitter)

xt-blitter is the shared 2D drawing engine. It runs in the clk_sys domain as an AXI master, reading source pixels and writing the DDR3 framebuffer directly, so it off-loads fills, blits, and scaled or blended draws from every CPU realm.

Work arrives through a command queue — a ~1024-deep FIFO in BRAM. Each command is latched as a snapshot, so a producer can keep enqueuing while the engine drains the queue. Supported operations include:

  • Rectangle fill and pattern fill (RGBA-8888 pixels, with per-pixel alpha).
  • Block blit, and scaled blit with nearest-neighbour or bilinear sampling.
  • Alpha blending over the destination.
  • Line draw, rotate / affine transforms (some paths still done in software), and text / font raster.

The blitter is driven by register writes — from the X realm’s SALLY 6502 over the hwreg bus ($D4Bx / $D4Cx), or from the ARM PS over the AXI-Lite GP0 bridge. The full register layout, command encoding, and how GEM VDI calls map onto it are documented in VDI / blitter driver.