And most of you will know that you can build your own PC.
But have you ever thought about building your own graphics card at home?
Sounds absolutely crazy, but one guy actually did this recently.
Software engineer Dylan Berry has put together a fully assembled prototype he calls Fury
GPU. And we sat down with him to find out exactly how he pulled this off.
The heart of the Fury GPU design is a custom Zinc Ultra Scale Plus FPGA from Xilinx, which
is now an AMD brand. And if you're not sure what an FPGA is, it stands for Field Programmable Gate Array.
Essentially, it's a device that you can configure to be more specialized for certain applications,
as opposed to a more typical desktop CPU that's designed in a more general way so it can run
many different types of applications. The FPGA does include a small ARM processor that can run Linux, but the rest of it can
be programmed to render graphics with a hardware description language, or HDL, which tells
the FPGA how to actually organize its internal circuitry, small cells that can accept many
different types of logic functions. Using his knowledge of graphics engineering, Berry was able to build an architecture optimized
for graphics rendering, a process that took over three years, starting from simply getting
an image on a screen, then building in support for drawing polygons, applying textures, and
blending textures together. Because commercial GPU designs are trade secrets, Berry had to completely start from scratch
instead of using a current GPU as a starting point, explaining why it took so long.
But once the FPGA is completed, you of course need an actual board to install it on so it
can act as a functional graphics card, since, you know, you can't just insert a bare FPGA
into a regular motherboard. I mean, you can, it just, you're not gonna have a good time.
Therefore, Berry also designed Fury GPU's board, a process he said took around one month
and involved thinking carefully about how to lay components out on the board.
Details like trace length were very important, as the various traces that feed the PCIe connector
need to be very similar in length to help with signal integrity.
Placement of these traces was also important to avoid crosstalk, you don't want them
too close together, and he also had to consider what kind of power supplies to put on the
card, as the FPGA itself needs a different voltage compared to the display outs.
After Berry got his board design right, he then sent the files off to a PCB fab in China
and got back, well, some PCBs.
But keep in mind, these were only boards, meaning that to get a working graphics card,
he had to install over 400 individual components such as capacitors and resistors himself,
which of course involved lots of tedious soldering.
Selling and testing the hardware itself took Berry around another two months, but at the
end, he had a card that wasn't too different looking from some graphics cards from the
1990s, but with modern display outs and PCI Express X4 support.
And although current commercial graphics cards typically use X16, Fury GPU gets away with
X4, as it moves far less data than the GPU you probably have in your desktop rig.
We're talking less than one megabyte per frame, as it was designed with mid-90s games
in mind. But even a perfectly executed piece of hardware is useless without the right software.
Like any graphics card, Fury GPU needs some kind of driver in order to run.
Berry said it took him about four months to get the drivers to work.
Windows typically requires drivers to use an architecture called WDDM, and that requires
support for hardware features you'd only find in mass-produced GPUs, such as support
for modern versions of Direct 3D. To get around this, the Fury GPU driver is designed such that Windows instead sees it
as a kernel mode display-only driver, which basically means that it will consider Fury
GPU as being a simpler device that just displays an image instead of doing any actual rendering.
However, the driver itself can switch modes and allow the GPU to actually render frames,
so it kind of tricks Windows into thinking it's just showing the desktop when it's
actually showing the game you're playing.
Gamecheats Enabled The final product uses a custom API that's similar to Vulkan, and Berry was able to modify
the renderer for the original Quake from 1996, getting it to run at 720p at around 60 frames
per second. Unfortunately, it doesn't yet support modern shaders, which would allow for more lighting
effects and other kinds of eye candy we're all used to today.
Berry told us that shader support may be coming in the future, but FPGAs have their limits
compared to mainstream GPUs, as they sacrifice performance for customizability.
We may also see other games from the mid-90s get ported over to the Fury GPU, but can you
actually get your hands on a Fury GPU and play games on it?
I'm sure you're asking. We made it clear that this is mostly a passion project, and that he doesn't have plans
to produce the Fury GPU for sale, especially as it's a continual work in progress that's
currently being operated in a full development environment, so it's not like you can just
slot it into your Windows PC, install the drivers, and have everything work flawlessly.
Still, it's a super cool testament to what you can accomplish with enough time, effort,
and patience with a soldering iron. Thanks for watching. If you liked the video, check out our other video on how CPUs and GPUs are different.
Comment below with video suggestions, and don't forget to subscribe and follow TechWiki.
You've watched a couple of other videos and you didn't do that, so don't forget.