Most simply put, it’s a layer that allows a computer program expecting windows to run on Linux. It isn’t emulating anything, just sorta like translating.
Think of it like a language. Windows speaks English, so a program expects to talk in English. But let’s pretend like Linux talks Spanish. Proton translates the English commands to Spanish for Linux to understand and execute, and then Proton converts the responses back to English for the program.
fuckwit_mcbumcrumble@lemmy.dbzer0.com 2 days ago
Proton is the compatibility layer that valve makes that lets you run games on Linux. Proton uses DXVK a program that converts Direct X API calls (windows only) to Vulkan API calls (runs on anything). DXVK alone gives you huge performance benefits (especially on older DirectX 11 and older games) and you can run it on windows.
Proton gives you a ton of other tools that can make huge performance differences.
underline960@sh.itjust.works 2 days ago
Hopefully not a dumb question: If Vulkan runs on anything, assuming their game isn’t a Windows (Xbox?) exclusive, why don’t more people program their games to use Vulkan instead?
thejevans@lemmy.ml 2 days ago
It’s becoming more common, but it mostly comes down to available tooling. At this point all three of the big game engines have a Vulkan backend available, but that’s a fairly recent development. And if a developer isn’t using a game engine, writing their own openGL renderer is easy, and writing a Vulkan renderer is a nightmare.
dormedas@lemmy.dormedas.com 2 days ago
Also a lot of old proprietary game engines were written either specifically for DirectX or additionally for DirectX because in the olden times it was the most advanced and compatible rendering software.
Then, those developers move forward in time to work on other engines and focus primarily on DirectX because it’s still good, compatible, and it’s what they know best. OpenGL languished and it took a while for Vulkan to come out, catch up, and standardize their API.
zib@lemmy.world 2 days ago
Vulkan is designed to be closer to the metal than something like DirectX 11 or OpenGL, which makes the API more explicit and difficult to use. This means it requires a great deal more care to use properly. And to complicate matters more, subtle bugs that are very difficult to debug are very easy to introduce.
But, this applies mostly to devs who build their own tech. Most of them these days are just using 3rd party engines like Unity or Unreal, so it comes down to whether or not the person making the game decides to check the box to use Vulkan and just how good those render backends are. Engine developers of 3rd party tech have to build their stuff to be as generic as possible. That’s likely gonna add a lot of bloat that might not be fully optimized for every game developer’s use case.
TLDR: It’s tough and time consuming for someone writing it themselves. And for the ones who aren’t, they’re having to place a lot of trust in a renderer that is probably a black box and might be buggy/slow.
fuckwit_mcbumcrumble@lemmy.dbzer0.com 2 days ago
That my friend, is entering operating system politics.
But the TLDR is: resistance to change, lack of support, bribery, a combination of all 3, features, and much much more!
frazorth@feddit.uk 1 day ago
Because DirectX is more than a graphics API.
en.m.wikipedia.org/wiki/DirectX
A fair amount of what used to make DirectX an everything API has been deprecated, but if you are already using Windows stuff for networking and audio, then you may as well use the graphics APIs too.
vividspecter@lemm.ee 2 days ago
I’ll add for completeness that vkd3d-proton handles DX12 titles, and of course OGL and Vulkan are supported natively.