5 ms·
Noob question - is there a quick summary somewhere why Vulkan is better than e.g. OpenGL? Whats different? And what kind of performance enhancements one should
by rixrax 6y ago
Noob question - is there a quick summary somewhere why Vulkan is better than e.g. OpenGL? Whats different? And what kind of performance enhancements one should expect when using Vulkan?
- cgufus 6y agoIsn't Vulkan just the new name for the efforts that historically went into OpenGL?
- pja 6y agoIt’s a clean slate API by the same industry group that’s lower level than OpenGL.
- tarruda 6y agoAnswer from another noob: AFAIK it is not about being better, but lower level. Being closer to how GPUs work underneath gives developers more flexibility for optimizing.
- GreenHeuristics 6y agoOften it has been that Vulkan is closer to how GPUs work simply due to GPU manufacturers having to change their GPUs to work well with Vulkan. To for example add a co-processor to the GPU so that it can do job scheduling in a more Vulkanish way. Vulkan was after all a spec from one GPU manufacturer (AMD), there are a handfull others with their own archs developed with their own assumptions.
- cma 6y agoMantle was the single GPU manufacturer API, Vulkan was based on Mantle, but its creation had input from all the major vendors including Nvidia.
- GreenHeuristics 6y ago'had input' = can be accepted, not 'is also based on'
- grishka 6y agoAs I understand it, Vulkan allows the application much more control over the rendering pipeline, whereas OpenGL has a lot of internal state you control indirectly.
- gchadwick 6y agoOne issue with OpenGL is it was originally designed in the 90s when modern GPUs didn't exist. Whilst the API has evolved since then there was a reticence to chunk it all away and start again with a clean slate, or at least have a radical resdesign (something DirectX didn't shy away from). Vulkan is built based on modern GPU architecture as well as being lower level then OpenGL. This makes it easier to get the best out of the hardware.
- jpm48 6y agoOpenGL is single threaded with a single state machine (ok there are some atomic supports via extensions). Vulkan allows you to manage the stream so you can multi-thread. This allows you to update more that 1 state at a time, for example in OpenGL loading textures and mesh data at the same time can't happen easily. In vulkan you can tune this yourself. (this is a very simplistic example). I usually say that Vulkan is more akin to you writing the graphics driver. Where as OpenGL gives you the driver.
- GreenHeuristics 6y agoOpenGL supports multi-threading via creation of multiple contexts, sharing resources (textures, shaders etc) between them.
- jpm48 6y agoVertex array objects are not which can be a bit of a pain.