SDGPU - FPGA Linux GUP

Project and Motivation

  • Video output and accelerated rendering are an increasing important need for personal computers.
  • FPGAs provide a hardware platform for reconfigurable hardware acceleration.
  • This project involves designing and building a hardware platform, FPGA logic, and Linux driver stack for video output and accelerated rendering.
  • Targeting a PCIe add-in card form factor with 1080p 60 Hz output via HMDI means the system works out of the box with nearly all modern hardware.
  • An extensible software and HDL design serves to provide a platform for computational and graphical acceleration.
uml diagram

Methods

  • Designed around a Xilinx 7-Series FPGA (XC7A200T). Support for custom hardware and off-the-shelf Xilinx evaluation platforms (AC701).
  • Host software provides support for X-server output using Direct Rendering Manager / Kernel Mode Setting interface.
  • OpenGL rendering acceleration provided through a custom Mesa / Gallium hardware driver.
computer chips diagram

Conclusion

  • The HDL design and driver stack provide a full video output solution for Linux hosts running kernel 5.4 and later.
  • The system provides OpenGL-based hardware acceleration for host applications (TODO: put benchmarks here when finalized).
  • The OpenGL API surface is large, and I was able to implement only a portion. More work is needed (primarily in HDL) to provide support for everything.
  • Hardware, HDL, and software design files are publicly available on Github. The design can be modified and run by anyone with a PC and FPGA evaluation board.