Commit Graph
37 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 d0e3141f43 FFmpeg: Vendor what PPSSPP uses into ext/ffmpeg, drop the submodule
The ffmpeg submodule held prebuilt libraries for every platform next to the
sources (about 1.5 GB checked out), and nothing uses those any more. Only the
needed sources are copied in, from the submodule's commit, along with every
header and template they include. The path is new, so checking out commits on
either side of this works.

It's also cut down to what PPSSPP uses: the H.264, AAC, MP3, ATRAC3 and ATRAC3+
decoders, the H.264 parser, the demuxers as before, and the FFV1 encoder, AVI
muxer and file protocol for AVI dumping. config.h takes its CONFIG_ values from
FFmpeg 3.0.2's own configure run with just those enabled. The raw H.264 demuxer
stays even though nothing opens raw H.264: probing PSMF data uses it to identify
the video stream's codec, which otherwise comes out as none.

On top of that:
- The files nothing links (configure would build them, but they're never pulled
  out of the static library, going by the GCC link map) are left out: mostly
  libavutil's crypto and hashing and the alternative DCT/IDCT/FFT versions.
- libswresample isn't built, now that nothing uses it.
- The H.264 decoder only does 8-bit video, which is all the PSP has. The SPS
  parser rejects any other bit depth, and the DSP files no longer build their 9-
  to 16-bit variants, which the linker kept because the init functions pick one
  by bit depth at run time.

That's 160 files to compile instead of 277, and 391 of FFmpeg's vendored, about
5.8 MB. The README in ext/ffmpeg has what was done, the PPSSPP patches in the
copy, how to add a component, and the tradeoffs.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 22:27:54 +01:00
Henrik RydgårdandClaude Opus 5.5 03ac2c8ded libretro: Link FFmpeg as a static library of its own
With its objects on it, the MSVC link command line got too long for Windows.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 22:27:53 +01:00
Henrik RydgårdandClaude Opus 5.5 70a0a9dd00 Android, libretro: Build FFmpeg from source
The ndk-build builds (android/jni and libretro/jni) get a static library module
with the files in ext/ffmpeg-build/sources.mk, in place of the prebuilt
libraries. The libretro Makefile compiles them itself, with FFmpeg's include
directories first so its config.h wins over the others on the include path, and
puts the objects in obj-ffmpeg/ rather than next to the sources, where a
configure build may have left its own.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 22:27:53 +01:00
Henrik RydgårdandClaude Opus 5.5 e932d55f1c Build: Only turn off floating-point contraction for CPU emulation
The vertex decoder's C++ steps may fuse, like the vertex JITs do; with
contraction off everywhere, RISC-V's VertexJit test found the JIT and
the steps disagreeing on morphed float UVs. The flag now applies to
Core/MIPS only, in CMake and the libretro Makefile. ndk-build has no
per-file flags, so the legacy Android.mk goes back to the default.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 12:59:04 -06:00
Henrik RydgårdandClaude Opus 5.5 1206528e45 Build: Turn off floating-point contraction for C++
Clang and GCC fuse a * b + c into one rounding on CPUs that have fused
multiply-add, which on ARM64 made the interpreter's dot products, vavg,
vdet and vqmul round differently from x86-64. Fused operations now only
happen where the code asks for them. MSVC doesn't contract by default.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 12:24:43 -06:00
Chris 3a77d51df1 libretro: add GLEW_EGL=1 to build GLEW's EGL backend
GLEW resolves its entry points through GLX unless built with GLEW_EGL. On a
display stack that provides no GLX -- Wayland, or GBM -- glxewInit() returns
GLEW_ERROR_NO_GLX_DISPLAY, glewInit() fails, and the GL backend never starts.

Building the EGL backend resolves them through eglGetProcAddress instead, which
works on both. It is opt-in rather than the default so existing GLX builds are
untouched.

Note that changing this needs ext/glew/glew.o deleted to take effect, since the
Makefile is not a prerequisite of the object.
2026-08-07 15:01:04 +01:00
Bobby Smith 46a07943cc [Libretro] Fix Windows build + D3D11 glitches 2025-08-29 02:29:54 +02:00
Henrik Rydgård 6cfea96e58 Remove D3D9 support, to make future changes easier 2025-06-10 15:07:16 +02:00
oltolm 391e272df7 d3dx9: do not use it 2025-01-18 12:08:03 +01:00
oltolm 2d9f5ecc8f dx9sdk: do not use submodule 2025-01-18 11:28:59 +01:00
sonninnos a1b7d6e84a libretro: easier debug building 2024-05-28 15:55:26 +03:00
Ethan O'Brien 8426b35a80 Cleanup emscripten libretro build target 2023-08-12 14:38:35 -05:00
Gabriel Morazán 6c2f830d3b (Libretro) Makefile Tweak 2023-01-10 11:25:19 -04:00
Bobby Smith 7b47eb0fbd [Libretro] Prevent the removal of "huf_decompress_amd64.S" when doing "make clean" on Linux 2023-01-10 12:30:27 +01:00
Gabriel Morazán 5e4492b43f Libretro Buildbot Fix 2022-11-24 13:51:13 -04:00
GABO1423 2af55d37ad (Libretro) Huge MSVC Build Overhaul 2022-11-24 12:42:38 -04:00
Kingcom e025629d4b Attempt to fix libretro build 2022-10-03 15:50:33 +02:00
Unknown W. Brackets 559fdd167f armips: Also update UWP and ARM64, etc. 2022-09-30 20:16:34 -07:00
Stuart Kenny afdd51c0e6 Build with correct preprocessor flag 2021-11-24 16:37:29 +00:00
twinaphex 35e743c685 (Libretro/Gitlab) Add osx x64 target 2021-03-26 18:06:36 +01:00
Henrik Rydgård dc873bbd42 Add missing -DWITH_UPNP in a couple more places. 2021-03-20 13:46:45 +01:00
Unknown W. Brackets d9aecffd72 Build: Remove old ARM define. 2021-03-02 21:26:03 -08:00
Unknown W. Brackets 5119d79082 Build: Remove IOS define. 2021-03-02 21:04:03 -08:00
jdgleaver 580c0d3e61 (.gitlab-ci.yml) Add linux-i686 and windows-i686 targets (+ prevent creation of 'null' file when building Windows libretro cores) 2021-02-03 15:26:40 +00:00
jdgleaver 32aa4bfdd0 (.gitlab-ci.yml) Add windows-x64 target 2021-01-29 10:29:13 +00:00
Henrik Rydgård dffc36b854 Get Vulkan going again with libretro. Rendering is the wrong size and crashes on exit, but it's a start.
Only tested on Windows.
2020-10-11 19:06:09 +02:00
twinaphex 20d10187cd (Libretro Windows) Buildfix 2020-07-24 08:54:51 +02:00
Henrik Rydgård dd8dd2c15d Libretro: Update minimum windows version to Vista. Committed on behalf of twinaphex
To fix a build error.
2020-07-23 22:37:42 +02:00
twinaphex b8ad9c4d38 (Libretro) Add MSVC 2019 target 2020-07-13 21:12:41 +02:00
plaidman 8b2fcc5fe6 fix unintended line removal from rpi platform 2019-06-07 10:25:33 -04:00
plaidman 98c75085a7 adding arm64 platform to libretro makefile 2019-06-07 09:22:32 -04:00
Aaron Kling 9ee6203545 Squash of a few libretro makeile fixes
Fix https://github.com/libretro/ppsspp/issues/5#issuecomment-383238875

Add missing file

Bump this, in case you are building without .git/ folder

Libretro: remove override directive. (#4)
2018-10-31 10:39:44 -05:00
aliaspider bb64390632 Libretro: update Makefiles. 2018-03-26 17:52:35 +01:00
aliaspider dc490b3fc6 Libretro: msvc build fix. 2018-03-26 15:08:34 +01:00
gouchi 3fedaede1c Libretro: Declare TARGET_ARCH for ARM before the include flags 2018-03-24 23:08:22 +01:00
aliaspider 4113ba74f2 libretro: msvc build fix. 2018-03-24 22:47:12 +01:00
aliaspider c4f7790618 Libretro port. 2018-03-24 12:44:53 +01:00