Commit Graph

19352 Commits

Author SHA1 Message Date
thephilcoulson
751eb3a780
Merge 4f5d1fbfff into fb1c1eeaef 2026-05-12 14:01:32 +00:00
Phil Coulson
4f5d1fbfff gui: Play preview videos on row selection, not just hover 2026-05-12 22:01:25 +08:00
schm1dtmac
fb1c1eeaef
[System] Fix restart-loops upon restart-then-quit (#18723)
I observed under macOS (although the bug seems platform agnostic to me)
that when restarting a game, then subsequently quitting it, I'd get
stuck in a 'restart loop' where the game would restart upon completely
shutting down, and this would repeat every time I tried to close the
game until I gave up & force quit RPCS3. Seems like for whatever reason,
the use of std::move didn't actually guarantee that after_kill_callback
got nuked if at all, so all I've done is take a hammer to the fucker and
manually set it to nullptr after being called.

Co-authored-by: Elad <18193363+elad335@users.noreply.github.com>
2026-05-11 17:00:45 +00:00
Edwin Jarvis
6fa7efbcc3 cellMusic: Fix shuffle always producing the same order
The shuffle in step_track() used std::default_random_engine with a
default (fixed) seed, causing the playlist to be 'shuffled' into the
same deterministic order every time. Use std::random_device to seed the
engine so each shuffle produces a genuinely random order.

Fixes #18672
2026-05-11 12:16:03 +03:00
Edwin Jarvis
c534da86c3 gui: Remove close button from Game List dock widget
Users frequently close the game list accidentally and then can't
figure out how to restore it. Remove the DockWidgetClosable feature
so the close button is not shown. The game list visibility can still
be toggled via View > View Game List menu action.

Fixes #18518
2026-05-11 11:26:40 +03:00
Antonino Di Guardo
6b5a2f781a
ISO: Fix missing read of remaining chunk of data on next extent, if present (#18706) 2026-05-10 16:59:15 +00:00
Arsh Kumar Singh
cd7cb1cc11
Qt: include territory in language menu labels (#18704)
## Summary
Fixes the GUI language dropdown to show territory variants when
translation files include country codes.

**Before:** "Portuguese" for both `pt_BR` and `pt_PT`
**After:** "Portuguese (Brazil)" and "Portuguese (Portugal)"

Also fixes the same ambiguity for Chinese and any other language with
country variants.

## Implementation
Uses `QLocale::territoryToString()` alongside the existing
`QLocale::languageToString()` to construct display labels. When no
territory exists (e.g., `en`, `ja`), the label is unchanged.

## Edge cases
- No-territory locales (`en`, `ja`): unchanged —
`QLocale::territoryToString(AnyTerritory)` returns empty, guard
preserves plain language name
- Territory names are locale-translated (not hardcoded English) — they
follow the current UI language, same as `languageToString()`
- `zh_CN` → "Chinese (China)" / `zh_TW` → "Chinese (Taiwan)"
(territory-based, unlike the PS3 system language dropdown which uses
Simplified/Traditional script names — this is appropriate for the GUI
translator selector context)

## Test Plan
- [ ] Language menu shows "Portuguese (Brazil)" when `rpcs3_pt_BR.qm` is
present
- [ ] Language menu shows "Chinese (China)" when `rpcs3_zh_CN.qm` is
present
- [ ] Plain languages (`en`, `ja`) continue to show without parens

---

<details>
<summary>Review note: territory strings in UI locale</summary>

Territory names render in the current UI language (not forced English).
This matches `QLocale::languageToString()` behavior and is consistent
with how the rest of the menu renders. If hardcoded English labels are
preferred, that can be added after review.
</details>

Fixes #18215
2026-05-10 17:25:00 +02:00
kd-11
c0b358003f Add basic guidance on AI usage for contributors 2026-05-10 16:27:18 +03:00
brian218
29b4577fdb USIO: Implemented BanaPassport (バナパスポート) card reader emulation 2026-05-10 09:48:53 +02:00
schm1dtmac
b34eba2fb3 Revert PPUThread changes
Causes GOW3 segfaults at the end of PPU linking
2026-05-09 17:56:04 +03:00
AurisDSP
6850e2e5a8 Apple Silicon: consolidate JIT W^X handling with RAII guards
Address review feedback on #18701 (cc @elad335): combine the SPU
worker fix from #18701, the SPRX Loader fix from #18703, and three
additional similar W^X leaks discovered while auditing the codebase
for the same pattern. Use Allman-style braces to match RPCS3 coding
style.

Background:
On AArch64 Apple Silicon, MAP_JIT pages enforce W^X per-thread.
pthread_jit_write_protect_np(false) enables write mode and
pthread_jit_write_protect_np(true) restores execute mode. When code
takes an early return or throws between these calls, the thread is
left in write mode, which can cause segfaults on subsequent code
fetches or inconsistent state at thread teardown.

Fixes applied (all gated on __APPLE__):

1. Emu/Cell/SPUCommonRecompiler.cpp - SPU cache worker thread
   Add RAII guard so execute mode is restored on worker exit.

2. Emu/System.cpp - SPRX Loader thread
   Enter write mode (was missing entirely) so ppu_initialize() and
   ppu_precompile() can write to MAP_JIT pages, and pair with an
   RAII guard. Reproducer: Red Dead Redemption (BLUS30418) crashes
   ~12s into boot at 0x300010000 without this fix.

3. Emu/Cell/SPULLVMRecompiler.cpp - SPU LLVM compile path
   The compile function enters write mode, then has an early
   "return nullptr" path on rebuild_ubertrampoline failure that
   skipped the explicit restore. Add RAII guard so execute mode
   is restored on every exit path. The existing explicit restore
   before the cache-flush asm directives is preserved.

4. Emu/Cell/PPUThread.cpp - PPU LLVM worker thread (operator())
   Worker entered write mode but never restored it on operator()
   return. Add RAII guard.

5. Emu/Cell/PPUThread.cpp - ppu_initialize() main path
   This scope alternates write/execute mode and contains an early
   "return compiled_new" at the empty-jits check plus a final
   return that both leak write mode. Add RAII guard so execute
   mode is always restored on exit. Intermediate explicit
   transitions for the symbol-resolver invocation are preserved.

No behavioral change on x86_64 or non-Apple ARM64 (all changes are
inside #ifdef __APPLE__ / #if defined(__APPLE__)).

Supersedes #18703.
2026-05-09 15:07:22 +03:00
RipleyTom
3c2815e89c Add option to derive MAC from PSID 2026-05-09 09:27:49 +03:00
Megamouse
4312221498 Add anaglyph settings 2026-05-08 21:42:29 +02:00
Gustavo Graziano
c102d1ec0d
Add missing hover effect in ‎GustavoGraziano's theme 2026-05-08 14:24:54 +00:00
Arsh Kumar Singh
98e9b3cf30
Qt: Disambiguate offset direction labels from DPad/Stick labels (#18695)
## Summary

The "Left" and "Right" strings in `pad_settings_dialog` were shared
between DPad/Stick direction labels (which have ample space) and offset
value labels — Squircle Values, Stick Multipliers, and Stick
Interpolation (where space is tight). Translators couldn't abbreviate
the offset version without also affecting the direction binding labels.

## Change

Added disambiguation via `comment="Offset direction"` in the `.ui`
file's `<string>` elements for the six offset labels:

- `label_squircle_left`
- `label_squircle_right`
- `label_stick_multi_left`
- `label_stick_multi_right`
- `left_stick_lerp_label`
- `right_stick_lerp_label`

Qt now generates separate translation entries, allowing translators to
use shorter abbreviations in the tight offset areas while keeping full
forms for direction bindings.

**English UI is unchanged** — no visual difference for English users.

Fixes #18691
2026-05-08 15:52:05 +02:00
Vishrut Sachan
f9ffce76f2 game_list: Fix icon display for multi-game collection ISOs 2026-05-08 14:32:43 +02:00
Florin9doi
e2e1cf02f4 USB: Stop sending USB replies after prx_unload 2026-05-08 13:05:08 +03:00
Antonino Di Guardo
026297334f
Some fixes (#18686)
### FIXES + MINOR IMPROVEMENTS:
- Fixed issue18685: Not a real issue. PR18648 added some logging that made
evident a missing check on the validity of the paths in `games.yml`
before trying to manage the path as a possible ISO file. That missing
check was already present but simply invisible due to missing log
- Fixed `bytes_to_hex()` function used to store file hash hex string: In
some cases the integrity check wrongly reported the check as failed
- Optimized `fs::get_optical_raw_device()` function: Moved under
`_WIN32` block a check valid only on `Windows` and simplified the logic
to detect a CDROM / BD as raw device
- Used `iso_file` objects instead of `fs:file` in `ISO.cpp`: It allows
to use proper `bool()` operator on some checks
2026-05-07 06:38:57 +03:00
kd-11
4f47fee360 gl: Dirty tracking of interpreter sampler handles 2026-05-06 02:10:14 +03:00
kd-11
9c143d3d45 gl: Use bindless textures for the shader interpreter 2026-05-06 02:10:14 +03:00
kd-11
58eb7d2c04 gl: Implement bindless texture support 2026-05-06 02:10:14 +03:00
kd-11
2bb533274c gl: Wait for shader compilation to complete server-side before attaching to a program 2026-05-06 02:10:14 +03:00
kd-11
3fc41b6d66 gl: Fix context race condition when preparing optimized interpreter variants
- The main thread may bind the program before the compiler context has published the binding instructions
- Once bound, late bindings are not updated so the program remains with uninitialized bindings and rendering breaks
2026-05-06 02:10:14 +03:00
kd-11
c350c02592 rsx: Fix build and silence warnings 2026-05-06 02:10:14 +03:00
kd-11
9dde2bf04e vk: Skip shader cache load if we're running interpreter only 2026-05-06 02:10:14 +03:00
kd-11
4e160320ef vk/interpreter: Precompile more variants to avoid ingame stutters
- Also temporarily logs a message to make stutters more obvious
2026-05-06 02:10:14 +03:00
kd-11
ca762d5b84 vk: Add extra renderpass API entry to allow generating keys with no images 2026-05-06 02:10:14 +03:00
kd-11
d93f5f9f84 vk: Implement variant recompilation for performance 2026-05-06 02:10:14 +03:00
kd-11
ac28c391f6 vk/interpreter: Implement base pipeline propagation 2026-05-06 02:10:14 +03:00
kd-11
d519571e18 vk: Implement async interpreter builds 2026-05-06 02:10:14 +03:00
kd-11
99e6b19025 gl: C++ things 2026-05-06 02:10:14 +03:00
kd-11
3d6773dd25 vk/pipe-compiler: Allow external definition of graphics properties during async compilation 2026-05-06 02:10:14 +03:00
kd-11
d36a4bd858 vk/interpreter: Separable shader cache for the interpreter 2026-05-06 02:10:14 +03:00
kd-11
26db44b3b3 gl/interpreter: Make use of r-w locking mechanisms 2026-05-06 02:10:14 +03:00
kd-11
a6c3ef350a vk: Interpreter bringup to restore previous functionality
- Get basics working again along with some prep-work for enhancements
2026-05-06 02:10:14 +03:00
kd-11
f3d0c3ba28 gl: Implement async optimized interpreter build 2026-05-06 02:10:14 +03:00
kd-11
97c7d069ac gl: Disable hard requirement for bindless texture to use the interpreter
- I never got around to porting the implementation to use bindless correctly
2026-05-06 02:10:14 +03:00
kd-11
af7ae45888 rsx/gl: Upgrade interpreter model to use a minimal set of reusable pipelines as a base
- We generate optimized variants in the background if we have a partial miss
- A full miss is impossible
2026-05-06 02:10:14 +03:00
kd-11
5c4b0a165b gl/interpreter: Separable shader objects
- We use a real cache for separate VS and FS objects
2026-05-06 02:10:14 +03:00
kd-11
af2af23306 gl/interpreter: Implement async variant generation 2026-05-06 02:10:14 +03:00
kd-11
59f54caf08 gl: Strengthen RAII guarantees for some more objects 2026-05-06 02:10:14 +03:00
kd-11
b3ac8127ea vk: Prebuild base interpreter variants 2026-05-06 02:10:14 +03:00
kd-11
90ea92d93b gl: Fix crash when closing shader loading dialog 2026-05-06 02:10:14 +03:00
kd-11
f694000454 rsx: Fix shader interpreter variants generation 2026-05-06 02:10:14 +03:00
kd-11
b2daaff29f rsx/gl: Implement shader interpreter variant precompilation 2026-05-06 02:10:14 +03:00
Vishrut Sachan
d93d9b2c5a
game_list: Fix ISO cache bypass in is_from_yml branch for multi-game ISOs (#18683)
Fixes regression from #18546 and #18679.

## Problem
The is_from_yml ISO branch constructed iso_archive unconditionally,
bypassing the cache check inside add_game, making the cache write-only
for yml-sourced ISOs.

## Fix
Added a lightweight index cache entry (iso_path + "//index") storing the
subdir list + mtime. On hit, skips archive construction entirely. On
miss, walks as before and writes the index
2026-05-05 11:14:16 +02:00
MarkosTh09
4f23f5505a fix minor issues with rpath logic 2026-05-05 09:47:20 +09:00
MarkosTh09
69bc124930 add /opt/homebrew to prefix path instead
Append to `CMAKE_PREFIX_PATH` and `CMAKE_SYSTEM_PREFIX` instead of using `include_directories()` and `link_directories()`.

This avoids include/link path
pollution and reduces clashes with vendored dependencies. This means that conflicting homebrew packages no longer have to be unlinked to build rpcs3, as system paths are searched last.
2026-05-05 09:47:20 +09:00
MarkosTh09
056a8ba1b1 macos: hack to fix homebrew rpath issues 2026-05-05 09:47:20 +09:00
Megamouse
350e7b09f5 Update SDL to 3.4.8 2026-05-04 18:18:32 +02:00