In a nutshell: Can someone build a 3D graphics card from scratch? Dylan Barrie wanted to find out and spent four years trying. The result was a complete GPU that can theoretically run older gaming software on Windows.
Dylan Barrie is a game developer and hardware hobbyist. Over the last fourteen years of his career in the game industry, Barrie primarily focused on the software side of graphics rendering. However, he started developing a custom, full-stack GPU four years ago in his spare time.
Barrie said the process of creating a graphics card from the ground up was hellish, but after four years of diligence, he can finally share his efforts now that the add-in card design is essentially done. FuryGPU is a "real hardware GPU" built on a Xilinx Zynq UltraScale+ FPGA design. The card uses a custom PCB and connects to the host PC via a PCIe slot.
FuryGPU can support hardware features equivalent to a "high-end" graphics card from the mid-1990s, with a full software and driver stack for modern Windows versions. The GPU can render games from that decade with real-time, playable frame rates. Barrie will eventually release hardware schematics, software, and drivers through an open-source license.
The hardware homebrewer said he decided to build a graphics processor from scratch because he didn't know the "actual details" of how GPUs work. Being "extremely familiar" with the 3D rendering process from the software side, Barrie realized that creating a GPU could be a doable albeit daunting personal project.
He spent "countless hours" learning how FPGA chips work and how to build chip designs through hardware description, verification, and the implementation language SystemVerilog. Designing the schematics for a PCIe graphics card was a "herculean effort," Barrie said. Perhaps unsurprisingly, writing Windows drivers was the project's most painful task.
Also read: Anatomy of a Graphics Card
The developer wrote a custom graphics API to communicate with the GPU and created Windows kernel drivers for managing the display and audio signals. The FuryGPU can render Quake – the original Quake released in 1996 – at a "solid" 60 frames per second, which would have been a true pleasure for gamers in the 90s.
Barrie plans to write more about his GPU creation adventure on his FuryGPU blog, starting with the card's Texture Units. He also wants to optimize his custom Quake build to run much faster.