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.
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.
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.
Vulkan can use a mailbox swap chain. That means YabaSanshiro can render above 60fps. So you can play games with max speed.
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.
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
posted by: devMiyaxBack