The state of Vulkan apps in 2024(carette.xyz)
carette.xyz
The state of Vulkan apps in 2024
https://carette.xyz/posts/state_of_vulkan_2024/
8 comments
To a first approximation, games using Unity/UE use D3D on Windows, OpenGL and Vulkan on Android, and Metal on iOS. Native Linux builds are not worth it, Proton (which uses Vulkan) is good enough.
Vulkan is not really a design by committee API, it is pretty much what happens when an IHV (AMD in this case) with poorly performing drivers gets to design an API (Mantle) without any adults in the room. D3D12 strikes a somewhat and Metal a much better balance in terms of usability.
Vulkan is not really a design by committee API, it is pretty much what happens when an IHV (AMD in this case) with poorly performing drivers gets to design an API (Mantle) without any adults in the room. D3D12 strikes a somewhat and Metal a much better balance in terms of usability.
The design by committee is spot on, if anything, AMD rescued OpenGL vNext to turn into yet another Long Peaks, or OpenCL 2.0.
Had not been for them to offer Mantle to Khronos, to this day you would most likely be getting OpenGL 5 with another extension batch, not that Vulkan isn't already an extension soup anyway.
Had not been for them to offer Mantle to Khronos, to this day you would most likely be getting OpenGL 5 with another extension batch, not that Vulkan isn't already an extension soup anyway.
I know Unity at least defaults to DX11 and I believe it doesn't package other renderers at all unless you explicitly enable them in Project Settings or use a rendering feature that requires them, and I can't imagine many people are digging into the renderer settings without good reason
Perhaps I am projecting my experience from the before times, when GPUs only supported certain versions of DirectX, or certain features were causing crashes on different systems.
It never super common but I remember doing it recently for Path of Exile while trying to get the most out of my Macbook's performance.
It never super common but I remember doing it recently for Path of Exile while trying to get the most out of my Macbook's performance.
Both engines support DirectX 11 and 12, Metal, Vulkan, GNM and GNMX, and NVN.
Mostly game builds tend to use the native option of the target platform by default.
Mostly game builds tend to use the native option of the target platform by default.
I see often people mentioning that Metal’s API is the easiest to use between DX12, Vulkan and Metal. I saw that the game engine mach (Zig) is creating sysgpu which is based in WebGPU. Maybe a silly question and probably too much work, but I wonder, Would it be possible to recreate Metal’s API on top of Vulkan and DX12?
oi sou hacker vou hackear o seu
This isn't to say that Windows games built on these engines aren't entirely running on DX12 code either. I think most games these days give you the choice to pick your graphics backend. It's an impossible ask, but I'd love to see what the stats are for Unreal/Unity graphics API usage across games.
That being said, on the iOS/macOS front, I don't know what these games are using to deploy to that platform. It could be that they use MoltenVK, but I could also see them using OpenGL or their own Metal rendering pipelines. As someone who grew up gaming on a desktop PC, I forget that smartphones and tablets are the future of the gaming industry. It felt weird to see Apple showing someone sitting on their couch with their iPhone 15 connected to the television, playing No Man's Sky via bluetooth controller, but simultaneously really cool.
It appears to me that languages born out of a design-by-committee process struggle to make anyone exceptionally happy, because the only way the language moves forward is by keeping all of its members equally miserable, or my masquerading as one language when in reality it's closer to five different languages held together by compiler flags and committee meetings.