{"video_id":"fp_iWQgcCwkDp","title":"This guy made his own graphics card!","channel":"Techquickie","show":"Techquickie","published_at":"2024-05-03T18:47:00.021Z","duration_s":341,"segments":[{"start_s":0.0,"end_s":3.2800000000000002,"text":"And most of you will know that you can build your own PC.","speaker":null,"is_sponsor":0},{"start_s":3.2800000000000002,"end_s":7.48,"text":"But have you ever thought about building your own graphics card at home?","speaker":null,"is_sponsor":0},{"start_s":7.48,"end_s":11.8,"text":"Sounds absolutely crazy, but one guy actually did this recently.","speaker":null,"is_sponsor":0},{"start_s":11.8,"end_s":16.92,"text":"Software engineer Dylan Berry has put together a fully assembled prototype he calls Fury","speaker":null,"is_sponsor":0},{"start_s":16.92,"end_s":21.92,"text":"GPU. And we sat down with him to find out exactly how he pulled this off.","speaker":null,"is_sponsor":0},{"start_s":21.92,"end_s":29.12,"text":"The heart of the Fury GPU design is a custom Zinc Ultra Scale Plus FPGA from Xilinx, which","speaker":null,"is_sponsor":0},{"start_s":29.12,"end_s":35.96,"text":"is now an AMD brand. And if you're not sure what an FPGA is, it stands for Field Programmable Gate Array.","speaker":null,"is_sponsor":0},{"start_s":35.96,"end_s":41.12,"text":"Essentially, it's a device that you can configure to be more specialized for certain applications,","speaker":null,"is_sponsor":0},{"start_s":41.12,"end_s":45.76,"text":"as opposed to a more typical desktop CPU that's designed in a more general way so it can run","speaker":null,"is_sponsor":0},{"start_s":45.76,"end_s":53.24,"text":"many different types of applications. The FPGA does include a small ARM processor that can run Linux, but the rest of it can","speaker":null,"is_sponsor":0},{"start_s":53.24,"end_s":58.88,"text":"be programmed to render graphics with a hardware description language, or HDL, which tells","speaker":null,"is_sponsor":0},{"start_s":58.88,"end_s":64.96,"text":"the FPGA how to actually organize its internal circuitry, small cells that can accept many","speaker":null,"is_sponsor":0},{"start_s":64.96,"end_s":72.12,"text":"different types of logic functions. Using his knowledge of graphics engineering, Berry was able to build an architecture optimized","speaker":null,"is_sponsor":0},{"start_s":72.12,"end_s":77.54,"text":"for graphics rendering, a process that took over three years, starting from simply getting","speaker":null,"is_sponsor":0},{"start_s":77.54,"end_s":82.8,"text":"an image on a screen, then building in support for drawing polygons, applying textures, and","speaker":null,"is_sponsor":0},{"start_s":82.8,"end_s":90.48,"text":"blending textures together. Because commercial GPU designs are trade secrets, Berry had to completely start from scratch","speaker":null,"is_sponsor":0},{"start_s":90.48,"end_s":95.6,"text":"instead of using a current GPU as a starting point, explaining why it took so long.","speaker":null,"is_sponsor":0},{"start_s":95.6,"end_s":100.72,"text":"But once the FPGA is completed, you of course need an actual board to install it on so it","speaker":null,"is_sponsor":0},{"start_s":100.72,"end_s":106.8,"text":"can act as a functional graphics card, since, you know, you can't just insert a bare FPGA","speaker":null,"is_sponsor":0},{"start_s":106.8,"end_s":111.04,"text":"into a regular motherboard. I mean, you can, it just, you're not gonna have a good time.","speaker":null,"is_sponsor":0},{"start_s":111.04,"end_s":116.84,"text":"Therefore, Berry also designed Fury GPU's board, a process he said took around one month","speaker":null,"is_sponsor":0},{"start_s":116.84,"end_s":121.44,"text":"and involved thinking carefully about how to lay components out on the board.","speaker":null,"is_sponsor":0},{"start_s":121.44,"end_s":127.08,"text":"Details like trace length were very important, as the various traces that feed the PCIe connector","speaker":null,"is_sponsor":0},{"start_s":127.08,"end_s":131.0,"text":"need to be very similar in length to help with signal integrity.","speaker":null,"is_sponsor":0},{"start_s":131.0,"end_s":135.2,"text":"Placement of these traces was also important to avoid crosstalk, you don't want them","speaker":null,"is_sponsor":0},{"start_s":135.2,"end_s":139.16,"text":"too close together, and he also had to consider what kind of power supplies to put on the","speaker":null,"is_sponsor":0},{"start_s":139.16,"end_s":145.16,"text":"card, as the FPGA itself needs a different voltage compared to the display outs.","speaker":null,"is_sponsor":0},{"start_s":145.16,"end_s":150.88,"text":"After Berry got his board design right, he then sent the files off to a PCB fab in China","speaker":null,"is_sponsor":0},{"start_s":150.88,"end_s":153.96,"text":"and got back, well, some PCBs.","speaker":null,"is_sponsor":0},{"start_s":153.96,"end_s":158.88,"text":"But keep in mind, these were only boards, meaning that to get a working graphics card,","speaker":null,"is_sponsor":0},{"start_s":158.88,"end_s":165.2,"text":"he had to install over 400 individual components such as capacitors and resistors himself,","speaker":null,"is_sponsor":0},{"start_s":165.2,"end_s":168.4,"text":"which of course involved lots of tedious soldering.","speaker":null,"is_sponsor":0},{"start_s":168.4,"end_s":173.08,"text":"Selling and testing the hardware itself took Berry around another two months, but at the","speaker":null,"is_sponsor":0},{"start_s":173.08,"end_s":177.52,"text":"end, he had a card that wasn't too different looking from some graphics cards from the","speaker":null,"is_sponsor":0},{"start_s":177.52,"end_s":183.72,"text":"1990s, but with modern display outs and PCI Express X4 support.","speaker":null,"is_sponsor":0},{"start_s":183.72,"end_s":189.0,"text":"And although current commercial graphics cards typically use X16, Fury GPU gets away with","speaker":null,"is_sponsor":0},{"start_s":189.0,"end_s":194.16,"text":"X4, as it moves far less data than the GPU you probably have in your desktop rig.","speaker":null,"is_sponsor":0},{"start_s":194.48,"end_s":199.52,"text":"We're talking less than one megabyte per frame, as it was designed with mid-90s games","speaker":null,"is_sponsor":0},{"start_s":199.52,"end_s":205.72,"text":"in mind. But even a perfectly executed piece of hardware is useless without the right software.","speaker":null,"is_sponsor":0},{"start_s":205.72,"end_s":211.12,"text":"Like any graphics card, Fury GPU needs some kind of driver in order to run.","speaker":null,"is_sponsor":0},{"start_s":211.12,"end_s":214.4,"text":"Berry said it took him about four months to get the drivers to work.","speaker":null,"is_sponsor":0},{"start_s":214.4,"end_s":220.2,"text":"Windows typically requires drivers to use an architecture called WDDM, and that requires","speaker":null,"is_sponsor":0},{"start_s":220.2,"end_s":224.76,"text":"support for hardware features you'd only find in mass-produced GPUs, such as support","speaker":null,"is_sponsor":0},{"start_s":224.76,"end_s":233.12,"text":"for modern versions of Direct 3D. To get around this, the Fury GPU driver is designed such that Windows instead sees it","speaker":null,"is_sponsor":0},{"start_s":233.12,"end_s":238.24,"text":"as a kernel mode display-only driver, which basically means that it will consider Fury","speaker":null,"is_sponsor":0},{"start_s":238.24,"end_s":244.36,"text":"GPU as being a simpler device that just displays an image instead of doing any actual rendering.","speaker":null,"is_sponsor":0},{"start_s":244.36,"end_s":251.08,"text":"However, the driver itself can switch modes and allow the GPU to actually render frames,","speaker":null,"is_sponsor":0},{"start_s":251.08,"end_s":255.48,"text":"so it kind of tricks Windows into thinking it's just showing the desktop when it's","speaker":null,"is_sponsor":0},{"start_s":255.48,"end_s":259.0,"text":"actually showing the game you're playing.","speaker":null,"is_sponsor":0},{"start_s":259.0,"end_s":266.12,"text":"Gamecheats Enabled The final product uses a custom API that's similar to Vulkan, and Berry was able to modify","speaker":null,"is_sponsor":0},{"start_s":266.12,"end_s":272.28,"text":"the renderer for the original Quake from 1996, getting it to run at 720p at around 60 frames","speaker":null,"is_sponsor":0},{"start_s":272.28,"end_s":277.64,"text":"per second. Unfortunately, it doesn't yet support modern shaders, which would allow for more lighting","speaker":null,"is_sponsor":0},{"start_s":277.64,"end_s":280.72,"text":"effects and other kinds of eye candy we're all used to today.","speaker":null,"is_sponsor":0},{"start_s":280.72,"end_s":286.44,"text":"Berry told us that shader support may be coming in the future, but FPGAs have their limits","speaker":null,"is_sponsor":0},{"start_s":286.44,"end_s":291.9,"text":"compared to mainstream GPUs, as they sacrifice performance for customizability.","speaker":null,"is_sponsor":0},{"start_s":291.9,"end_s":297.84,"text":"We may also see other games from the mid-90s get ported over to the Fury GPU, but can you","speaker":null,"is_sponsor":0},{"start_s":297.84,"end_s":301.36,"text":"actually get your hands on a Fury GPU and play games on it?","speaker":null,"is_sponsor":0},{"start_s":301.36,"end_s":306.76,"text":"I'm sure you're asking. We made it clear that this is mostly a passion project, and that he doesn't have plans","speaker":null,"is_sponsor":0},{"start_s":306.76,"end_s":312.16,"text":"to produce the Fury GPU for sale, especially as it's a continual work in progress that's","speaker":null,"is_sponsor":0},{"start_s":312.16,"end_s":316.8,"text":"currently being operated in a full development environment, so it's not like you can just","speaker":null,"is_sponsor":0},{"start_s":316.8,"end_s":321.28,"text":"slot it into your Windows PC, install the drivers, and have everything work flawlessly.","speaker":null,"is_sponsor":0},{"start_s":321.28,"end_s":326.64,"text":"Still, it's a super cool testament to what you can accomplish with enough time, effort,","speaker":null,"is_sponsor":0},{"start_s":326.64,"end_s":333.48,"text":"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.","speaker":null,"is_sponsor":0},{"start_s":333.48,"end_s":337.12,"text":"Comment below with video suggestions, and don't forget to subscribe and follow TechWiki.","speaker":null,"is_sponsor":0},{"start_s":337.12,"end_s":341.52,"text":"You've watched a couple of other videos and you didn't do that, so don't forget.","speaker":null,"is_sponsor":0}],"full_text":"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."}