I’m curious as to what everyone’s reasons are! The Linux desktop has came quite a far ways in the last few years and is improving every day. I’d say for most people, Linux could easily replace Windows as their daily driver nowadays.

  • jaeme [any, comrade/them]@hexbear.netM
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 year ago

    Proton/Wine is a compatibility layer to translate Windows API calls to POSIX calls. In theory it should actually yield near native performance or better since Vulkan is far more optimized than DirectX.

    But yeah, I use Proton and waiting for your vulkan shaders to compile is a little bit of a pain (especially for some games).

    • AlkaliMarxist [he/him]@hexbear.net
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 year ago

      While I’ll admit I don’t have a lot of experience with Proton, I actually spent about 4 years working on a OpenGL based 3D graphics engine for augmented reality research. I’ve also written engine code in both DirectX and Vulcan but not as much. All this to say I’ve done some in depth research on Vulkan in the past, and I don’t think it’s really true to say that it’s more optimized. DirectX is probably more optimized, but it is over-optimized for graphics techniques that have been superseded by more modern ones. Vulkan allows more optimized code to be written by giving the application programmer more direct control over graphics card resources. This only works when the program is written to take advantage of this though, if you access a Vulkan driver via a DirectX compatibility layer you are going to get very similar performance to native DirectX because you’ll simply recreate all the bottlenecks that Vulkan was designed to avoid.

      This gets to the underlying issue with Wine/Proton as a general solution to Linux gaming. So long as the application code was tested, debugged, profiled and optimized on Windows with DirectX it will almost always run better under Windows. The design will take advantage of efficiencies in the original API which will almost certainly not exist after calls are translated to a different API using different underlying OS primitives. The major caveat is older games which are no longer well supported because of changes to Windows system internals since release, these are likely to run as well or better because the assumptions they were optimized for are no longer valid on Windows, but Wine is already designed to compensate for programs written for a very different API.

      Sorry for nerding out, but it’s a topic I’m actually pretty interested in.

      • jaeme [any, comrade/them]@hexbear.netM
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 year ago

        I see that’s really interesting. A lot of my impression of Vulkan is that it’s a much more modern API.

        Though I’d admit that some of these are faulty benchmarks like when some users got better performance on Elden Ring with proton than on native windows (performance metrics varied wildly). It was just nuts to see Linux competing head-to-head with Windows for the first time.

        • AlkaliMarxist [he/him]@hexbear.net
          link
          fedilink
          English
          arrow-up
          2
          ·
          1 year ago

          Vulkan is that it’s a much more modern API

          Absolutely, older APIs tried to smooth development by abstracting more from the hardware, Vulkan tries to give the developer as much control as possible. If you know what you’re doing you can write more performant games with Vulkan, but on the flip side development is slower. The matters less and less though, as most game dev these days uses middleware like Unity or Unreal which does all the graphics pipeline management for you. This also ties into modern graphics hardware being more configurable than ever, meaning the more restrictive APIs can waste a lot of the hardware’s potential.

          I did a bit of research after reading your comment and from what I can see, Elden Ring has some bugs in it’s rendering pipeline that can cause cached shaders to be recompiled for no reason, this is what causes all the stuttering on Windows. Proton devs managed to write custom implementations of the DirectX functions that it uses incorrectly, to force it to work the way it was presumably intended to. That’s awesome to me and really shows off the potential of Proton. Obviously other games which aren’t huge releases aren’t going to get that kind of treatment, but I can definitely see dedicated communities fixing issues like this in games.

          Super cool, I’m glad you mentioned Elden Ring because I hadn’t considered Wine/Proton could be used like that.