News: 1711810806

  ARM Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life (Terry Pratchett, Jingo)

Can a Xilinx FPGA recreate a 1990s Quake-capable 3D card? Yup! Meet the FuryGpu

(2024/03/30)


If you've ever wondered whether a Xilinx Zynq UltraScale+ FPGA can be configured as a homegrown gaming 3D GPU capable of accelerating Quake and other faves from the 1990s, we have an answer – and it's yes.

In theory, looking at the FPGA's specs and what it needs to do, it should totally be possible with a large amount of effort. Now we're starting to see proof, and hopefully materials to help you follow along if retro computing and FPGA programming are your thing.

Created by software engineer Dylan Barrie, FuryGpu is the culmination of four years of work that started as a simple project. Barrie was interested in the idea of making a homemade GPU as his next hobby. "I'd spend a few months making a spinning cube or something, and be done with it," he predicted, according to [1]his account of building the kit.

[2]

However, the scope of the project expanded beyond graphics demos and into the realm of actual 3D-accelerated games running on an homemade graphics card. The FuryGpu uses a custom PCB equipped with a Kria system-on-module that features a Xilinx Zynq UltraScale+ FPGA, a couple of video outputs, and a PCIe 2.0 x4 connection.

[3]

[4]

So far, FuryGpu boasts a 400MHz GPU clock, a 480MHz texture unit clock, an FP32-capable front-end, and support for linear and bilinear filtering. The GPU-in-FPGA has no programmable shaders, though, and is fixed-function. It runs games via Barrie's own FuryGL API rather than DirectX3D or Vulkan.

[5]

The FuryGpu – When you're so proud of your invention it needs your logo ... Source: Dylan Barrie. Click to enlarge

Of course, supporting just a homemade API means Barrie has to port games to his FuryGpu. He said "while that is not a massive undertaking, it's not a trivial thing to do either." Thankfully, the 1990s predated the advent of mega-games, and most titles were developed by a small team, or even just a single programmer. In other words, adding support for FuryGL wasn't too much hassle.

Guess what caused the most trouble

While programming an FPGA to make it a 3D-accelerating GPU and porting games to a custom API is challenging enough, apparently it wasn't the hardest part.

"Of all the parts of this project, writing Windows drivers for it have been the most painful," Barrie said. It speaks volumes when porting a game is easier than writing drivers on Windows.

Barrie has been sharing his odyssey of getting FuryGpu to work since 2022, with the main focus being compatibility with the OG Quake. Each video [6]in his series about the hardware demonstrates a new feature being added, such as rendering particles, adding textures, and enabling audio.

[7]

It was only on March 1 that Barrie was able to finally show (see below) FuryGpu running Quake at full 720p resolution and 60 frames per second, made possible thanks to finally adding asynchronous CPU and GPU operation to the FuryGpu drivers. At this level of performance, FuryGpu is roughly equivalent to a graphics card from the mid-1990s, a time when 3dfx and Matrox were still in the running and before Nvidia started pushing the term GPU (and saying it had invented it).

[8]Youtube Video

[9]PiStorm turbocharges vintage Amigas with the Raspberry Pi

[10]Husqvarna ports Doom to a robot lawnmower – not, thankfully, its chainsaws

[11]Sandra Rivera's next mission: Do for FPGAs what she did for Intel's Xeon

Plus, FuryGpu can be used for basic computer work. It can display the UEFI interface for interacting with the motherboard's BIOS, the Windows desktop works as normal, and there's functional audio as well. Maybe watching YouTube is out of the question but a low-res DVD could be within the realm of possibility.

For those who want to make their own FuryGpu, there's good news: The project is set to become open source. However, Barrie explicitly says he doesn't know when that's going to happen, saying he will do it "at some point." More details [12]here and [13]here . ®

PS: Yes, we're aware of things like Ben Eater's homemade [14]VGA card , a [15]486DX in an FPGA, the whole [16]MiSTer project, etc. But Barrie's work is pretty cool, and caught our eye. Comment away below if there are similar hardware efforts you've found lately.

Get our [17]Tech Resources



[1] https://www.furygpu.com/blog/hello

[2] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_onprem/personaltech&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=2&c=2ZghFJ2a83wKw7S3UmL9KDgAAAAA&t=ct%3Dns%26unitnum%3D2%26raptor%3Dcondor%26pos%3Dtop%26test%3D0

[3] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_onprem/personaltech&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44ZghFJ2a83wKw7S3UmL9KDgAAAAA&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0

[4] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_onprem/personaltech&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=3&c=33ZghFJ2a83wKw7S3UmL9KDgAAAAA&t=ct%3Dns%26unitnum%3D3%26raptor%3Deagle%26pos%3Dmid%26test%3D0

[5] https://regmedia.co.uk/2024/03/29/furygpu.jpg

[6] https://www.youtube.com/@dbarrie/videos

[7] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_onprem/personaltech&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44ZghFJ2a83wKw7S3UmL9KDgAAAAA&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0

[8] https://www.youtube.com/watch?v=P0fNmVkUevo

[9] https://www.theregister.com/2024/02/12/pistorm_accelerated_amiga_pi/

[10] https://www.theregister.com/2024/02/28/husqvarna_doom_robomower_port/

[11] https://www.theregister.com/2024/02/29/sandra_riveras_next_mission_do/

[12] https://www.furygpu.com/about

[13] https://www.furygpu.com/blog/furygpu-texture-units

[14] https://eater.net/vga

[15] https://github.com/MiSTer-devel/ao486_MiSTer

[16] https://github.com/MiSTer-devel/Wiki_MiSTer/wiki

[17] https://whitepapers.theregister.com/



b0llchit

Not because you should, but because you can (*) .

Okay then. Reason enough to be cool! Thumbs up big time.

(*) is there any other truly valid reason?

Paul Crawford

A beer for that level of devotion!

Education

elsergiovolador

I wish something like that was taught in schools.

"This term everyone is going to build themselves their own graphics card."

It could go from designing the PCB to writing the drivers and everything in between.

Jumbotron64

Memo to Lisa Su at AMD….hire this guy pronto !!

Jumbotron64

Oh by the way, because it has to be said, now that Quake is done, next up….Crysis !!

Connector Conspiracy, n:
[probably came into prominence with the appearance of the KL-10,
none of whose connectors match anything else] The tendency of
manufacturers (or, by extension, programmers or purveyors of anything)
to come up with new products which don't fit together with the old
stuff, thereby making you buy either all new stuff or expensive
interface devices.