5 ms·
Of those three, Vulkan is the only one that is cross platform, and the only one that natively targets Linux.
by WCSTombs 3y ago
Of those three, Vulkan is the only one that is cross platform, and the only one that natively targets Linux.
- slimsag 3y agoVulkan requires a heavy-weight emulation layer on macOS. Consoles also don't really support it (some do, but not as a first class API) If you only care about Windows and Linux, you can also just use DirectX and require users make use of Proton.
- vetinari 3y ago> Vulkan requires a heavy-weight emulation layer on macOS. That's pretty much self-inflicted issue. > If you only care about Windows and Linux, you can also just use DirectX and require users make use of Proton. Proton drags in Wine, so it is even more heavy-weight than MoltenVK.
- ho_schi 3y agoPlease no! Don’t use Proton as API. It is a compatibility layer trying to implement what Microsoft’s implementation probably does. Use Vulkan or OpenGL if you can. Proprietary APIs? In 2023 we shall all know to avoid them. It is not 1998. The unfortunate move from Apple is Metal instead of going all in for Vulkan. And now they struggle and need foster native ports. They shall support itself Vulkan and improve it - and therefore improve support of Linux and MacOS.
- shortrounddev2 3y agoOpenGL straight up sucks to work with. DirectX 11 is a much nicer API that doesn't require you to write your own allocator for views in the GPU like the lower level APIs. Linux isn't a major platform I personally care about so I use DirectX 11
- iforgotpassword 3y agoPlease yes! ... At least for commercial, closed source stuff. I'm exclusively on Linux, a casual gamer, and native ports suck. They probably can be done better, but you still run into the problem that some Linux game released 5 years ago doesn't even launch anymore on current distros. I've tried to play the native port of lis2 only to be greeted with a "hey this game needs an AMD or Nvidia GPU" warning, which I could click past only to have the whole system freeze in the main menu. That was literally the first ever crash of that machine ever (about 14 months old at that point). Luckily steam allows you to force using the windows version of a game even if a native port is available and guess what, no warning about GPU, game worked flawlessly. And it very likely still will a decade from now. How many native games released today will? Morale of the story: win32 is the only stable userspace API on Linux. Develop for win32 and test on Linux, boom you got your multi-platform game.
- ireallywantthat 3y agoYou know that Games/Applications can still be developed with Vulkan API targetting win32 and they can be run on Proton/wine in Linux which runs it without the DXVK (dx11->vk)/VKD3D (dx12->vk) translation layer, right? Baldur's Gate 3, Red Dead Redemption 2 are some of popular games which use Vulkan exclusively running on Proton. This way you can evade proprietary DirectX12.
- ho_schi 3y agoYou probably should blame the people which made the game? We face the same issue on Windows, too. Low quality ports from console to Windows (e.g. The last of us). So it is more about appropriate ports. Valves native ports of games - CS1, CSS, CSGO, CS2 [sic!], HL1 and HL2 run well on Linux. As the famous titles of id Software? As far as I know you can still run the original executable from Quake3 but it is not a wise decision (missing bugfixes, X86_32 and OSS). But they went the save way and just published the engine sources. And? Proton's own foundation is Linux. And Valve layered a lot of complexity away with it Linux-Runtimes (the most recent is "Sniper 3.x"). I would be just happy if developers accustomed to Windows stop supporting specific (outdated) Linux-Distributions with awkward self made packages. Instead they should merely publishing ELF-Executables, the resources and a list of dependencies - and the maintainers will care. And aside they could ship one Flatpak, made itself. Both things are done by Valve :) I think most of that issues come from "training" from Windows, where just everyone does the task itself and no rules for shipping exist. And when a developer isn't familiar with the target system and porting problems are more likely. Apple does handle this different, they force the developers doing it in the specified way (you don't get a certification if not).
- troupo 3y ago> The unfortunate move from Apple is Metal instead of going all in for Vulkan. Metal was version 1.0 and used in production a year before there was even a proposal for Vulkan. Why would Apple go all in on Vulkan?
- ho_schi 3y agoYep. Metal was a little early. Why they should? Because it it would improve portability for their platform and Linux. And it weakens Microsoft. What we've instead, three competing APIs. Apple labled OpenGL deprecated and many rely now upon MoltenVK. At the same time Apple switched to ARM. Both in combination are problematic because AAA-Titles are closed-source. For the same reasons Apple supports OpenGL they also support Vulkan. I wonder about the reasons of Valve to the decision to support Linux (Vulkan) and Windows (Direct3D) with native ports of CS2. But not MacOS. I'm happy because Linux is supported but the Mac people are obviously not so happy. AFAIK Source2 was already used in the past on MacOS. PS: Thanks to Valve for the native port of CS2 on Linux :)
- FrostKiwi 3y ago> I wonder about the reasons of Valve to the decision to support Linux (Vulkan) and Windows (Direct3D) with native ports of CS2. Because of the Steam Deck
- troupo 3y ago> Yep. Metal was a little early. You mean it was ready when it was ready, and Apple released it. When Apple released it, Vulkun was not even an idea. > Why they should? Because it it would improve portability for their platform and Linux. And it weakens Microsoft. Why would Apple care about that? The rest of that paragraph reads like a loosely connected stream of consciousness with no reasons for Apple to drop Metal and go all in on Vulkan. To remind you, again, the timeline: - Metal has been available since June 2, 2014 on iOS devices powered by Apple A7 or later - The Khronos Group began a project to create a next generation graphics API in July 2014 - Vulkan was formally named and announced at Game Developers Conference 2015 - Metal has been available since June 8, 2015 on Macs (2012 models or later) running OS X El Capitan. - On December 18, 2015, the Khronos Group announced that the 1.0 version of the Vulkan specification was nearly complete - The full Vulkan specification and the open-source Vulkan SDK were released on February 16, 2016 By the time Vulkan was just released, Apple had already been running Metal on its devices for two years. By the time Apple released Metal 2 in 2017 Vulkan was 1 year old > For the same reasons Apple supports OpenGL they also support Vulkan. Apple doesn't support Vulkan.
- flohofwoe 3y agoIt really doesn't make much difference whether the platform abstraction layer code is part of the game, or part of the runtime environment. Each cross-platform game has such an abstraction layer, usually it's just inhouse code or provided by a game engine vendor. Moving that part out of the game and into a shared set of 'system libraries', maintained by specialists who actually know how the Linux graphics system works inside out is actually a very good thing. That this abstraction layer implements a subset of the Win32 APIs really isn't all that important from a technical perspective (it is however very important from a business perspective). I never heard a Linux users complain about game developers writing their games against SDL for instance, yet the basic idea isn't all that different from Proton.
- Alupis 3y agoMac wannabe-gamers need to comprehend Apple doesn't care about you and has gone out of their way to make gaming on OSX difficult to support. It's not a surprise very few games support OSX... Apple is the only party to blame here.
- slimsag 3y agoApple.. and Nintendo.. and Sony.. Xbox.. And I guess Microsoft/AMD/Nvidia if you want the latest feature set on Windows the same year it comes out.. I'm fine with passing blame to all those parties for not getting it together and making Vulkan a first-class citizen. But reality is reality, they're not - Vulkan is a second-class citizen for all those HW manufacturers - ignoring that doesn't help.
- ireallywantthat 3y agoApple -> Moltenvk (Have to blame Apple for not supporting Vulkan). Moltenvk is used by games such as Dota2. If moltenvk doesn't work fine for your game, you must not target Apple Mac devices anyway.(valve dropped mac support for cs2). For non game cases, Moltenvk works just fine. Nintendo -> supports Vulkan natively Sony -> supports Vulkan (as per latest patch notes of BG3: https://baldursgate3.game/news/hotfix-9-now-live_95 https://baldursgate3.game/news/hotfix-9-now-live_95 ) Xbox -> Doesn't support Vulkan Microsoft Windows -> Supports Vulkan natively first class. AMD/Nvidia/Intel -> Supports Vulkan as First class APIs. Android -> supports First Class Vulkan APIs natively. Linux -> supports First Class Vulkan APIs natively.
- slimsag 3y agoApple -> MoltenVK is an emulation layer and doesn't give you as much control as using Metal directly. Nintendo and Sony prefer their own APIs, NVN and LibGNM, and AIUI Vulkan is a second-class API on those platforms which does not offer as much power, it is widely understood studios use NVN and LibGNM to get access to the real hardware on those platforms. Windows/AMD/NVidia/Intel -> HW manufacturers tend to prototype and release new features with D3D first and then 'backport' them to Vulkan after a while. DirectX 12 for example had mesh shaders for over 2 years before Vulkan got a vendor neutral extension for them[0] Android and Linux are the only platform where Vulkan is a first-class citizen. You could maybe argue Nvidia treats Vulkan as a first-class citizen because they tend to have vendor-specific Vulkan extensions for the latest features available before anyone else. But otherwise, no, Vulkan is not a first-class API anywhere except Linux and Android. Graphics API wars are alive and well. [0] https://github.com/KhronosGroup/Vulkan-Docs/issues/1423 https://github.com/KhronosGroup/Vulkan-Docs/issues/1423
- charcircuit 3y agoDXVK does not require Proton. Nor does it require Wine.
- pjmlp 3y agoTo some platforms, and a single games console.
- whstl 3y agoThat's fine, but my point is that learning Vulkan while learning graphics at the same time is way harder than learning a much simpler APIs + graphics, then moving that knowledge to Vulkan. I had a renderer in Metal in a (long) afternoon. Vulkan on the other hand took a few weeks to get something presentable.