4 ms·
> No wonder people call it a GPU hardware abstraction API, not a graphics API. The entire point of Vulkan is that it’s a hardware abstraction. It was invented
by hnlmorg 4y ago
> No wonder people call it a GPU hardware abstraction API, not a graphics API.
The entire point of Vulkan is that it’s a hardware abstraction. It was invented to offer an API around low level hardware operations rather than the typical approach of graphics libraries which come from the opposite direction.
- pjmlp 4y agoAnd with it turned everyone into a device driver developer, no wonder it isn't taking off as much as desired, outside Android and GNU/Linux.
- vlovich123 4y agoMetal and DirectX12 (if I’m remembering my version numbers correctly) are very very similar to Vulkan so I’m not really sure what point you’re trying to make.
- dagmx 4y agoThey’re similar to Vulkan in being low level. But they’re significantly easier to target (less feature splitting) and much more ergonomic to develop with.
- skocznymroczny 4y agoI wouldn't put Metal next to DX12/Vulkan. I'd put Vulkan as the most low-level API, DX12 slightly above Vulkan (because of convenience features like commited resources, slightly simpler memory model), but Metal I'd put somewhere in the middle between OGL/DX11 and VK/DX12. Metal introduces many optimizations such as pipeline objects, but it requires much less micromanagement around memory and synchronization as VK/DX12 do.
- hnlmorg 4y agoBut it was never intended to be a general purpose graphics SDK. The way 3D rendering is done these days is drastically different from the days of OpenGL. The hardware is architecturally different, the approach people take to writing engines is different. Also most people don’t even target the graphics API directly these days and instead use off the shelf 3D engines. Vulkan was always intended to be low level. You have plenty of other APIs around still if you want something a little more abstracted.
- bsder 4y ago> And with it turned everyone into a device driver developer Which is what graphics developers wanted. The problems with OpenGL and DirectX 11 were that you had to fight the device drivers to find the "happy path" that would allow you the maximum performance. And you had zero hope of doing solid concurrency. Vulkan and DirectX 12 directly expose the happy path and are incresingly exposing the vector units. If you want higher level, you use an engine. For game developers, this is a much better world. The big problem is that if you happen to be an application developer, this new world sucks. There is nowhere near the amount of money sloshing around to produce a decent "application engine" like there are "game engines".
- astrange 4y agoHmm, "vector units" isn't the right term because GPUs usually don't use those. It's better to write your shaders in terms of scalars.