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
11.45k stars 2.19k forks source link

Unstable Frame on PPSSPP core Retroarch on Android Phone #15255

Closed yudhiyou closed 2 years ago

yudhiyou commented 2 years ago

Game or games this happens in

All Games

What area of the game

It happen on a whole game. The framerate is very choppy and unstable.

Speed seen in PPSSPP

No response

GE frame capture and debug statistics

No response

Platform

Android

Mobile phone model or graphics card

Vivo V9 Pro

PPSSPP version affected

The latest version

Last working version

No response

Graphics backend (3D API)

OpenGL / GLES

Any other notes or things you've tried

Actually already tried both OpenGL and Vulkan but it is not affected at all.

Checklist

yudhiyou commented 2 years ago

But I tried on standalone PPSSPP on same device is working fine. So this is happened only on Retroarch core.

LunaMoo commented 2 years ago

Libretro is known to be slower and limited by it's "retro" design, so doubt this will change. It's just not ment for modern emulation.

yudhiyou commented 2 years ago

About that "retro" design on libretro, I can argue with that. I have tried Duckstation and Snes9x core on Retroarch and they are a lot of smoother than their standalone app. Also I have tried PPSSPP core Retroarch on Windows PC with potato specs and it is also a lot of smoother than on Android.

unknownbrackets commented 2 years ago

Your assumption there that a "potato" PC can't still be better than a mobile phone is probably not correct.

People have complained about PPSSPP not running well with > 2x PSP render resolution or other graphics enhancements on PCs released before the PSP was released in 2005. Any potato PC built in the last 10 years that uses an Intel or AMD CPU is likely going to get a stable framerate in almost all games at reasonable settings.

This simply isn't true of Android devices. In many cases, it's down to terrible graphics drivers (desktop graphics drivers are far more mature.) Weaker Android devices tend to have less powerful CPUs and GPUs than even low spec laptops.

We've done a lot in PPSSPP to optimize for Android devices, and use threading and other things as much as we can to maximize performance. In contrast, libretro was designed for simpler systems - like the SNES (the PSP is 93x as powerful) or PS1 (the PSP is 10x as powerful) and interferes with some of the threading we do in how its API is designed. It's not some magic dust that makes any emulator better, it's just an implementation of some parts of an emulator that could in theory be common.

Since those parts are common and generic, it's not really surprising to me that they're slower and worse than equivalent parts in a specialized and very optimized emulator. Especially when using threads seems like a foreign concept to them and they've designed everything thinking about emulating little things like the NES or SNES. It also doesn't really surprise me if other emulators for weaker systems, which haven't worked so hard to optimize, benefit from the generic, but optimized, parts of libretro.

It might be there's something that can be fixed here, but it may also just be limitations of libretro. There are other issues open for libretro performance problems, though, so I'm going to close this.

-[Unknown]