Comment by nicebyte

Comment by nicebyte 10 months ago

12 replies

vulkan is already supported on windows as a first-class citizen by all major IHVs. I am not sure what this "adoption" you speak would entail. If you're talking about replacing d3d12, that actually is a terrible idea.

bobajeff 10 months ago

That's not really the same as being supported by Windows. I think that's 3rd party support and not built into the OS.

  • nicebyte 10 months ago

    what do you mean when you say "built into the os"? d3d12 is just an api. the d3d runtime is user-space, both the UMD that wraps it and the KMD are supplied by the hardware vendor. In the end, both a d3d app and a vulkan app end up talking to the very same KMD. See here for reference:

    https://learn.microsoft.com/en-us/windows-hardware/drivers/d...

    • mrpippy 10 months ago

      D3D is clearly more integrated into the OS than Vulkan is.

      Most importantly, Windows includes a software D3D renderer (WARP) so apps can depend on it always being present (even if the performance isn’t spectacular). There are lots of situations where Vulkan isn’t present on Windows, for example a Remote Desktop/terminal server session, or machines with old/low-end video cards. These might not be important for AAA games, but for normal applications they are.

      Another example: Windows doesn’t include the Vulkan loader (vulkan-1.dll), apps need to bundle/install that.

      • nicebyte 10 months ago

        > D3D is clearly more integrated into the OS than Vulkan is.

        sure, but addressing the two points that you brought up would not entail changing windows _the operating system_, just the stuff that ships with it. you could easily ship swift shader along with warp and the loader library, both of those are just some application libraries as far as the os/kernel is concerned. of course now we're in the territory of arguing about "what constitutes an OS" :-)

    • bobajeff 10 months ago

      Oh, I was under the impression that Direct X 12 was built-in for Windows like Metal is on Apple.

jimbob45 10 months ago

If you're talking about replacing d3d12, that actually is a terrible idea.

Why do you say that?

  • nicebyte 10 months ago

    I say this because vulkan is hamstrung by being an "open API" intended to run on a very wide range of devices including mobiles. this has major repercussions, like the awkward descriptor set binding model (whereas d3d12's descriptor heaps are both easier to deal with and map better to the actual hardware that d3d12 is intended to run on, see e.g. https://www.gfxstrand.net/faith/blog/2022/08/descriptors-are...). overall d3d has the benefit of a narrower scope.

    Another problem with being an open API is that (and this is my own speculation) it's easier for IHVs to collaborate with just Microsoft to move faster and hammer out the APIs for upcoming novel features like work graphs for example, vs bringing it into the public working group and "showing their cards" so to speak. This is probably why vk gets all new shiny stuff like rtrt, mesh shaders etc. only after it has been in d3d for a while.

    One could argue this is all solvable by "just" adding a torrent of extensions to vulkan but it's really not clear to me what that path offers vs d3d.

    • miniupuchaty 10 months ago

      I would guess that if DX didn't exist the iteration on VK side would just be faster. Through extensions, like you've mentioned.

      In the end it might have even speed up the adoption of such features. Currently if you have a multiplatform engine, even though windows is like 99% of your PC player base it's still sometimes a tough decision to just use a feature that you can't support on all your targets.

    • trelane 10 months ago

      The downside is that it ties them incredibly heavily to Microsoft, and makes cross-platform efforts much harder.

jcotton42 10 months ago

Does that support extend to ARM? Not sure if it's still the case, but I recall that early Windows on ARM devices didn't have native Vulkan (and I believe OpenGL was translated to DirectX via ANGLE).

  • nicebyte 10 months ago

    I haven't laid my hands on any ARM windows devices so I wouldn't be able to tell you. I'd be somewhat surprised if the newer snapdragon stuff doesn't have vulkan support because qcom supports vulkan first-class on its gpus. in fact, on newer android devices OpenGL support might already be implemented on top of vulkan, but don't quote me on that.