Does Vulkan contain/use the same assets as open GL 3.3?


Does Vulkan contain/use the same assets as Open GL 3.3? The person who is planning on porting Citra to android, Kloen, said that they plan to use Vulkan. If so, does Vulkan contain/use the same assets as open GL 3.3? Or for Citra to be possible on android do we have to wait until open GL/ Open GL ES 3.3 gets implemented into android devices?


Wat? What kind of “assets” are you talking about? Also how is that related to the driver situation?

Generally: OpenGL # or OpenGL ES # support does not say much about Vulkan support. Some devices support Vulkan, some don’t. Some can support it (meaning driver updates), some can’t.

Citra will probably continue to work on mid- to high-end systems from the past 3 - 5 years. However, anything older than that won’t be respected when we migrate. Especially with Vulkan this could also change strongly.
A lot of people are switching to mobile-only and don’t update their PC anymore. However, with people buying a new phone every year we can expect much more recent features such as Vulkan especially on mobile. As Vulkan would probably power mobile and PC we could also bump-up the PC specs.

We will probably not maintain GL and Vulkan at the same time. So if we switch to Vulkan in the future, we’ll stop supporting OpenGL. However, at that point it is likely that the majority of people already use systems that support Vulkan.

Also, last I checked (but I might not be up to date) there was no work being done on the Vulkan backend anymore. It also wasn’t PR’d to the Citra repo yet and I don’t think it will happen before summer anyway, even if it was PR’d now.
There is no official mobile / android version of Citra yet either.


Thanks for the reply. Sorry, I didn’t really know how to word this so I just used the word assets. Would Library/Libraries be the right word to use? What I mean basically, is Vulkan similar to Open GL 3.3? So can it render graphics the same and if Citra was designed to run on Vulkan could it work? I know there is no Citra android port but I hope soon someone will make a port, official or not, as long as there is an android port that’s fine.


The question still doesn’t make sense. Vulkan and OpenGL 3.3 are APIs, not libraries (they are implemented as libraries most often though).

Both are merely used to access the graphics hardware.
OpenGL is more abstract and limited, but can be made more flexible by jumping through hoops and raising the hardware requirements. It will also be slower due to the workarounds you have to add.
OpenGL ES (ES = Embedded Systems) is a reduced version of OpenGL for non-desktop-PCs (kind of), so a lot of the workarounds we could use in OpenGL would not work in OpenGL ES as the graphics hardware implementing it is more limited.
Vulkan is more flexible than OpenGL but it’s more complicated to work with initially. However, a lot of the workarounds would not be necessary as Vulkan is more feature rich than OpenGL to begin with.

The difference is essentially building a shed from scratch (Vulkan) where you get to pick every detail yourself OR buying a complete shed (OpenGL).
If you only need a shed fast, you’ll go with the pre-made one, it’s easier but also not as flexible. If you want to add a window to the shed later this could be problematic:
If the premade sheds design was very simplistic to reduce cost (OpenGL ES) it might even be impossible to add a window as you’d have to cut through support beams which go along the thin walls.

Given the right paintjob all sheds can look the same too. Their internal structure might be different though and impose limitations on what you can use it for or how easy it is to add another window. (Meaning you can produce the exact same image with these APIs, but how you get there and how troublesome it is varies)

These APIs are exposed by the drivers: if hardware supports Vulkan it’s likely it also supports OpenGL and OpenGL ES. However, low-end hardware will only support the lowest standards like OpenGL ES as the hardware itself is not flexible enough to support OpenGL or Vulkan.

Vulkan is the better choice for emulators because we’d have to jump through hoops with OpenGL.


Thank you for the explanation. Sorry once again, I didn’t really know how to word it and I don’t know much about Open GL, Open GL ES and Vulkan.