summaryrefslogtreecommitdiff
path: root/Source/Core/Common
AgeCommit message (Collapse)Author
2025-10-09Merge pull request #13964 from ryanmcgrath/macos/qosJMC47
macoS: update QoSSession with SO_NET_SERVICE_TYPE.
2025-10-08MMU: Use templates for Read/Write functionsMartino Fontana
2025-10-08Jit64: Dynamic length of regular jump instruction (for known addresses)Martino Fontana
Conditional jumps already do that, so let's be consistent.
2025-10-06Merge pull request #13995 from ↵JosJuice
Dentomologist/deletedirrecursively_dont_report_error_if_directory_is_absent DeleteDirRecursively: Don't report error for absent directory
2025-10-05DeleteDirRecursively: Don't report error for absent directoryDentomologist
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-04Common/Network: Add BluetoothAddress struct and string conversion functions.Jordan Woyak
2025-10-04Common: Add some utilities to a new UnixUtil header.Jordan Woyak
2025-10-04CommonFuncs: Add StrerrorString version of LastStrerrorString that accepts ↵Jordan Woyak
an error number.
2025-10-01dcbz: Fix AVX pathMartino Fontana
2025-09-30Merge pull request #13929 from SuperSamus/dcbz-jit-improvementsJosJuice
Jit: Small `dcbz` improvements
2025-09-29Externals: Update libiconv to 1.18Joshua Vandaële
I also excluded libiconv from the Windows CMake builds since it's never used there
2025-09-26Merge pull request #13968 from dwilliams27/remove-logs-mailJMC47
Logging: Remove unused Logs/Mail/ dir
2025-09-26Merge pull request #13945 from iwubcode/math_transpose_functionJMC47
Common: add transpose function to Matrix class
2025-09-26Merge pull request #13634 from jordan-woyak/enum-conceptsJMC47
Common: Replace enable_if with concepts and other minor modernizations.
2025-09-24chore: remove unused Logs/Mail/ dirFarmerbilly27
2025-09-22macoS: update QoSSession with SO_NET_SERVICE_TYPE.Ryan McGrath
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-19Logging: Don't overwrite LDEBUG verbosity in Release buildsDentomologist
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-17Common: add transpose function to Matrix classiwubcode
2025-09-17Merge pull request #13874 from sepalani/bitcast-ptrJMC47
Common/BitUtils: Add operator[] to BitCastPtrType
2025-09-16Merge pull request #13935 from iwubcode/matrix_invertedJMC47
Core: support inverting a 4x4 matrix
2025-09-16Merge pull request #13905 from JosJuice/arm64emitter-shift-4JosJuice
Arm64Emitter: Replace shifting size by 4 with IntLog2 minus 3
2025-09-07Core: support inverting a 4x4 matrixiwubcode
2025-09-02Jit64: `dcbz`, use VMOVAPS with YMM registers on AVX CPUsMartino Fontana
LLVM does this, so let's do it as well.
2025-09-02x64Emitter: Support YMM registersMartino Fontana
This is accomplished by adding a 0x100 bit the the register. Made sure that, on AVX instructions, that bit is trucated.
2025-08-30Merge pull request #13912 from jordan-woyak/simplify-saturating-castTilka
MathUtil: Simplify SaturatingCast implementation and fix edge case.
2025-08-28Merge pull request #13825 from jordan-woyak/dont-count-playtime-while-suspendedJMC47
Common/Timer: Add a SteadyAwakeClock class to make play time tracking ignore time while suspended.
2025-08-27MathUtil: Simplify SaturatingCast implementation with ↵Jordan Woyak
std::cmp_less/cmp_greater and fix a floating point edge case. Thanks to Dentomologist for catching the edge case.
2025-08-24Arm64Emitter: Replace shifting size by 4 with IntLog2 minus 3JosJuice
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-21JitArm64: Add early exit in MOVI2RImpl ORR loopJosJuice
Just for performance.
2025-08-21JitArm64: Add missing ORR pattern in MOVI2RImplJosJuice
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-18Common/BitUtils: Add operator[] to BitCastPtrTypeSepalani
2025-08-17FloatUtils: Replace quieting SNaNs via `0.0 + x` with MakeQuietOatmealDome
2025-08-17FloatUtils: Move MakeQuiet function here from Interpreter_FPUtilsOatmealDome
2025-08-10Merge pull request #13846 from JoshuaVandaele/better-xcbTilka
Qt: Better wayland detection to enforce xcb
2025-08-04Merge pull request #13791 from jordan-woyak/realtek-firmware-loaderJMC47
BTReal: Implement Realtek firmware loading.
2025-08-04Qt: Better wayland detection to enforce xcbJoshua Vandaële
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-01Merge pull request #13794 from Sintendo/doouble-lookupAdmiral H. Curtiss
Avoid map/set double lookups
2025-07-27PPCSymbolDB: Don't return non-const pointersJosJuice
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-27PPCSymbolDB: Add missing lockingJosJuice
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-27PPCSymbolDB: Reduce lock contention in LoadMap/LoadMapOnBootJosJuice
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-24Common/Timer: Add a SteadyAwakeClock class which counts non-suspended system ↵Jordan Woyak
running time.
2025-07-23BTReal: Implement Realtek Bluetooth firmware loading.Jordan Woyak
Logic and structures are largely taken from Linux source: drivers/bluetooth/btusb.c drivers/bluetooth/btrtl.c drivers/bluetooth/btrtl.h
2025-07-23Common: Move AsU8Span utility function from BTReal to Common/BitUtils.Jordan Woyak
2025-07-19Common: Move GetDeviceProperty() into its own headerAdmiral H. Curtiss
Otherwise we include Windows headers in the entire codebase through CommonFuncs.h
2025-07-16Merge pull request #13792 from Tilka/wii_bannersJMC47
WiiSaveBanner: fall back to $userdir/Load/WiiBanners
2025-07-14IOFile: Require trivially copyable typesDentomologist
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-12Fix various warningsJoshua Vandaële
2025-07-08Avoid map/set double lookupsSintendo
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-07Merge pull request #13726 from hoogmin/cpp23_ranges_patchJordan Woyak
Common: Replace Contains and ContainsSubrange with C++23 std::ranges equivalents
2025-07-04WiiSaveBanner: fall back to $userdir/Load/WiiBannersTillmann Karras
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.