hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
10.79k stars 2.12k forks source link

Switch rendering mode backends on the fly #15636

Open ghost opened 2 years ago

ghost commented 2 years ago

What should happen

Have the ability to change the OpenGL/Vulkan/DX9/DX11 backends on the fly even if you are ingame. If there was already a request for this , you could close it.

Who would this benefit

Not having to restart the game/ppsspp each time to see if there is a difference or a bug with the backend.

Platform (if relevant)

No response

Games this would be useful in

Everything

Other emulators or software with a similar feature

PCSX2 (and/or AetherSX2) and Duckstation comes to mind. If I am not mistaken they just use save states for changing the backends.

Checklist

unknownbrackets commented 2 years ago

Well, I implemented some of this (it's useful for debugging) and it caused problems because of drivers.

If I remember correctly, if you initialize Vulkan and then try to use OpenGL, bad things happen with the NVIDIA drivers.

That means PPSSPP is going to have to restart, because of limitations. It can't just do it on the fly. Feasibly, it could create a save state, restart, then load the game and save state. But that's not exactly on the fly, and it'll still be slow and cause the window to reopen, at best.

-[Unknown]

ghost commented 2 years ago

Hmm i wonder how PCSX2 is doing tt so efficiently then. There are some games that could do it , the KEX engine games come to mind (Blood Fresh Supply etc) some use DX11 , OpenGL and Vulkan and let you choose the renderer while ingame. Althought its a bit broken on Linux with proton for some reason

ghost commented 1 year ago

It seems dolphin emulator is also adding like this feature. https://github.com/dolphin-emu/dolphin/pull/11378/commits/8ad90e43cf860395e608c2916debf0f1232ee145