Whatever will they do with DOOM next? A developer at AMD decided to port over classic DOOM to run almost entirely on the GPU. Why? In their own words "Because I can".
From the doomgpu GitHub page:
This is a port of DOOM that runs (almost) entirely on the GPU using the LLVM C library for GPUs based on the doomgeneric interface.
To try it you will need a WAD file (game data). If you don't own the game, shareware version is freely available (doom1.wad).
This implementation works on NVIDIA as well as AMDGPU. To use the NVIDIA implementation perform the same steps but with the
nvptx
loader and make target.
We've seen DOOM run on basically everything, so why not just a GPU? According to the GitHub page it currently requires a Linux system, an AMDGPU with ROCm support, SDL2 libraries, a ROCm or ROCR-Runtime installation and an LLVM build off of the main branch (LLVM20 as of writing).
How they did it:
The
clang
compiler can target GPUs directly. We emit a single kernel that calls the 'main' function. Functions that require the operating system are handled through the RPC interface. See my LLVM talk for more information.This implementation defines the
amdgpu-loader
utility, which handles launching themain
kernel, setting up the SDL2 window interface, and provides functions to get the input keys and write the output framebuffer. Okay, it's not entirely on the GPU, but all the logic and rendering runs on the GPU.
I imagine DOOM is very serial in processing, I don't think it can be easily spread across thousands of cores.
Quoting: kit89I imagine DOOM is very serial in processing, I don't think it can be easily spread across thousands of cores.It is completely serial in processing and it is a lot of work to untangle. Just look at the discussions about GZDoom.
See more from me