Announcement

Collapse
No announcement yet.

Mesa 22.0 Zink Lands macOS Build Fix For OpenGL On Vulkan Via MoltenVK On Metal

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    Originally posted by Kemosabe View Post
    Well Vulkan just requires more work, and much more know-how. Combine that with their ego and find various excuses.
    Khronos really should release a more top-level library that wraps everything for higher level abstraction for this to take off more seriously.
    Yeah thats called OpenGL and it was a shit idea because it turns out such high level abstractions end up causing more problems when you are trying write a performant game engine.

    If you don't want to deal with low level details of GPU's, then just use an existing game engine and/or a library/wrapper that does it for you. Enforcing it on the driver level like what OpenGL does with no alternative is a terrible idea, and that is why actual developers of game engines love Vulkan/Metal/DirectX 12+

    Comment


    • #12
      Originally posted by gjsman View Post

      Well, then, you are back to square 1 though, and that's the why use Vulkan? question. DirectX is easier or harder depending on whether you target version 11 or version 12, for how close to the metal you want to go. That's a beauty of DirectX - that it can function in both high-level and low-level contexts, alongside giving you generally-easy Xbox support.

      If you are building a game, Vulkan gets you 2/3s of Android devices, Linux, and Windows. But if your game isn't targeting mobile... it's either you pick Vulkan for better Linux support, or you pick DirectX for better Xbox support (but still maintain Linux support or good enough with DXVK). The choice is obvious for most studios. Is it really surprising then studios don't seem to care?
      Honest question here: do people really make a game specifically for a platform still? I thought game engines do all of the work these days. I remember Nintendo being proud when a third party studio used Unreal Engine for a Yoshi game even saying
      Originally posted by Shigeru Miyamoto
      Nintendoʼs software developers have mastered state-of-the-art technologies such as Unreal engine, and their skills can now be compared with those of Western developers.

      Comment


      • #13
        Originally posted by gjsman View Post

        Well, then, you are back to square 1 though, and that's the why use Vulkan? question. DirectX is easier or harder depending on whether you target version 11 or version 12, for how close to the metal you want to go. That's a beauty of DirectX - that it can function in both high-level and low-level contexts, alongside giving you generally-easy Xbox support.

        If you are building a game, Vulkan gets you 2/3s of Android devices, Linux, and Windows. But if your game isn't targeting mobile... it's either you pick Vulkan for better Linux support, or you pick DirectX for better Xbox support (but still maintain Linux support or good enough with DXVK). The choice is obvious for most studios. Is it really surprising then studios don't seem to care?
        First, DirectX 11 and DirectX 12 are very different - it is equivalent to calling Vulkan, OpenGL 5.0. It is as easy or hard depending on how close to metal you want to be as it is for OpenGL vs Vulkan. DirectX 12 was a ground up redesign.

        One of the big problems with DirectX 12 is that it has not been used to do anything that could not be done on DirectX 11. I do not know of a single title that is DirectX 12 exclusive (I am not saying there aren't any, just that they are rare if they exist). DirectX 12 was used by Microsoft to try and push Windows 10 by not making it available to older versions of Windows. For years after Windows 10's launch, the Steam Hardware survey claimed 20% - 33% of all Windows machines used Windows 7 or 8. As a result, developers have targeted DirectX 11 first and foremost on PC because every sane studio wants to maximize the number of potential customers. The DirectX 12 support normally just came as a quick and dirty port of the Xbox version.

        The one obvious reason to use Vulkan, would be that it works on Windows 7 & 8 and has the MoltenVK translation layer for Metal, thus fixing the user base issues DirectX 12 had. If there was an equivalent DirectX 12 to Metal translation layer, I have no doubt most MacOS ports would use it instead of Metal directly. I bet most developers would rather just use one API for all Windows/Linux versions of their games and a wrapper for MacOS. The only thing stopping this, is the small Linux & MacOS user bases and the now dwindling Windows 7 & 8 user bases.

        For the Xbox, normally that version is created first and then ported to PC - the developers just leave in the already completed DirectX 12 code path. Going the other way runs the risk of not being able to scale down the game to the consoles. The Xbox is what I think caused DirectX 12 to be chosen over Vulkan. It created a very large user base that required DirectX 12 and with it, good development tools were rapidly made available as part of the development SDK (these took longer to be created for Vulkan). Hopefully the Steam Deck is a success and helps to create similar incentives for using Vulkan.

        Comment


        • #14
          Originally posted by gjsman View Post
          - Windows: DirectX 12 (preferred), OpenGL (if your GPU vendor supports it - Microsoft does not), Vulkan (again, if GPU vendor supports it - Microsoft does not)
          On Windows, if vendor supports it ? There are only 3 vendors: Nvidia, AMD, and Intel and they ALL support Vulkan very well, so Windows HAS Vulkan support. Period.
          On Mac, moltenvk can convert Vulkan to Metal very well with minor perf hit.

          Also, people talk about Vulkan like something that has to be made from scratch, but nowadays, 95 percent of games are made using already made game engines and Vulkan support is already built-in regarding the major ones, for a while.

          The main reason Vulkan is not the de facto choice is more because of old habits, being cheapskate, fear of adding extra support, commercial agreements with Microsoft, than because of technical issues.

          Comment


          • #15
            Originally posted by mdedetrich View Post

            Yeah thats called OpenGL and it was a shit idea because it turns out such high level abstractions end up causing more problems when you are trying write a performant game engine.

            If you don't want to deal with low level details of GPU's, then just use an existing game engine and/or a library/wrapper that does it for you. Enforcing it on the driver level like what OpenGL does with no alternative is a terrible idea, and that is why actual developers of game engines love Vulkan/Metal/DirectX 12+
            Is it though? The issue with OpenGL was rather that each driver had their own quirks and there was no room to fix bottlenecks. Also there are honestly some standard pipelines that could be provided by a wrapper (including reducing the ridiculously explicit initialization). Nothing would prevent you from using real vulkan where you need it.

            Comment


            • #16
              The discussion is a little irrelevant to most game developers…. These days the API is Godot or Unity or Unreal. Going down to DirectX or Vulcan APIs is pretty unusual (and a lot of work)

              Comment

              Working...
              X