flyinghead / flycast

Flycast is a multiplatform Sega Dreamcast, Naomi, Naomi 2 and Atomiswave emulator
GNU General Public License v2.0
1.28k stars 161 forks source link

Vulkan/Per-Pixel support for iOS app #1541

Closed justing6 closed 4 weeks ago

justing6 commented 1 month ago

Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] Some games like Sonic Adventure require Per-Pixel transparent sorting to avoid graphical issues. Newer iOS devices (especially iPads) should be powerful enough to run Per-Pixel, at least at native Dreamcast resolution.

Describe the solution you'd like A clear and concise description of what you want to happen. As far as I know Per-Pixel is limited to Vulkan, so either integrating Vulkan into the iOS client as an alternative to Metal or implementing Per-Pixel into the Metal renderer would solve this issue.

Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered. I can’t think of any way to work around this.

Additional context Add any other context or screenshots about the feature request here.

flyinghead commented 1 month ago

Unfortunately Vulkan on iOS doesn't support stores and atomic operations in the fragment shader, which is required for per-pixel. The alternative is to develop yet another renderer using the proprietary Metal API but I don't have any such plan in the foreseeable future. Contributions are welcome of course.

justing6 commented 4 weeks ago

Thanks for following up! That makes sense, I’ll go ahead and close the request. As the iOS client still requires JIT, the reachable userbase is likely too small to commit to developing a new renderer. Let’s just hope that Apple changes their minds about JIT (unlikely) or Vulkan on iOS adds more support!

justing6 commented 4 weeks ago

Closing as this level of effort is not currently on the roadmap.