Developing FPGA-based GPUs with the FuryGpu project

Presented working prototype of the project FuryGpu, developing a homemade GPU based on the Xilinx Zynq UltraScale+ FPGA, designed as a separate board connected to a PC via the PCIe interface. Descriptions of hardware units are implemented in the SystemVerilog language, and the board design is prepared in the free computer-aided design system for printed circuit boards KiCAD. In its current form, the FuryGpu GPU can already run the Quake game with a rendering performance of 60 FPS at a resolution of 1280 x 720.

The project has been developing since 2021 as hobby a programmer specializing in computer game development and interested in hardware. Board diagrams, Verilog descriptions and drivers are not yet publicly available, but the author of the project stated O intention open all developments related to FuryGpu after agreeing on some legal issues with your employer (coordination is necessary to insure yourself against possible claims from the employer).

Advertisement

At the current stage of development, the capabilities of the GPU and driver stack are compared with an advanced video card from the mid-1990s. GPU capabilities are defined by a set of fixed functions, execution of software shaders is not yet supported, and the focus is on components for rendering, rasterization and texture processing. To perform graphics operations, it provides its own graphics API, FuryGL, which is similar to the ulkan API, but is not compatible with it due to the lack of shader support.

Among the options already available:

  • Four independent tile rasterizers;
  • GPU running at 400MHz, texture control unit running at 480MHz;
  • Frontend for performing floating point operations (fp32);
  • Mapping and texture processing unit supporting linear and bilinear filtering with support MIP texturing;
  • PCIe Gen 2×4 interface. Availability of DisplayPort and HDMI ports for connecting a monitor.

Thanks for reading:

Advertisement

Advertisement