Back to topic please.
As usual: Take the following with a grain of salt.
We already have 2 backends for the GPU: OpenGL and software rasterization.
I’d be totally fine with ditching the GL backend in favour of a Vulkan backend. However, adding a new Vulkan backend would be horrible imo. Even with the 2 backends we currently support, the software rasterizer (which is supposed to be easier to debug, understand and portable) is getting almost no love and it still doesn’t support some very basic features such as lighting or texture interpolation.
Any new GPU feature needs 2 implementations currently as there is no fallback path in any of the renderers which would be able to use said feature from the other renderer.
So before Vulkan is acceptable we need a more robust backend and / or stable software rasterizer which can be used as a reference.
We also need stable hardware tests or something like CiTrace.
If we have said backend we can get rid of OpenGL as most GL 3.3 GPUs support Vulkan too and Vulkan appears to be more flexible than GPU. There are already a couple of features which will be ugly to implement in OpenGL (amongst them are probably RGBA <-> Depth texture conversions or deactivating pixel reads).
Before anybody complains about their PC not running Vulkan: A Vulkan backend would take at least half a year to develop, chances are a lot of people will upgrade their PC before it gets usable. Also, even if we stick to GL 3.3 we’ll probably need more advanced extensions soon. So chances are Vulkan will actually lower requirements compared to a OGL renderer.
A big problem with Vulkan is that it raises requirements. NVidia Cards support it starting with Kepler architecture which is pretty recent. In the case of android, it would be starting with android 7.0 which limits the amount of devices.
Vulkan does have its benefits like using SPIR-V as target language for the shader JIT once we are sure how much accuracy we need. Also the ‘mantle’ delegating to CPU of certain GPU processing is all nice.
If you implement Vulkan, please do not remove OpenGL.
I can play every emulator using D3D or OpenGL backends, but Vulkan doesn’t work for me. I’m sure there are other people who will be unable to use it. Just please, don’t remove OpenGL.
Implementing Vulkan wouldn’t necessary mean the removal of other backends unless one was proven to be superior to the other. What kind of video card do you have? Most modern cards should be able to run Vulkan. AMD has better availablility then NVIDIA does.
Sorry, but it probably would. Or rather, we wouldn’t even start a new backend if we didn’t think it would be going to be superior to the existing one. Maintaining two separate backends is too much work for the team which can barely work on the current set of tasks already.
So, that means OpenGL will begone?
I notice most users have the latests graphics card and i7s.
I have Core2Duo and nVidia 9500GT (very old as you can see).
There are no plans for a vulkan back end at this time.
Yes, I only mentioned it because I was interested in using it as an opportunity to expand my knowledge. It would be a quite a while before I even had something workable so there is no fear of anything being replaced.
Maybe if the full graphics pipeline is refactored to make the backend’s work minimal.