Commit Graph

33173 Commits

Author SHA1 Message Date
JosJuice
4c8995fae5 Jit: Move negx to ConstantPropagation 2025-11-16 09:50:31 +01:00
JosJuice
92a5a46b2c Jit: Move cntlzwx to ConstantPropagation 2025-11-16 09:50:31 +01:00
JosJuice
b506cb2ad8 Jit: Move extsXx to ConstantPropagation 2025-11-16 09:50:31 +01:00
JosJuice
f04417eb5a Jit: Move addx to ConstantPropagation 2025-11-16 09:50:31 +01:00
JosJuice
77b46c30ad Jit: Move boolX to ConstantPropagation 2025-11-16 09:50:31 +01:00
JosJuice
3a6eea74dd Jit: Move addix to ConstantPropagation 2025-11-16 09:50:31 +01:00
JosJuice
20332f441b Jit: Move reg_imm to ConstantPropagation 2025-11-16 09:50:31 +01:00
JosJuice
f9601dc38c Jit: Extract immediate handling to separate ConstantPropagation class
Restructuring things in this way brings two immediate benefits:

* Code is deduplicated between Jit64 and JitArm64.
* Materializing an immediate value in a register no longer results in us
  forgetting what the immediate value was.

As a more long-term benefit, this lets us also run constant propagation
as part of PPCAnalyst, which could let us do cool stuff in the future
like statically determining whether a conditional branch will be taken.
But I have nothing concrete planned for that right now.
2025-11-16 09:50:31 +01:00
JosJuice
e8060bd169 JitArm64: Add function for setting constant overflow 2025-11-16 09:50:30 +01:00
JosJuice
2dead5009b Jit64: Extract handling of immediate Rc 2025-11-16 09:50:30 +01:00
Jordan Woyak
9dea0859eb Common/BitField: Silence two warnings:
warning: definition of implicit copy constructor for 'BitField<2, 2, ColorChannel>' is deprecated because it has a user-declared copy assignment operator [-Wdeprecated-copy]
Redundant access specifier has the same accessibility as the previous access specifier.
2025-11-15 20:32:14 -06:00
Jordan Woyak
e630b0692e VideoCommon/FramebufferManager: Silence warning:
warning: virtual method '~FramebufferManager' is inside a 'final' class and can never be overridden [-Wunnecessary-virtual-specifier]
2025-11-15 20:32:10 -06:00
Jordan Woyak
a3b1445e04 HW/SI: Adjust logging verbosity in RunSIBuffer and minor cleanups. 2025-11-15 16:09:29 -06:00
Jordan Woyak
cd45dcea94 HW/SI: Fix CMD_STATUS response lengths. They are supposed to be 3, not 4. 2025-11-15 16:09:29 -06:00
JosJuice
999e13b3b3 Merge pull request #14109 from OatmealDome/analytics-deadlock
DolphinAnalytics: Only call ReloadConfig in config changed callback when analytics enabled value changes
2025-11-15 14:44:54 +01:00
JosJuice
f823a06814 Merge pull request #14105 from cscd98/achievement-bugfix
Fix cheats always enabled without USE_RETRO_ACHIEVEMENTS
2025-11-15 14:44:16 +01:00
cristian64
71e15c2875 DolphinQt: Add Fusion-based styles.
Fusion is one of the built-in styles that Qt ships with, and that is
generally supported in all platforms and handles custom color palettes
properly.

The color palettes have been borrowed from the Dolphin Memory Engine
buddy application.

The new styles are:

- **Fusion Light**
- **Fusion Dark Gray**
- **Fusion Dark**

A demo of each style on Windows:

| System | Light | Dark | Fusion Light | Fusion Dark Gray | Fusion Dark |
| ------ | ----- | ---- | ------------ | ---------------- | ----------- |
| <img width="1920" height="1080" alt="Dolphin Emulator  System style" src="https://github.com/user-attachments/assets/7f55a19d-d9a1-43d1-a435-1e1d5b29abe2" /> | <img width="1920" height="1080" alt="Dolphin Emulator  Light style" src="https://github.com/user-attachments/assets/4c70f2f9-16b8-4777-b72b-55b2dffcd1e4" /> | <img width="1920" height="1080" alt="Dolphin Emulator  Dark style" src="https://github.com/user-attachments/assets/5e669477-d2a5-4d19-b2c5-a2ed9bb1e6fe" /> | <img width="1920" height="1080" alt="Dolphin Emulator  Light Fusion style" src="https://github.com/user-attachments/assets/b1f95c47-0691-4809-bd74-99e913c17684" /> | <img width="1920" height="1080" alt="Dolphin Emulator  Dark Gray Fusion style" src="https://github.com/user-attachments/assets/c9d30aa3-f941-4fc5-806f-d3fbd2cae0cc" /> | <img width="1920" height="1080" alt="Dolphin Emulator  Dark Fusion style" src="https://github.com/user-attachments/assets/123d2125-e126-4e8c-aa42-793ded8ffacc" /> |

> [!NOTE]
> Notice that the **Light** and **Dark** styles remain available only on
> Windows due to limitations on how styles in the various platforms
> handle (or mishandle) custom color palettes.

> [!IMPORTANT]
> Due to [`KDE-511547`](https://bugs.kde.org/show_bug.cgi?id=511547),
> after having used Breeze (default style in Plasma systems), top tool
> bars in tools areas will lose their correct background color; a
> restart will be required in order to get the updated color in the main
> window.
>
> UPDATE: The issue has been fixed upstream and should be available in
> KDE Plama 6.5.3 and newer.
2025-11-14 19:21:58 +00:00
cristian64
ff9b8c4b9c DolphinQt: Define tool tip padding as factor of font size. 2025-11-14 19:12:02 +00:00
Jordan Woyak
6d5e8b9ed8 Externals: Update mGBA to latest master.
Co-authored-by: Joshua Vandaële <joshua@vandaele.software>
2025-11-13 17:03:31 -06:00
Jordan Woyak
be95035cc4 Core: Eliminate FreeLookConfig by putting the "active config" within FreeLookCamera. 2025-11-12 18:01:53 -06:00
Jordan Woyak
c08fda96ca Merge pull request #14100 from AndrewGDX/master
Improved stereoscopic 3D settings
2025-11-12 16:43:21 -06:00
AndrewGDX
113c86f1b4 Improved stereoscopic 3D settings 2025-11-12 12:29:03 +03:00
Craig Carnell
f1fb550bf1 Fix cheats always enabled without USE_RETRO_ACHIEVEMENTS 2025-11-12 08:33:49 +00:00
OatmealDome
df5f351add DolphinAnalytics: Only call ReloadConfig in config changed callback when analytics enabled value changes
Co-authored-by: Simonx22 <simon@oatmealdome.me>
2025-11-12 00:09:41 -05:00
Jordan Woyak
bf61c890ca VideoCommon/PerformanceMetrics: Display current offset between the latest frame presentation time and the intended presentation time in the "Show Frame Times" box. 2025-11-11 20:01:52 -06:00
Jordan Woyak
c2a1dce246 VideoCommon: Add "Smooth Early Presentation" setting to improve frame pacing with ImmediateXFB and/or RushFramePresentation. 2025-11-11 20:01:52 -06:00
Jordan Woyak
cc331feb02 VideoCommon: Make Presenter aware of the next swap time to eliminate unsafe usage of GetTicks() with ImmediateXFB + DualCore. 2025-11-11 20:01:52 -06:00
Jordan Woyak
d4f68cb164 HW/VideoInterface: Selectively throttle on "VBlank" based on "Immediate XFB" being enabled. 2025-11-11 20:01:52 -06:00
Jordan Woyak
16260040e0 CoreTiming: Add "Rush Frame Presentation" setting to throttle only once after each presentation for lower input latency. 2025-11-11 20:01:52 -06:00
JMC47
8495e01668 Merge pull request #14096 from jordan-woyak/state-changed-hookable-event
Core: Make AddOnStateChangedCallback use HookableEvent.
2025-11-11 20:58:45 -05:00
JMC47
f63796c480 Merge pull request #14071 from iwubcode/avoid_config_framebuffer_manager
VideoCommon: pass the EFB buffer scale into the FramebufferManager
2025-11-11 20:58:35 -05:00
JMC47
b8236d4662 Merge pull request #14070 from VampireFlower/master
Debugger: Ignore bctr when stepping out
2025-11-11 20:57:45 -05:00
JMC47
c44ea1389a Merge pull request #13236 from JosJuice/jit-set-msr-on-fallback
Call JitInterface::UpdateMembase from PowerPC::MSRUpdated
2025-11-11 20:55:24 -05:00
Jordan Woyak
f51eaf3282 Merge pull request #14052 from jordan-woyak/DirectIOFile
Common and DiscIO: Introduce a thread safe DirectIOFile and make BlobReader implementations use it.
2025-11-10 17:29:43 -06:00
JosJuice
068947e2b6 Core: Remove IsHostThread
The core no longer cares which thread is the host thread.

Cleaning up Android's HostThreadLock is left for another PR, in part
because the HostThreadLock in NativeConfig.cpp still serves a purpose,
and in part to make any issues easier to bisect.
2025-11-10 21:14:56 +01:00
JosJuice
1bba42de45 RetroAchievements: Remove MemoryPeeker/MemoryPoker's copying approach
This makes the code simpler, and saves us from the slow operation of
copying the all of RAM on every frame when RAIntegration is enabled.
2025-11-10 21:14:20 +01:00
JosJuice
458bb05af9 Core: Let any thread call previously host-thread-only functions
By letting threads other than the host thread use things like
CPUThreadGuard, we can do a significant cleanup in AchievementsManager
in a later commit of this pull request.

Note: Some functions still can't be called from the CPU thread (or
threads the CPU thread might block on, like the GPU thread), but can
be called from any other thread.
2025-11-10 21:14:17 +01:00
JosJuice
cd4902f0ed Merge pull request #13875 from JosJuice/jitarm64-orr-base-without-mirror
JitArm64: Add missing ORR pattern in MOVI2RImpl
2025-11-10 20:16:21 +01:00
TellowKrinkle
1804608d2f CMake: Switch from SKIP_POSTPROCESS_BUNDLE to POSTPROCESS_BUNDLE 2025-11-09 22:35:16 -06:00
Jordan Woyak
a97627e736 Core: Make AddOnStateChangedCallback use HookableEvent. 2025-11-09 16:43:19 -06:00
Jordan Woyak
165852023c MemTools: Clean up SIGSEGV handler. 2025-11-09 16:05:18 -06:00
Admiral H. Curtiss
31ca3bca47 Merge pull request #13956 from jordan-woyak/SA_RESTART
Main: Add SA_RESTART to sigaction sa_flags.
2025-11-09 15:30:27 +01:00
Admiral H. Curtiss
02b4b1ece3 Merge pull request #14010 from jordan-woyak/wmreal-iolinux-reopen-on-unplug
WiimoteReal/IOLinux: Reopen Bluetooth device if it was unplugged between scans.
2025-11-09 15:03:12 +01:00
Admiral H. Curtiss
c97d2af814 Merge pull request #14022 from TryTwo/fix_balloontip_width
Settings BalloonTip: Have wordwrap use max width.
2025-11-09 15:00:19 +01:00
Admiral H. Curtiss
ab2ceb10ae Merge pull request #14073 from jordan-woyak/convert-dialog-min-size
DolphinQt: Make disc ConvertDialog have a better minimum size and use QFormLayout.
2025-11-09 14:57:46 +01:00
Admiral H. Curtiss
6435ee1d20 Merge pull request #14026 from jordan-woyak/move-only-function-fix
Common/Functional: Fix MoveOnlyFunction from inadvertently creating references from lvalues.
2025-11-09 14:49:20 +01:00
Admiral H. Curtiss
29e2b0ff01 Merge pull request #14068 from iTrooz/open_folder
feat(profiles): add "open profiles folder" button + add dropdown button for profile actions
2025-11-09 14:29:18 +01:00
Admiral H. Curtiss
e197163e9e Merge pull request #14094 from OatmealDome/mac-nav-list
SettingsWindow: Set navigation list stylesheet in constructor
2025-11-09 14:10:39 +01:00
Jordan Woyak
9e2fc7f4dd Common/IOFile: Remove the Duplicate function. The duplicate handles shared a read/write position making them effectively not thread-safe. 2025-11-09 03:08:14 -06:00
Jordan Woyak
239330017c DiscIO: Make all BlobReader implementations use DirectIOFile to make CopyReader functionality thread safe. 2025-11-09 03:08:14 -06:00