WEBVTT

00:00:00.199 --> 00:00:06.399
most of you will know that you can build your own PC but have you ever thought

00:00:03.919 --> 00:00:11.840
about building your own graphics card at home sounds absolutely crazy but one guy

00:00:09.639 --> 00:00:17.119
actually did this recently software engineer Dylan Barry has put together a

00:00:14.160 --> 00:00:22.359
fully assembled prototype he calls Fury GPU and we sat down with him to find out

00:00:19.880 --> 00:00:29.240
exactly how he pulled this off the heart of the fury GPU design is a custom zinc

00:00:25.279 --> 00:00:31.400
ultrascale plus fpga from zyink which is

00:00:29.240 --> 00:00:36.719
now an AM dbrand and if you're not sure what an fpga is it stands for field

00:00:34.239 --> 00:00:40.160
programmable gate array essentially it's a device that you can configure to be

00:00:38.559 --> 00:00:44.320
more specialized for certain applications as opposed to a more

00:00:41.920 --> 00:00:48.559
typical desktop CPU that's designed in a more General way so it can run many

00:00:46.199 --> 00:00:53.399
different types of applications the fpga does include a small ARM processor that

00:00:51.280 --> 00:00:58.359
can run Linux but the rest of it can be programmed to render graphics with a

00:00:55.480 --> 00:01:03.519
hardware description language or HDL which tells the fbga how to actually

00:01:00.640 --> 00:01:07.320
organize its internal circuitry small cells that can accept many different

00:01:05.239 --> 00:01:11.479
types of logic functions using his knowledge of Graphics engineering Barry

00:01:09.600 --> 00:01:16.560
was able to build an architecture optimized for graphics rendering a

00:01:13.799 --> 00:01:20.720
process that took over 3 years starting from Simply getting an image on a screen

00:01:18.799 --> 00:01:25.840
then building in support for drawing polygons applying textures and blending

00:01:23.280 --> 00:01:30.920
textures together because commercial GPU designs are Trade Secrets Barry had to

00:01:28.720 --> 00:01:35.799
completely start from scratch instead of using a current GPU as a starting point

00:01:33.520 --> 00:01:40.720
explaining why it took so long but once the fpga is completed you of course need

00:01:38.280 --> 00:01:45.520
an actual board to install it on so it can act as a functional graphics card

00:01:43.399 --> 00:01:49.920
since you know you can't just insert a bare fpga into a regular motherboard I

00:01:48.479 --> 00:01:54.920
mean you can it just you're not going to have a good time therefore Barry also

00:01:52.000 --> 00:01:59.280
designed Fury gpus board a process he said took around 1 month and involved

00:01:57.439 --> 00:02:04.320
thinking carefully about how to lay components out on the board details like

00:02:01.759 --> 00:02:08.280
Trace length were very important as the various traces that feed the PCIe

00:02:06.320 --> 00:02:12.560
connector need to be very similar in length to help with signal Integrity

00:02:10.479 --> 00:02:16.560
placement of these traces was also important to avoid cross talk you don't

00:02:14.640 --> 00:02:20.840
want them too close together and he also had to consider what kind of power

00:02:18.239 --> 00:02:25.640
supplies to put on the card as the fpga itself needs a different voltage

00:02:22.959 --> 00:02:31.000
compared to the display outs after Barry got his board design right he then sent

00:02:27.840 --> 00:02:34.800
the files off to a PCB Fab in China and

00:02:31.000 --> 00:02:37.040
got back well some pcbs but keep in mind

00:02:34.800 --> 00:02:41.959
these were only boards meaning that to get a working graphics card he had to

00:02:39.159 --> 00:02:47.360
install over 400 individual components such as capacitors and resistors himself

00:02:45.159 --> 00:02:51.280
which of course involved lots of tedious soldering assembling and testing the

00:02:49.239 --> 00:02:55.800
hardware itself took Barry around another 2 months but at the end he had a

00:02:54.000 --> 00:03:01.879
card that wasn't too different looking from some graphics cards from the 1990s

00:02:58.640 --> 00:03:04.360
but with modern display outs and PCI

00:03:01.879 --> 00:03:10.159
Express X4 support and although current commercial graphics cards typically use

00:03:06.440 --> 00:03:12.280
x16 Fury GPU gets away with X4 as it

00:03:10.159 --> 00:03:17.120
moves far less data than the GPU you probably have in your desktop rig we're

00:03:14.480 --> 00:03:22.159
talking less than one megabyte per frame as it was designed with mid99s games in

00:03:19.640 --> 00:03:26.480
mind but even a perfectly executed piece of Hardware is useless without the right

00:03:24.840 --> 00:03:30.159
software so we'll tell you about the final piece of the puzzle right after we

00:03:28.200 --> 00:03:34.159
thank paperlike for sponsoring today's video protect your new iPad with a

00:03:32.159 --> 00:03:38.519
screen protector from paperlike paperlike 2.1 is manufactured in

00:03:36.599 --> 00:03:42.760
Switzerland and is designed to help you write and draw on your iPad just like

00:03:40.799 --> 00:03:48.040
you would on paper it uses their exclusive microe technology called Nano

00:03:45.599 --> 00:03:52.599
dos to emulate the stroke resistance of paper without sacrificing screen Clarity

00:03:50.680 --> 00:03:56.840
and paper like is so confident in their screen protector they offer a 100 day

00:03:54.640 --> 00:04:00.159
satisfaction guarantee this means that if you're not happy with your screen

00:03:58.040 --> 00:04:04.640
protector they'll offer a free replace M or refund within 100 days so make sure

00:04:02.480 --> 00:04:09.879
to check out paperlike at the link below like any graphics card Fury GPU needs

00:04:07.120 --> 00:04:13.640
some kind of driver in order to run Barry said it took him about 4 months to

00:04:11.799 --> 00:04:18.840
get the drivers to work Windows typically requires drivers to use an

00:04:15.439 --> 00:04:21.079
architecture called wddm and that

00:04:18.840 --> 00:04:25.040
requires support for Hardware features you'd only find in mass-produced gpus

00:04:23.040 --> 00:04:31.080
such as support for modern versions of direct 3D to get around this the fury

00:04:28.080 --> 00:04:34.039
GPU driver is designed such that Windows

00:04:31.080 --> 00:04:38.560
instead sees it as a kernel mode display only driver which basically means that

00:04:36.240 --> 00:04:42.639
it will consider Fury GPU as being a simpler device that just displays an

00:04:40.800 --> 00:04:48.320
image instead of doing any actual rendering however the driver itself can

00:04:45.919 --> 00:04:52.880
switch modes and allow the GPU to actually render frames so it kind of

00:04:50.759 --> 00:04:58.039
tricks Windows into thinking it's just showing the desktop when it's actually

00:04:55.039 --> 00:05:00.919
showing the game you're playing game

00:04:58.039 --> 00:05:05.919
cheats enabled the fin product uses a custom API that's similar to Vulcan and

00:05:03.759 --> 00:05:11.400
Barry was able to modify the renderer for the original Quake from 1996 getting

00:05:08.600 --> 00:05:16.000
it to run at 720p at around 60 frames per second unfortunately it doesn't yet

00:05:13.720 --> 00:05:19.160
support modern shaders which would allow for more lighting effects and other

00:05:17.560 --> 00:05:24.680
kinds of eye candy we're all used to today Barry told us that Shader support

00:05:21.759 --> 00:05:29.919
may be coming in the future but fpga have their limits compared to mainstream

00:05:26.800 --> 00:05:32.400
gpus as they sacrifice performance for

00:05:29.919 --> 00:05:37.479
customizability we may also see other games from the mid90s get ported over to

00:05:34.800 --> 00:05:41.880
the fury GPU but can you actually get your hands on a fury GPU and play games

00:05:39.840 --> 00:05:45.800
on it I'm sure you're asking Barry made it clear that this is mostly a passion

00:05:44.240 --> 00:05:50.520
project and that he doesn't have plans to produce the fury GPU for sale

00:05:48.360 --> 00:05:54.680
especially as it's a continual work in progress that's currently being operated

00:05:52.400 --> 00:05:58.759
in a full development environment so it's not like you can just slot it into

00:05:56.560 --> 00:06:02.720
your Windows PC install the drivers and have everything work flawlessly still

00:06:00.880 --> 00:06:07.400
it's a super cool Testament to what you can accomplish with enough time effort

00:06:05.440 --> 00:06:10.639
and patience with a soldering iron thanks for watching if you like the

00:06:08.840 --> 00:06:14.280
video check out our other video on how CPUs and gpus are different comment

00:06:12.680 --> 00:06:18.160
below with video suggestions and don't forget to subscribe and follow techwiki

00:06:16.520 --> 00:06:22.560
you've watched a couple of other videos and you didn't do that so I'm just don't

00:06:19.919 --> 00:06:22.560
forget
