4 ms·
Good. Now if Windows would adopt Vulkan as the graphics API of the future.
by bobajeff 2y ago
Good. Now if Windows would adopt Vulkan as the graphics API of the future.
- nicebyte 2y agovulkan 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.
- jimbob45 2y agoIf you're talking about replacing d3d12, that actually is a terrible idea. Why do you say that?
- nicebyte 2y agoI 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-hard/ 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.
- trelane 2y agoThe downside is that it ties them incredibly heavily to Microsoft, and makes cross-platform efforts much harder.
- miniupuchaty 2y agoI 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.
- bobajeff 2y agoThat's not really the same as being supported by Windows. I think that's 3rd party support and not built into the OS.
- nicebyte 2y agowhat 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/display/windows-vista-and-later-display-driver-model-architecture https://learn.microsoft.com/en-us/windows-hardware/drivers/d...
- bobajeff 2y agoOh, I was under the impression that Direct X 12 was built-in for Windows like Metal is on Apple.
- mrpippy 2y agoD3D 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 2y 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" :-)
- jcotton42 2y agoDoes 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 2y agoI 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.
- jsheard 2y agoLunarG released a native ARM version of the Vulkan SDK shortly after the Snapdragon X machines launched so presumably it works on those. edit: yup https://vulkan.gpuinfo.org/listreports.php?devicename=Microsoft+Direct3D12+%28Snapdragon%28R%29+X+Elite+-+X1E80100+-+Qualcom https://vulkan.gpuinfo.org/listreports.php?devicename=Micros...
- mardifoufs 2y agoWhat's wrong with d3d12? It works perfectly fine for what it does. In my experience it causes a lot less issues than Vulkan. And it's not really due to windows not supporting Vulkan correctly, since my experience with Vulkan has mostly been on Linux. I don't dislike Vulkan either, it's just that I don't see the point of replacing something that works pretty well.
- bobajeff 2y agoAdopting Vulkan doesn't mean removing Direct X 12. Just like adopting spirv doesn't mean removing hlsl. No one said anything about getting rid of anything.
- Narishma 2y agoSPIR-V is not an alternative to HLSL. It's an intermediary format that you compile HLSL (or GLSL) to.
- shmerl 2y agoReinvention of the wheel and tax on supporting "yet another thing" for developers who need to deal with it. Same reason standards have some value.
- izacus 2y agoIt's Vulkan that was reinventing the DX12 wheel wasn't it though?
- HideousKojima 2y agoVulkan is based on Mantle, which predates the release of DX12 by about 2 years.
- flohofwoe 2y agoThe same can also be said about D3D12, it is at least 'heavily inspired' by Mantle. In the end, not much of Mantle has survived in Vulkan either though. Mantle was a much cleaner API than Vulkan because it didn't have to cover so many GPU architectures as Vulkan (Mantle especially didn't have to care about supporting shitty mobile GPUs).
- shmerl 2y agoIt should.
- forrestthewoods 2y agoWhy? Vulkan is not a well designed API. It's so complicated, verbose, and error prone. It's pretty bad.
- giomasce 2y agoAt least it's documented.
- flohofwoe 2y agoThe DirectX specs are much better than both the OpenGL and Vulkan specs because they also go into implementation details and are written in 'documentation language', not 'spec language': https://microsoft.github.io/DirectX-Specs/ https://microsoft.github.io/DirectX-Specs/
- giomasce 2y agoI don't think that going into implementation details is what I would expect from an interface specification. The interface exists precisely to isolate the API consumer from the implementation details. And while they're much better than nothing, those documents are certainly not a specification. They're are individual documents each covering a part of the API, with very spotty coverage (mostly focusing on new features) and unclear relationship to one another. For example, the precise semantics of ResourceBarrier() are nowhere to be found. You can infer something from the extended barrier documentation, something is written in the function MSDN page (with vague references to concepts like "promoting" and "decaying"), something else is written in other random MSDN pages (which you only discover by browsing around, there are no specific links) but at the end of the day you're left to guess the actual assumptions you can make. *EDIT* I don't mean to say that Vulkan or SPIR-V specification is perfect either. One still has a lot of doubts while reading them. But at least there is an attempt of writing a document that specifies the entire contract that exists between the API implementer and the API consumer. Missing points are in general considered bugs and sometimes fixed.
- flohofwoe 2y ago
- flohofwoe 2y agoD3D11 and D3D12 are objectively better designed APIs than their 'Khronos counterparts' OpenGL and Vulkan, as is Metal on iOS and macOS.
- miniupuchaty 2y agoWhile OpenGl vs D3D11 I would agree I don't find D3D12 vs Vulkan difference to be that big. What are the parts that you consider objectively better in D3D12 compared to Vulkan?
- miniupuchaty 2y agoIt's mostly on us, the developers. Vulkan is fully supported on windows. I would say that if you want to have multi-platform support just use Vulkan. Covers most of the platforms(especially if you include MoltenVK)[0]. Though, for games, if you want to support Xbox, that usually throws a curveball into API choice planning. As that might be more important of a target than Linux/Android/Mac/iOS(maybe even combined) for your game. So if you already have to support DX for that.. [0] https://www.vulkan.org/porting https://www.vulkan.org/porting
- troupo 2y ago> Vulkan is fully supported on windows. If and only if the GPU vendor supports it (they do for now). Windows itself fully supports only DX > Though, for games, if you want to support Xbox, that usually throws a curveball into API choice As does Playstation. Very few develop with Vulkan for Playstation as GDN (or whatever the name of the native framework is) is the main choice. And on mobile, well, you need to support Metal.