Vulkan Again

Featured image for article: Vulkan Again

I was impressed that the retroid pocket 3+ runs Yabasanshiro at full speed. But I also noticed some features like tessellation do not work, so I tried to implement them for this device. But these issues happened inside of the OpenGL ES driver and seemed hard to fix by me. So I try them on my Vulkan code. Then it's easily fixed. I found that I am in a new era. OpenGL ES is sunsetting. GPU maker will not support OpenGL ES drivers anymore. VDP(SEGA Saturn Video processer) emulation with Vulkan is mandatory to adapt to this era.

I decided that from Yabasanshiro2 version 1.10.0, Vulkan is the default GPU emulation. It's not a sweet story. There are pros and cons.

Pros.

Tessellation and Compute Shader are now default.

In the era of OpenGL ES, it's ambiguous that GPU supports Tessellation and Compute Shader. On the specification of Vulkan API, Tessellation and Compute shader is mandatory. You can enjoy the hi-resolution mode of SEGA Saturn games.

Better GPU driver compatibility

In the era of OpenGL, I struggled to write code that runs every GPU, Because The code of OpenGL driver is enormous, and There are many interpretations. The code of the Vulkan driver is thin, and interpretations are minimum. It's easier to write code with compatibility.

no frame limit

Vulkan can use a mailbox swap chain. That means YabaSanshiro can render above 60fps. So you can play games with max speed.

Cons.

Huge amount of code

State management and synchronization between CPU and GPU are the application's responsibility. As a result code size of Vulkan is much larger than that of OpenGL ES. It's hard work to maintain it.

Conclution.

I am the kind of person who wants to control everything, so I have no hesitation in choosing Vulkan. I am confident that I can provide you with a highly compatible emulator that will work on various devices.

I have implemented a set of features, but there is no guarantee that there will be no glitches. I am releasing it as an alpha version and maturing it as we receive feedback. If you find a graphics glitch, please report it here or on github .

Now Alpha version is available at Google Play Store. you can get it from here