this post was submitted on 21 Aug 2023
1185 points (98.6% liked)
Linux Gaming
15892 readers
56 users here now
Gaming on the GNU/Linux operating system.
Recommended news sources:
Related chat:
Related Communities:
Please be nice to other members. Anyone not being nice will be banned. Keep it fun, respectful and just be awesome to each other.
founded 4 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
https://en.wikipedia.org/wiki/Vulkan
still dont understand, eli5 please?
Games have to talk to your operating system to have it tell your GPU to draw lots of funny pictures that come together to make up the graphical portions of the game. Game developers do not want to do this directly, because talking directly to the OS is hard. As such, games talk to graphical APIs like Vulkan or DirectX to do the hard bit for them.
For years almost all games used DirectX, which is made by Microsoft. This gave Windows a virtual monopoly on PC gaming because they weren't about to let their competitors use their API. Then Vulkan came out, which was designed from the beginning to be OS-agnostic, sending us to the promised land of games that could (with some other efforts) run on any machine, anywhere.
When developers need to draw graphics on the screen, they use an API like Direct3D (or DirectX) or Vulkan to accomplish it. Direct3D only works on Windows. Vulkan works on many operating systems. Vulkan replaced OpenGL.
DXVK translates DirectX calls, which only work on Windows, to Vulkan calls, which will work on Linux and other operating systems. It's so good at this that it's better than commercial game engines like Unity. DXVK is a separate project from Wine. Wine also uses wined3d to convert older Direct 3D calls to OpenGL calls, for the same effect.
Lastly, there's VKD3D, which is Wine's own Direct3D12 ➜ Vulkan compatibility layer. Valve forked this and created VKD3D-Proton, which is specifically designed for games, as opposed to general software.
Yes, it's a bit confusing.