The 'ubershaders' introduced in v1.14 are not handled efficiently by the Mesa v3d driver, causing a performance regression [1].
Since the slowdown is not present in the Mesa version from Bullseye/Bookworm (which caused in part the version upgrade), install v1.13.2 just on Buster/RPI.
[1] https://github.com/hrydgard/ppsspp/issues/18388
Fixes building on Debian 12 Bookworm for the included `ffmpeg` project.
Changes since 13.x:
* ver 1.14.x (full list of changes - https://www.ppsspp.org/news/release-1.14)
* Graphics fixes in Burnout Dominator, Kurohyou, Ratchet & Clank, Outrun, Ridge Racer, Spongebob: Yellow Avenger, Cars: Race-o-Rama, Hunter x Hunter, many others
* Performance improvements: Killzone now runs at playable speed, Juiced 2 performance fixed, lighting ubershader optimization
* Many software renderer improvements, both performance and accuracy.
* Some input handling fixes, IR interpreter fixes, and so much more.
* MSAA antialiasing added to the Vulkan backend (desktop only)
* New API for plugins to access aspect ratio, scaling and fast-forward ([#16441]), other new APIs & improvements
* UI improvements
- New interactive Display Layout & Effects screen, replacing the old Display Layout Editor
- Add default shader for LCD persistence simulation
- Game being played can now be seen as a background in most menus
- Reorganize speed hack settings
* Stability fixes
- Workaround for hangs on older Adreno GPUs
- Input handling fixes for deadzones and touch controls
- Avoid game bugs in Twinbee Portable and Shining Ark
* Performance improvements
- Vulkan bandwidth and synchronization optimizations
- Lighting "ubershader" optimization to prevent hitches
- Assorted minor other improvements
- Improve texture replacement memory usage
- Texture upscaling speedup and fixes
* version 1.15 (full list of changes - https://www.ppsspp.org/news/release-1.15)
* Tilt controls: Restore "Low end radius" control
* Improve the workarounds for the DJ Max games
* OpenGL: Restore most of the lost performance on low-end hardware from the shader variant reduction
* Add a simple profiling tool to check CPU usage by the GL backend
* Loader: Fix bug preventing WWE 2009 from starting
* Control mapping: Fix bugs in mapping UI causing trouble with some controllers
* Fix for broken tilt d-pad controls
* Stutter caused by shader compilation has been reduced drastically
* Rendering performance and fixes
* Texture replacement improvements
* Optimizations for Vulkan texture uploads, Software renderer, Lighting shader optimizations.
* GLSL shader compatibility fixes
* Rewind savestates no longer slows things down a lot
* Depth-related rendering fixes
* UI fixes: Vertical use of space, scrollbars, touchpad scroll on Windows
* version 1.16 (full list of changes - https://www.ppsspp.org/news/release-1.16)
* RetroAchievements support !
* Fix performance issue with Vulkan descriptor set allocation
* Smoother loading of replacement textures
* Fix problem with waves background
* Fix for crash when changing render backend in-game
* Simplify shader cache lookups on Vulkan, hopefully fixing some crashes
* Other crash and stability fixes
* Assorted improvements to the IR JITs
* Fix crash bug and performance issue in Vulkan shader cache
* Fix for HTTP support on Linux on networks with shaky or incomplete IPv6 support
* Fix hang when switching UMD with RetroAchievements enabled
* Input fixes
* Rendering performance and fixes
* Texture replacement fixes
* UI changes
- Color emoji support on some platforms
- Use TTF fonts on SDL where available (macOS, Linux/Steam Deck)
- Allow setting the PSP's MAC address directly
- Better looking notifications
* Fix horrible audio glitch in After Burner
* Fix timing issue causing slowdowns in MLB games
* Emulate the vrnd instruction accurately
Both stand-alone `ppsspp` and the libretro core `lr-ppsspp` share the `$HOME/.config/ppsspp` save file directory.
`moveConfigDir` removes the symlink on removal; this will disconnects the existing saves from the remaining emulator.
ppsspp: Use moveConfigDir only on install.
On removal, do not use the helper function. Remove the symlink manually and only if no remaining PSP emulators.
lr-ppsspp: Libretro core did not link this dir at all, and just used mkUserDir instead. Switch to use moveConfigDir and same fix as above, for libretro core also.
Current master has shader issues on videocore causing a black screen, so switching back to last tagged version - v1.12.3.
Historically we have had to fix up a fair number of ppsspp issues on the RPI due to upstream changes so sticking to a stable release seems like a good idea and allows us to test before we update.
The PPSSPP repository is also quite active and re-building ppsspp/lr-ppsspp binaries for every change takes a lot of time, so this also frees up some cpu time on our build system.
`lr-ppsspp` uses the `savefile_directory` path in order to create its own save structure.
Game saves are not regular `.srm` files, but they're saved in a `PSP/SAVEDATA/<GAME_ID>` folder structure.
Without setting a `savefile_directory`, the core will try to save to `/PSP/SAVEDATA/<GAME_ID>`, which obviously fails.
Setting this to `$HOME/.config/ppsspp` makes it possible to share the savedata with the standalone emulator.
Users reported that this version runs faster on videocore on the rpi1/2/3
Adjusted ppsspp sources to allow branch parameter and fixed build subfolder to ppsspp
so that paths are the same for md_ret_files, including adjusting lr-ppsspp in the same way.
Older code builds ok with our current ppsspp module script on rpi1/2/3 + videocore gles2,
but not rpi4, which it isn't needed on anyway. This may need changing if we have to update
ppsspp further in the future.
* rp_module_menus is no more - instead use rp_module_section with one of
- core (core packages)
- main (main packages - which will be installed by default in the image)
- opt (optional packages)
- exp (experimental packages)
- driver (driver packages)
- config (configuration packages / tools)
* The setup menu organises the data based on the above sections. more could be added in the future if needed. Packages (internally modules), can be added / configured / removed individually, or as entire sections.
* The setup menu will automatically detect if a binary is available to be installed. the nobin flag is no longer needed. modules that install directly from binary via aptInstall or via a prebuilt binary need to use an install_bin_ function instead of install_
* rp_module_section of type "config" will have the "gui_" function called first if it's available, otherwise a standard depends/sources/build/install/configure will be called
* configure is no longer used for "gui" configuration function - use gui_ instead. Had already started to move to this before, but now it is required.