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.
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.
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.