Commit Graph
635 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Sonnet 5 abe6786ae1 Rename core to Core and extract it and GPU into their own CMakeLists.txt
Mirrors the earlier Common extraction. The old "core" target folded in
all of GPU/ (~200 files) plus a few ext/ files wholesale; Windows
already treats GPU as its own project (GPU.vcxproj), so GPU/CMakeLists.txt
splits that out too. GPU has a genuine two-way dependency with Core
(Core/System.cpp calls GPU_Init(), GPU/* calls back into Core for
Memory/Config/CoreTiming/etc), so GPU is a CMake OBJECT library: its
object files are always included wherever consumed instead of being
lazily pulled from an archive, avoiding the GNU ld single-pass
archive-ordering problem a two-way STATIC dependency would hit.

Also fixed a few library misattributions discovered while tracing what
each file actually uses:
- GlslangLibs (glslang/spirv-cross) moved from Core to Common, since
  it's Common/GPU/ShaderTranslation.cpp and VulkanContext.cpp that
  call into it directly. It only worked before because Core happened
  to always be linked after Common.
- ZSTD and OPENGL_LIBRARIES/X11_LIBRARIES moved from Core to GPU,
  matching where they're actually called (GPU/Debugger/Record.cpp and
  Playback.cpp for ZSTD, GPU/GLES for raw gl*() calls).
- GPU also needs Ext::Snappy directly (Playback.cpp calls
  snappy_uncompress) and the libretro-common include dir under
  LIBRETRO, both previously inherited for free by accident.

Also fixed USE_DISCORD's add_compile_definitions ordering: it was
being defined after ppsspp_ui's add_library call, so the UI target
never actually saw it on non-MSVC platforms.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PSNaZnHCjmryS3ziVN9gZU
2026-07-24 20:16:07 +02:00
Henrik Rydgård af7977267e Add NeedsRenderThread property to GraphicsContext 2026-07-24 15:31:41 +02:00
Henrik Rydgård afe4d5beaf Buildfixes, dependency shuffling to make things more logical 2026-07-24 14:43:34 +02:00
Henrik Rydgård 240a974e95 Remove direct dependency from Core to MacCameraHelper.mm 2026-07-24 12:06:15 +02:00
Henrik Rydgård a7a4c4d110 Merge pull request #21959 from mattakins/fix-ppsspp-vulkan-swapchain-capacity
Libretro: prevent Vulkan launch crashes with large swapchains
2026-07-23 11:34:54 +02:00
Matt Akins a4f83785d9 Libretro: keep Vulkan feature setup valid
- Use VkPhysicalDeviceFeatures2 when supplied by PPSSPP
- Leave pEnabledFeatures null as Vulkan requires
2026-07-22 11:31:25 -07:00
Henrik Rydgård 00a566514e Buildfixes 2026-07-21 14:00:02 +02:00
Matt Akins 1c8c1f99a7 Libretro: support Vulkan swapchains with more than eight images 2026-07-19 14:00:27 -07:00
Henrik Rydgård ca8e54106b Remove libretro setting definition 2026-07-14 20:01:33 +02:00
Mark Pearce 00f5f4fc90 libretro: guard output_audio_buffer with a mutex
System_AudioPushSamples() runs on the emu thread when one is active
(GL/GLCore backends) and appends to / reallocs output_audio_buffer,
while retro_run() on the libretro thread reads .data/.size and resets
.size in upload_output_audio_buffer(), unsynchronized. A realloc on
the emu thread can free the pointer while audio_batch_cb() reads it.

Guard the four access sites with a mutex (<mutex> was already included
in this file, unused). The lock is held across audio_batch_cb() — no
second buffer; worst case the emu thread briefly backpressures while
the frontend syncs audio. Behavior is otherwise unchanged.
2026-07-07 11:02:00 +08:00
Henrik Rydgård 623545bd24 Delete the "Hardware tessellation" feature.
Very hard to maintain and debug, not worth it.
2026-06-16 16:17:14 +02:00
Henrik Rydgård 8c1a1c0410 Fix the rotation problem in Vulkan on libretro.
Replaces #21840
2026-06-16 11:57:40 +02:00
Henrik Rydgård 36bdde68f9 Delete the "Lazy texture cache" option 2026-06-09 23:49:54 +02:00
Henrik Rydgård a317890c08 Remove the GPUDebugInterface class
Just a pointless extra layer in the class hiearchy, making it
unnecessarily hard to modify the interface.

Might as well hit GPUCommon directly.
2026-06-02 11:15:08 +02:00
Henrik Rydgård 33ae88af6d Delete option "Disable range culling". No games are known to require it anymore. 2026-05-31 23:31:06 +02:00
Henrik Rydgård 0b47955c64 Delete geometry shader culling support. Is mostly replaced, and will be fully replaced with software transform. 2026-05-30 19:07:59 +02:00
Mark Pearce 77045b89ad libretro: call SetGLCoreContext(true) in LibretroGLCoreContext
LibretroGLCoreContext is the backend for RETRO_HW_CONTEXT_OPENGL_CORE,
so the frontend hands us a desktop GL Core profile context. But
CreateDrawContext() never told GLFeatures about it — useCoreContext
stayed at its default false and gl_extensions.IsCoreContext stayed
false, so the macOS Core-profile workaround at GLFeatures.cpp:532
(which force-enables ARB_framebuffer_object because Apple's Core
driver doesn't list it as an extension) never fired.

Every glBindFramebuffer(GL_FRAMEBUFFER, g_defaultFBO) in
GLQueueRunner::fbo_unbind then fell through both branches and silently
no-op'd, so the BackBuffer present pass rendered into nothing and
GL_INVALID_OPERATION accumulated. End result: black screen on macOS,
audio and game logic still working.

One-line fix: call SetGLCoreContext(true) before CheckGLExtensions().
2026-05-22 01:43:27 +08:00
Henrik Rydgård 733f886e98 libretro: Apply swapchain timing fix suggested in #21627
See #21627
2026-05-03 23:58:30 +02:00
sonninnos b7d4a54a45 Libretro: Fix serialization hang with opengl emuthread 2026-05-01 03:38:57 +03:00
celerizer 12cfe70df1 only opengl reset if something actually changed 2026-04-07 13:59:22 -05:00
celerizer 72bd0fa4d3 add null-checks on software render path 2026-04-07 11:05:50 -05:00
Chris Healy ba59170b0b OpenGL: Add GLProfiler for GPU timestamp profiling
Adds a new GLProfiler class for GPU-side timestamp profiling, similar to
VulkanProfiler. Uses GL_EXT_disjoint_timer_query (GLES) or GL_ARB_timer_query
(desktop GL).

Features:
- Scoped Begin()/End() profiling with printf-style naming
- Automatic GPU disjoint detection (frequency changes invalidate results)
- Millisecond timing output via INFO_LOG
- Pre-allocated query pool (1024 queries max per frame)
- Nested scope support with indented output

Signed-off-by: Chris Healy <cphealy@gmail.com>
2026-03-18 09:52:43 -07:00
Eric Warmenhoven be85deba21 libretro: Detach glslang from process on shutdown
On Apple platforms without this, glslang doesn't get properly
deinitialized, and will cause a crash on the second play
2026-03-06 11:04:37 -05:00
Henrik Rydgård 8b0144dbfc Get libretro integration working again.
- Fixes #21275

- Fixes #21274
2026-02-18 10:14:37 +01:00
Henrik Rydgård f046857d2b Delete remains of support for the MIPS architecture as host 2026-02-17 10:20:51 +01:00
Henrik Rydgård 9936fcfee3 Libretro: Freeze fix
Broke in #21221, forgot to apply the refactoring with libretro
2026-02-10 08:25:52 +01:00
Katharine Chui f3e11110ed bump aemu_postoffice
extend max pdp block size, due to user report of the following in
dissidia:

07:53:752 MatchingEven I[SCENET]: HLE\sceNetAdhocMatching.cpp:1188 EventLoop[1]: Matching Event [1=HELLO][00:02:02:02:02:02] OptSize=4696
2026-02-06 11:43:32 +01:00
刘皓 924b30b607 Revert "Disable the libretro VFS on non-Android platforms" 2026-02-06 00:04:19 -05:00
Henrik Rydgård 7d987cd78b Make fast_matrix_mul_4x4 inlineable 2026-01-30 14:10:32 +01:00
Henrik Rydgård ed5a052258 Remove unused initial work for adding NEON support to ARM JITs.
Our SIMD strategy for ARM is the JitUsingIR.
2026-01-29 17:41:57 +01:00
Eric Warmenhoven 58eaf56c5e libretro: build fix
gcc9 and the version of msvc19 that the libretro builders use don't
have _mm_storeu_si32. Using _m_cvtsi128_si32 followed by memcpy is
picked up by compilers that support _mm_storeu_si32 as being the same
and they generate the same assembly, so this is no harm to them.
2026-01-28 00:15:35 -05:00
Henrik Rydgård 34938e3de6 Move Notice to Common/UI 2026-01-25 15:10:26 +01:00
刘皓 84b2744fd7 Disable the libretro VFS on non-Android platforms 2026-01-22 12:07:58 -05:00
Katharine Chui 5aa266934b import aemu_postoffice as a submodule instead 2026-01-19 22:14:51 +01:00
Henrik Rydgård f4dbff0f14 Merge branch 'master' into aemu_postoffice_integrate_v2 2026-01-19 11:40:38 +01:00
MMaZaHaKa 9bb01cc127 upd libretro 2026-01-18 23:51:08 +02:00
刘皓 aea42e2cc5 Change RETRO_HW_CONTEXT_DIRECT3D to RETRO_HW_CONTEXT_D3D11 2026-01-12 11:50:40 -05:00
刘皓 75681e46ee Fix libretro builds for iOS and Windows 2026-01-12 11:31:42 -05:00
Katharine Chui bf30de1527 initial github.com/kethen/aemu_postoffice integration ported from github.com/kethen/aemu 2026-01-11 18:53:54 +01:00
Henrik Rydgård 3f3b353350 Merge pull request #21092 from white-axe/libretro-vfs
Use the libretro VFS interface in libretro builds
2026-01-10 16:36:01 +01:00
Henrik Rydgård e33ff46ffd Extract the rewind code from SaveState.cpp, to make it more managable. 2026-01-08 22:22:46 +01:00
刘皓 18ac1ec937 Use the libretro VFS when reading/writing cheats 2026-01-02 17:07:22 -05:00
刘皓 cb3a89542c Enable the libretro VFS in libretro builds that use Make 2026-01-02 12:44:50 -05:00
刘皓 6fef11a47d Fix libretro builds that use Make 2026-01-02 12:17:09 -05:00
刘皓 5716cbd41d Use the libretro VFS interface in libretro builds 2026-01-01 00:24:01 -05:00
刘皓 a018cfc017 Update libretro-common and remove redundant libretro header files 2025-12-30 23:06:58 -05:00
Eric Warmenhoven 23bd33748e Fix libretro windows builds 2025-11-25 12:03:47 -05:00
Henrik Rydgård b8fced5b41 Path code cleanup, move some UI code (#21037)
* Move a bunch of path logic into Core/Util/PathUtil.cpp/h

.

* Move GameImageView out from SaveDataScreen

* More cleanup, add a translation string
2025-11-25 00:44:24 +01:00
Eric Warmenhoven a4a1752f61 libretro: fix mac build 2025-11-11 09:39:39 -05:00
Henrik Rydgård 67010ff2af Split the display layout config between landscape and portrait orientations 2025-11-05 12:49:51 +01:00