4 ms·
> Extension spaghetti for starters Extensions are a PITA to deal with, but they generally represent real disparate hardware features offered by individual GPUs
by infogulch 5y ago
> Extension spaghetti for starters
Extensions are a PITA to deal with, but they generally represent real disparate hardware features offered by individual GPUs which varies by manufacturer, model, and date. This reminds me of CPU features like SSE2, AVX, AES, etc, etc which general-purpose binary programs are forced to query for at runtime to either take advantage of or fall back to a software implementation. But GPUs have even more architectural change velocity than CPUs.
It seems like a hard problem in general. How do you think this could be done better?
- skohan 5y agoYeah exactly. How else can you support the wide range of hardware features out there without being stuck with a lowest-common-denominator?
- pjmlp 5y agoApple, Microsoft, Sony and Nintendo have such a hard time delivering high quality graphics with their proprietary APIs, pity them.
- skohan 5y agoHow does DX12 do feature discovery for things like ray tracing which are supported on only some hardware?
- pjmlp 5y agoBy requiring DX12 Ultimate support, done.
- skohan 5y agoThis is a very low-quality argument. Game developers quite clearly cannot only target DX12 Ultimate and have their product only work for a small percentage of users on PC. If you want to target PC, you have to deal with hardware fragmentation. You can pretend this is a Vulkan issue, but it's just a reality of the platform.
- pjmlp 5y agoNice story, except DirectX owns the PC market, period.
- skohan 5y agopjmlp I have been on this forum long enough to know you would eventually move the goalposts. Your claim was about the merit of extensions, I'm not sure why you're talking about marketshare now.
- deleted 5y ago[deleted]
- pjmlp 5y agoWhat goalposts? The APIs that own the games market are doing just fine without Khronos mess.
- fouric 5y agoThis is not feature discovery, though - this is feature constraining, which is rather different, and doesn't work at all if you want to get a game out to a large audience while also taking advantage of different hardware configurations.
- flohofwoe 5y agoHaven't checked DX12 yet, but both D3D11 and Metal have a small number of "tiers" with guaranteed feature sets, which basically correspond to GPU generations. Usually you pick the lowest tier you can afford and write your code against that feature set. In D3D11, the "tier" is basically the minor version number (D3D11.1, .2, etc...), while in Metal you have this handy reference: https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf https://developer.apple.com/metal/Metal-Feature-Set-Tables.p... Both solutions prevent the "combinatorial explosion" of OpenGL or Vulkan extensions.
- skohan 5y agoOk I didn't know that, but it seems like a very sensible approach. I suppose you would lose some specificity in terms of very specific features, but probably this would be sufficient in most cases. But couldn't you do something very similar in Vulkan? I.e. essentially bucket your render-paths into a couple tiers by checking for a set of extensions required to support each one?
- infogulch 5y ago"How do you support a wide variety of hardware with different features without API extensions?" "Look at these companies that offer an API without extensions by not even trying to support hardware with different features."
- pjmlp 5y agoPC, iOS and console AAA game studios are doing just fine with those APIs.
- ksec 5y agoI think what pjmlp is trying to suggest is the API or Khronos instead of allowing extensions where it has limitless possibility, it should be courting and doing what Metal and Direct X are doing setting tiers of GPU Level. You either support RayTracing + N other features and call yourself Vulkan 2.0 GPU or you get back to Vulkan 1.x This is exactly how is has been working in the PC world, and is working quite well as far as I can tell.
- pjmlp 5y agoLike proprietary APIs do it, there is a limited feature set and it is set, done. With extension spaghetti, not only are we back in GLAD and GLEW land, each set of extensions is yet another possible code path.
- atq2119 5y agoExtensions are the stick with which hardware vendors beat platform companies (in practice, Microsoft) into innovation. That's how we got raytracing, for example.
- pjmlp 5y agoHardware raytracing was designed by NVidia and Microsoft together while creating DirectX 12 Ultimate, shown to the world in an Unreal engine based demo of a starwars lift scene, it has zero to do with Vulkan.
- atq2119 5y agoI doubt either of us were in the relevant rooms, but the API is very obviously a DX-ification of Nvidia's OptiX (the software-based raytracing solution that they released long before HW raytracing). Furthermore, Nvidia released OpenGL and Vulkan extensions for raytracing long before the release of DX12 Ultimate. Do you think Microsoft would have allowed that if it was a genuine co-development by the two companies?