Can someone make a 3D graphics card from scratch? Dylan Barrie wanted to find out and spent four years trying. His achievement is a complete GPU that theoretically can run old game software on Windows.
Dylan Barrie is a game developer and hardware enthusiast. In his 14-year career in the gaming industry, Barrie has mainly focused on the software aspect of graphic rendering. However, four years ago, he began to develop a custom full-stack GPU in his spare time.
Barrie said that the process of creating a graphics card from scratch was a hellish ordeal, but after four years of relentless effort, he can finally share his hard work with everyone, and now the design work of the add-on card is essentially complete. FuryGPU is a “real hardware GPU” based on the Xilinx Zynq UltraScale+ FPGA design. The card uses a custom-printed circuit board and connects to the host through a PCIe slot.
FuryGPU can support hardware features equivalent to the “high-end” graphics cards of the mid-1990s and provides a complete software and driver stack for modern Windows versions. The graphics processor can render games of that era at real-time, playable frame rates. Barrie’s company will eventually release the hardware schematics, software, and drivers under an open-source license.
This hardware maker said he decided to make a graphics processor from scratch because he did not know the “actual details” of how a GPU works. Since he is “extremely familiar” with the software aspect of the 3D rendering process, Barrie realized creating a GPU could be a daunting but feasible personal project.
He spent “countless hours” learning how FPGA chips work and how to build chip designs using the hardware description, verification, and implementation language SystemVerilog. Barrie said that designing the schematic for the PCIe graphics card was a “formidable task.” Writing the Windows driver was the most painful task of the project, which is perhaps unsurprising.
The developer wrote a custom graphics API to communicate with the GPU and created a Windows kernel driver to manage the display and audio signals. FuryGPU can render Quake (the original released in 1996) at a “stable” 60 frames per second, which is a real treat for gamers of the 90s.
Barrie plans to write more articles about his GPU-making adventure on his FuryGPU blog, starting with the texture unit of the graphics card. He also hopes to optimize his custom Quake build version to run faster.
Disclaimer: This article is created by the original author. The content of the article represents their personal opinions. Our reposting is for sharing and discussion purposes only and does not imply our endorsement or agreement. If you have any objections, please contact us through the provided channels.