Commit Graph

4271 Commits

Author SHA1 Message Date
Jordan Woyak
da6c65bf3b Common: Remove the string parameters from the HookableEvent interface. 2025-11-06 22:34:40 -06:00
Jordan Woyak
28be9dc64f WindowsDevice: Remove GetDeviceProperty function in favor of the CfgMgr32 versions. SetupAPI seems to be no longer recommended. 2025-11-05 04:05:36 -06:00
Jordan Woyak
5e65536376 WindowsDevice: Add GetDeviceInterfaceList function and NullTerminatedStringList template. 2025-11-04 22:51:26 -06:00
Jordan Woyak
2170080f53
Merge pull request #14061 from jordan-woyak/config-info-spin-mutex
ConfigInfo: Cleanups and change mutex to a spin lock.
2025-11-04 14:09:35 -06:00
Jordan Woyak
999333c0a1 Config: Make ConfigInfo use Common::SpinLock to protect the CachedValue. These locks are nearly always uncontested and this makes Config::Get faster. 2025-11-02 20:45:55 -06:00
Jordan Woyak
46369ef1b1 Common: Add AtomicMutex and SpinMutex classes as faster alternatives to std::mutex. 2025-11-02 20:45:55 -06:00
Jordan Woyak
fc9f25a418 Config/ConfigInfo: Cleanups. 2025-11-02 20:30:35 -06:00
Jordan Woyak
f289b06e0d Common: Make HookableEvent use non-static data.
Co-authored-by: Dentomologist <dentomologist@gmail.com>
2025-11-02 17:30:43 -06:00
Jordan Woyak
5650b2ef37 StringUtil: Replace strerror with Common::LastStrerrorString. 2025-11-02 00:36:04 -05:00
Jordan Woyak
da7c813edf StringUtil: Make non-Windows WStringToUTF8 implementation use iconv instead of deprecated std::codecvt features. 2025-11-02 00:36:04 -05:00
Jordan Woyak
b073b5303b StringUtil: Fix many clang-tidy warnings. 2025-11-02 00:36:04 -05:00
JosJuice
828e72d604
Merge pull request #14034 from JoshuaVandaele/byeprofile
JitRegister: Remove OProfile profiler
2025-11-01 10:05:11 +01:00
Joshua Vandaële
2383e68fd8
x64Emitter: Fix missing-declarations warning 2025-10-30 12:35:22 +01:00
Joshua Vandaële
33fd06d7f3
AdvancedPane: Add a button to restore default settings 2025-10-27 15:59:33 +01:00
Joshua Vandaële
713dfb41df
JitRegister: Remove OProfile profiler
OProfile is not used at all these days, most major distributions do not ship it anymore (Debian, Fedora, and Alpine to name the few I've checked) and following a discussion on Discord, nobody is apparently using it, most devs not even being aware of it. This removes an optional dependency from Dolphin.
2025-10-26 20:48:15 +01:00
Jordan Woyak
ba5edce2af Common/Functional: Fix MoveOnlyFunction from inadvertently creating references from lvalues. 2025-10-22 05:06:41 -05:00
JMC47
2e490cefa0
Merge pull request #13978 from JoshuaVandaele/libiconv-1.18
Externals: Update libiconv to 1.18
2025-10-17 18:45:48 -04:00
Dentomologist
4e359cf1c5 WindowsDevice: Silence missing property log spam
Don't log a warning in GetPropertyHelper when the property isn't
present. The function returns an optional, so any callers that want to
log a warning when nullopt is returned can do so themselves.

This prevents plugged-in devices (an Xbox One controller in my case)
from spamming the message "W[COMMON]: CM_Get_DevNode_Property returned:
37" twice per second (that value being CR_NO_SUCH_VALUE).
2025-10-13 11:55:12 -07:00
Jordan Woyak
3978e1eb2c WindowsDevice: Add some utility functions for getting device properties using CfgMgr32. 2025-10-12 12:33:13 -05:00
JMC47
d8bcd6d82e
Merge pull request #13996 from SuperSamus/jit64-dynamic-known-jmp-len
Jit64: Dynamic length of regular jump instruction (for known addresses)
2025-10-09 14:07:13 -04:00
JMC47
4f7a910e92
Merge pull request #13964 from ryanmcgrath/macos/qos
macoS: update QoSSession with SO_NET_SERVICE_TYPE.
2025-10-09 14:05:42 -04:00
Martino Fontana
8a97ce9124 MMU: Use templates for Read/Write functions 2025-10-08 11:27:06 +02:00
Martino Fontana
f6e5448b43 Jit64: Dynamic length of regular jump instruction (for known addresses)
Conditional jumps already do that, so let's be consistent.
2025-10-08 00:15:57 +02:00
JosJuice
03ef9b4995
Merge pull request #13995 from Dentomologist/deletedirrecursively_dont_report_error_if_directory_is_absent
DeleteDirRecursively: Don't report error for absent directory
2025-10-06 20:04:32 +02:00
Dentomologist
f64e57442c DeleteDirRecursively: Don't report error for absent directory
Check if the return value of std::filesystem::remove_all is -1 rather
than 0; the former is the specified return value if there's an error
while 0 just means the directory already didn't exist (which is the end
result we want).

Previously error messages such as the following were possible:
E[COMMON]: DeleteDirRecursively: [path]/User/RedirectSession/ failed The
operation completed successfully.

Also adds a period in the error string to make it look nicer.
2025-10-05 16:29:41 -07:00
Jordan Woyak
b2fef6ee1f Common/Network: Add BluetoothAddress struct and string conversion functions. 2025-10-04 14:51:17 -05:00
Jordan Woyak
b1e8de82a6 Common: Add some utilities to a new UnixUtil header. 2025-10-04 14:51:17 -05:00
Jordan Woyak
504ea99cfa CommonFuncs: Add StrerrorString version of LastStrerrorString that accepts an error number. 2025-10-04 14:51:17 -05:00
Martino Fontana
4f737b7aaf dcbz: Fix AVX path 2025-10-01 21:09:18 +02:00
JosJuice
0c89c00d8b
Merge pull request #13929 from SuperSamus/dcbz-jit-improvements
Jit: Small `dcbz` improvements
2025-09-30 18:52:09 +02:00
Joshua Vandaële
a8b40a218c
Externals: Update libiconv to 1.18
I also excluded libiconv from the Windows CMake builds since it's never used there
2025-09-29 21:52:58 +02:00
JMC47
593d386496
Merge pull request #13968 from dwilliams27/remove-logs-mail
Logging: Remove unused Logs/Mail/ dir
2025-09-26 17:16:54 -04:00
JMC47
ff9e0eb2c3
Merge pull request #13945 from iwubcode/math_transpose_function
Common: add transpose function to Matrix class
2025-09-26 17:14:09 -04:00
JMC47
a8fe5c0303
Merge pull request #13634 from jordan-woyak/enum-concepts
Common: Replace enable_if with concepts and other minor modernizations.
2025-09-26 16:13:20 -04:00
Farmerbilly27
8cbfee2136 chore: remove unused Logs/Mail/ dir 2025-09-24 17:42:59 -05:00
Ryan McGrath
5a6730ab4e
macoS: update QoSSession with SO_NET_SERVICE_TYPE.
macOS does not support `SO_PRIORITY` on sockets, but it does apparently
support configuring sockets with a priority flag via a parameter called
`SO_NET_SERVICE_TYPE`. It doesn't appear to be especially well
documented, but it seems to exist as far back as 10.11 (El Capitan).

This patch sets QoSSession to treat connections as
"responsive multimedia audio/video", which some docs appear to describe
as "low delay tolerant, low-medium, loss tolerant, elastic flow,
variable packet interval, rate and size".
2025-09-22 17:30:18 -04:00
Dentomologist
2d48043b61 Logging: Don't overwrite LDEBUG verbosity in Release builds
Preserve the configured logging verbosity unless the user actually
changes it, rather than capping it to LINFO on release builds.

Rename LogManager::m_level to m_effective_level and distinguish between
the config and effective level in various function/variable names.

Make m_effective_level atomic to prevent data races when setting the
effective log level from the config changed callback.
2025-09-19 13:25:42 -07:00
iwubcode
9a37c8081d Common: add transpose function to Matrix class 2025-09-17 11:14:09 -05:00
JMC47
fce5f7c74e
Merge pull request #13874 from sepalani/bitcast-ptr
Common/BitUtils: Add operator[] to BitCastPtrType
2025-09-17 04:42:22 -04:00
JMC47
1e3952c801
Merge pull request #13935 from iwubcode/matrix_inverted
Core: support inverting a 4x4 matrix
2025-09-16 14:51:42 -04:00
JosJuice
36f49d140f
Merge pull request #13905 from JosJuice/arm64emitter-shift-4
Arm64Emitter: Replace shifting size by 4 with IntLog2 minus 3
2025-09-16 20:08:59 +02:00
iwubcode
d403bc3985 Core: support inverting a 4x4 matrix 2025-09-07 11:41:09 -05:00
Martino Fontana
d1ba849876 Jit64: dcbz, use VMOVAPS with YMM registers on AVX CPUs
LLVM does this, so let's do it as well.
2025-09-02 23:15:27 +02:00
Martino Fontana
5e69da7eba x64Emitter: Support YMM registers
This is accomplished by adding a 0x100 bit the the register.
Made sure that, on AVX instructions, that bit is trucated.
2025-09-02 22:15:16 +02:00
Tilka
b47a75fa2d
Merge pull request #13912 from jordan-woyak/simplify-saturating-cast
MathUtil: Simplify SaturatingCast implementation and fix edge case.
2025-08-30 03:00:15 +01:00
JMC47
e0c72cd963
Merge pull request #13825 from jordan-woyak/dont-count-playtime-while-suspended
Common/Timer: Add a SteadyAwakeClock class to make play time tracking ignore time while suspended.
2025-08-28 13:58:26 -04:00
Jordan Woyak
da546bebb8 MathUtil: Simplify SaturatingCast implementation with std::cmp_less/cmp_greater and fix a floating point edge case.
Thanks to Dentomologist for catching the edge case.
2025-08-27 21:24:46 -05:00
JosJuice
9716148203 Arm64Emitter: Replace shifting size by 4 with IntLog2 minus 3
The instruction implementations that were shifting the size by 4 would
emit an incorrect instruction when given a size of 64. The correct
implementation is to count the number of leading or trailing zeroes in
the size parameter, which is what IntLog2 does.

No callers are affected by this, as they all use sizes other than 64.
Actually, some of these instructions are even invalid with a size of 64,
but I'm changing them anyway for consistency with the others.
2025-08-24 10:48:21 +02:00
JosJuice
c553344282 JitArm64: Add early exit in MOVI2RImpl ORR loop
Just for performance.
2025-08-21 20:56:06 +02:00
JosJuice
596b290177 JitArm64: Add missing ORR pattern in MOVI2RImpl
We should attempt to use not only mirrored versions of the immediate as
an ORR base, but also the immediate itself. This lets us emit certain
64-bit constants using fewer instructions.
2025-08-21 20:56:06 +02:00
Sepalani
e9f58193a7 Common/BitUtils: Add operator[] to BitCastPtrType 2025-08-18 13:06:12 +04:00
OatmealDome
221d396b3a
FloatUtils: Replace quieting SNaNs via 0.0 + x with MakeQuiet 2025-08-17 11:24:38 -04:00
OatmealDome
cfb78dc816
FloatUtils: Move MakeQuiet function here from Interpreter_FPUtils 2025-08-17 11:23:12 -04:00
Tilka
a07974e2c3
Merge pull request #13846 from JoshuaVandaele/better-xcb
Qt: Better wayland detection to enforce xcb
2025-08-10 05:09:25 +01:00
JMC47
c6d55d1b50
Merge pull request #13791 from jordan-woyak/realtek-firmware-loader
BTReal: Implement Realtek firmware loading.
2025-08-04 19:42:59 -04:00
Joshua Vandaële
f8b85edd0c
Qt: Better wayland detection to enforce xcb
In certain cases, the platform can be "wayland-egl", "wayland-xcomposite", and other values for which I haven't found a full list yet. Instead of matching only "wayland", we now look for "wayland" anywhere in the `QT_QPA_PLATFORM` string in a case-insensitive manner.

Acknowledgements:
`CaseInsensitiveContains`' implementation was heavily inspired by GNU's non-standard glibc `strcasestr` function, which can be found here licensed under GPLv2 or later: https://ftp.gnu.org/gnu/libc/
2025-08-04 19:34:31 +02:00
Admiral H. Curtiss
06e05e0f90
Merge pull request #13794 from Sintendo/doouble-lookup
Avoid map/set double lookups
2025-08-01 21:43:12 +02:00
JosJuice
9f32562e36 PPCSymbolDB: Don't return non-const pointers
For thread safety, we shouldn't return any pointers or references that
can be used to mutate the state of the PPCSymbolDB. This should be the
final part of making PPCSymbolDB thread safe unless I've missed
something.
2025-07-27 17:03:57 +02:00
JosJuice
fef77a5f20 PPCSymbolDB: Add missing locking
9395238 added locking in some PPCSymbolDB functions that access member
variables, but far from all. To ensure thread safety, this commit adds
the missing locking.
2025-07-27 16:26:47 +02:00
JosJuice
803e6b017b PPCSymbolDB: Reduce lock contention in LoadMap/LoadMapOnBoot
By building the map in a local variable and then swapping it with the
member variable, we avoid the need to hold a lock while building the
map.
2025-07-27 16:26:47 +02:00
Jordan Woyak
62c773ac75 Common/Timer: Add a SteadyAwakeClock class which counts non-suspended system running time. 2025-07-24 23:56:10 -05:00
Jordan Woyak
bfef65a9d1 BTReal: Implement Realtek Bluetooth firmware loading.
Logic and structures are largely taken from Linux source:
drivers/bluetooth/btusb.c
drivers/bluetooth/btrtl.c
drivers/bluetooth/btrtl.h
2025-07-23 19:58:25 -05:00
Jordan Woyak
2b541361c6 Common: Move AsU8Span utility function from BTReal to Common/BitUtils. 2025-07-23 19:58:25 -05:00
Admiral H. Curtiss
68713e08b4
Common: Move GetDeviceProperty() into its own header
Otherwise we include Windows headers in the entire codebase through CommonFuncs.h
2025-07-19 21:24:51 +02:00
JMC47
295ae819f5
Merge pull request #13792 from Tilka/wii_banners
WiiSaveBanner: fall back to $userdir/Load/WiiBanners
2025-07-16 20:29:46 -04:00
Dentomologist
8a28b95480 IOFile: Require trivially copyable types
Require ReadArray and WriteArray to be called with a trivially copyable
type.

ReadArray and WriteArray call std::fread and std::fwrite respectively.
These functions trigger undefined behavior when the objects are not
trivially copyable, so this adds that requirement to the callers.
2025-07-14 11:55:24 -07:00
Joshua Vandaële
06882bd2dc
Fix various warnings 2025-07-12 12:47:30 +02:00
Sintendo
f2392e4048 Avoid map/set double lookups
Fix some common anti-patterns with these data structures.

- You can dereference the iterator returned by `find` to access the
  underlying value directly, without an extra `operator[]`/`at`.
- Rather than checking for an element before insertion/deletion, you can
  just do the operation and if needed check the return value to
  determine if the insertion/deletion succeeded.
2025-07-08 06:53:42 +02:00
Jordan Woyak
d55012f8d0
Merge pull request #13726 from hoogmin/cpp23_ranges_patch
Common: Replace Contains and ContainsSubrange with C++23 std::ranges equivalents
2025-07-07 21:05:28 -05:00
Tillmann Karras
fe6fd2279c WiiSaveBanner: fall back to $userdir/Load/WiiBanners
Unlike custom banners which work as an override, this mechanism works as
a fallback. The use case is if you have games you don't really play but
want to keep around for testing purposes without filling up your NAND
with lots of saves. For ease of use, the directory structure is the same
but only title/$title_hi/$title_lo/data/banner.bin files are
relevant.
2025-07-04 23:15:50 +01:00
TryTwo
fe121e4c6e PPCSymbolDB: Move loading map on boot logic from boot.cpp into PPCSymbolDB, as it will be needing a mutex.
Cleanup loading code and reduce amount of signals.

On boot. allow previously loaded map to be kept, if its filename matches. Useful for restarting a game with a large symbol map.
2025-06-25 12:01:16 -07:00
JMC47
19f3b7e61f
Merge pull request #13691 from TryTwo/PR_Notes
Debugger Add note-type symbols .
2025-06-22 01:05:42 -04:00
TryTwo
040d9a4336 Debugger symbols: Add new symbol type: Notes.. Notes are for naming single instructions, or small groups of instructions.
Notes are separate from function symbols, and can be searched separately.
Unlike functions, notes of different length can overlap each other.
In the instruction window, a note will always display over the function symbol.
2025-06-19 17:55:35 -07:00
Jordan Woyak
3a94289ad6
Merge pull request #13744 from JoshuaVandaele/windows-specific-getdevicename
Host: Implement a Windows-only implementation of `GetDeviceNameFromVIDPID`
2025-06-15 15:44:31 -05:00
Dr. Dystopia
ca8f9b672b Source: Remove redundant lambda parameter lists 2025-06-14 10:19:31 +02:00
Joshua Vandaële
d93245cc7a
Host: Implement a Windows-only implementation of GetDeviceNameFromVIDPID 2025-06-13 17:46:53 +02:00
Tilka
19fbbf0dba
Merge pull request #13727 from JoshuaVandaele/fmt-11.2.0-localtime-deprec
fmt: Replace deprecated `fmt::localtime` usage with `Common::LocalTime`
2025-06-08 04:04:37 +01:00
Jordan Woyak
65f3ba70f5
Merge pull request #13522 from tygyh/Enforce-overriding-destructor-style-Core&UnitTests
Core & UnitTests: Make overriding explicit and remove redundant virtual specifiers on overriding destructors
2025-06-07 17:55:14 -05:00
iwubcode
7d59c2743d Common: Add class 'FilesystemWatcher' that is used to watch paths and receive callbacks about filesystem level events for anything under that path 2025-06-06 23:03:02 -05:00
Javier Martinez
d766c527c7 Common: Replace Contains and ContainsSubrange with C++23 std::ranges equivalents
Common: Use feature macros for better compatibility

Common/Contains.h: fix linting issue

Common/Contains.h: Add C++23 TODO

Common/Contains.h: Fix comment lint issue.
2025-06-05 19:18:08 -04:00
JMC47
8def02072b
Merge pull request #13379 from JoshuaVandaele/system-ng
Use minizip-ng in non-compatibility mode
2025-06-04 15:21:05 -04:00
Joshua Vandaële
4b65cc9a4c
fmt: Replace deprecated fmt::localtime usage with Common::LocalTime 2025-06-04 13:32:12 +02:00
Jordan Woyak
31d0756808 Config: Make s_callbacks_lock recursive to fix hardcore mode deadlock. 2025-05-30 17:33:01 -05:00
JosJuice
18a78a9bab
Merge pull request #13647 from jordan-woyak/sha1-avoid-memcpy
Crypto/SHA1: Re-add memcpy avoiding optimization to BlockContext::Update.
2025-05-25 12:40:43 +02:00
Joshua Vandaële
2ed5f16600
minizip-ng: Stop using compatibility mode 2025-05-22 12:51:55 +02:00
Jordan Woyak
9ba71448cc WorkQueueThread: Fix Cancel() race with internal command queue. 2025-05-20 21:51:25 -05:00
Jordan Woyak
bb77d61967 Crypto/SHA1: Re-add memcpy avoiding optimization to BlockContext::Update. 2025-05-09 20:59:17 -05:00
JMC47
463bd86145
Merge pull request #13641 from jordan-woyak/sha1-fix
Crypto/SHA1: Fix past-the-last-element std::array access and modernize code.
2025-05-09 18:56:20 -04:00
JMC47
7113bafd94
Merge pull request #13586 from Tilka/spr_disasm
GekkoDisassembler: standardize SPR names and add missing ones
2025-05-09 18:55:53 -04:00
Jordan Woyak
a9ab0e979e Crypto/SHA1: Fix past-the-last-element std::array access and modernize code. 2025-05-08 03:03:59 -05:00
Jordan Woyak
845fecff22 Common/BitField: Make deleted functions public. 2025-05-05 19:34:35 -05:00
Jordan Woyak
2dc975fa92 Common: Replace enable_if with concepts and other minor modernizations. 2025-05-05 19:34:24 -05:00
Admiral H. Curtiss
d2db9d9590
Merge pull request #13608 from jordan-woyak/async-work-thread
Common: Add AsyncWorkThread.
2025-05-04 18:45:14 +02:00
Admiral H. Curtiss
2a3580fda5
Merge pull request #13482 from jordan-woyak/string-util-concepts
StringUtil: Use concepts instead of enable_if.
2025-05-04 17:47:37 +02:00
Admiral H. Curtiss
380a9291ad
Merge pull request #13602 from jordan-woyak/move-only-function
Common: Add MoveOnlyFunction.
2025-05-04 17:28:06 +02:00
Jordan Woyak
5a80105555 Common and VideoCommon: Change texture data from std::vector to Common::UniqueBuffer. 2025-05-03 18:32:30 -05:00
JosJuice
c8be819711 LogManager: Stop using manual memory management
This fixes a memory leak that would occur when the Android frontend
calls LogManager::Init more than once in order to reload settings.

Note that the log window listener is now owned by LogManager instead of
by the frontend, making it consistent with the other log listeners.
2025-05-02 21:14:32 +02:00
JosJuice
b566e81644
Merge pull request #13596 from JosJuice/config-callback-locking
Config: Add locking for config changed callbacks
2025-05-02 08:49:22 +02:00
Jordan Woyak
be4b0af971 Common: Add AsyncWorkThread. 2025-05-01 22:54:40 -05:00
Jordan Woyak
20874124c2 StringUtil: Use concepts instead of enable_if. 2025-05-01 16:30:37 -05:00