summaryrefslogtreecommitdiff
path: root/Source/Core
AgeCommit message (Collapse)Author
2026-02-04Core: Don't call InitMMIO from MemoryManager::InitJosJuice
In the unit test I'm adding in the next commit, I want to call MemoryManager::Init, but initializing all the hardware that MemoryManager::InitMMIO calls into would be cumbersome. Calling MemoryManager::InitMMIO from MemoryManager::Init was a bit strange anyway. Because MemoryManager::Init is called about halfway through HW::Init, some of the hardware that MemoryManager::InitMMIO calls into isn't initialized yet.
2026-02-04Core: Combine guest pages into host pages larger than 4KJosJuice
Most systems that Dolphin runs on have a page size of 4 KiB, which conveniently matches the page size of the GameCube and Wii. But there are also systems that use larger page sizes, notably Apple CPUs with 16 KiB page sizes. To let us create host mappings on such systems, this commit implements combining guest mappings into host page sized mappings wherever possible. For this to work for a given mapping, not only do four (in the case of 16 KiB) guest mappings have to exist adjacent to each other, but the corresponding translated addresses also have to be adjacent, and the lowest bits of the addresses have to match. When I tested a few games, the following percentages of guest mappings met these criteria: Spider-Man 2: 0%-12% Rogue Squadron 2: 39%-42% Rogue Squadron 3: 28%-41% So while 16 KiB systems don't get as much of a performance improvement as 4 KiB systems, they do still get some improvement.
2026-02-04Core: Don't create page table mappings before R/C bits are setJosJuice
This gets rid of the hack of setting the R and C bits pessimistically, reversing the performance regression in Rogue Squadron 3.
2026-02-04Core: Update page table mappings incrementallyJosJuice
Removing and readding every page table mapping every time something changes in the page table is very slow. Instead, let's generate a diff and ask Memmap to update only the diff.
2026-02-04Core: Postpone page table updates when DR is unsetJosJuice
Page table mappings are only used when DR is set, so if page tables are updated when DR isn't set, we can wait with updating page table mappings until DR gets set. This lets us batch page table updates in the Disney Trio of Destruction, improving performance when the games are loading data. It doesn't help much for GameCube games, because those run tlbie with DR set. The PowerPCState struct has had its members slightly reordered. I had to put pagetable_update_pending less than 4 KiB from the start so AArch64's LDRB (immediate) can access it, and I also took the opportunity to move some other members around to cut down on padding.
2026-02-04Core: Create fastmem mappings for page address translationJosJuice
Previously we've only been setting up fastmem mappings for block address translation, but now we also do it for page address translation. This increases performance when games access memory using page tables, but decreases performance when games set up page tables. The tlbie instruction is used as an indication that the mappings need to be updated. There are some accuracy downsides: * The TLB is now effectively infinitely large, which matters if games don't use tlbie when modifying page tables. * The R and C bits for page table entries get set pessimistically rather than when the page is actually accessed. No games are known to be broken by these inaccuracies, but unfortunately the second inaccuracy causes a large performance regression in Rogue Squadron 3. You still get the old, more accurate behavior if Enable Write-Back Cache is on.
2026-02-03Core: Make RunOnCPUThread always non-blocking.Jordan Woyak
2026-02-03Merge pull request #13594 from jordan-woyak/state-cleanupsJordan Woyak
State: Simplify interthread communication and general cleanups.
2026-02-02ResourcePack: Fix loading resource packsJoshua Vandaële
This is something I missed when updating minizip, this mistake made it so resource packs didn't find any textures
2026-02-01Core: Pre-shift pagetable_hashmask left by 6JosJuice
This will make the upcoming commits just a little bit neater to implement.
2026-02-01Core: Detect SR updatesJosJuice
2026-02-01Common/MemArena: Add function for getting page sizeJosJuice
2026-01-31Merge pull request #14204 from Geotale/update-commentDentomologist
Update Comments Based On Hardware Test
2026-01-31WGL: Correctly load wglDestroyPbufferARB extensionJoshua Vandaële
2026-01-30RetroAchievements - Fix AliasesLilly Jade Katrin
It turns out that it is possible to create a login alias in RetroAchievements such that you can log in with a username that doesn't match your display name. AchievementManager was treating this as a synchronization error, but this is desired behavior, so this removes the check.
2026-01-27feat: Add an option to preserve audio pitch when emulation speed changes, ↵Sam Belliveau
integrating it into core configuration and both Qt and Android UIs.
2026-01-26InputConfig: Remove unused local variablesDentomologist
Remove unused vector `controller_names` from `LoadConfig` and `SaveConfig`. The vector has names added to it but they're never used. Prior to d03f9032c129e440e4f07d319be8b52500798e07 these vectors were passed to `DynamicInputTextureManager::GenerateTextures`, but that commit removed those calls.
2026-01-25Merge pull request #14253 from JosJuice/dsp-hle-memoryOatmealDome
DSP: Remove HLEMemory functions
2026-01-25Merge pull request #14036 from TellowKrinkle/SkipPostprocessOatmealDome
CMake: Default SKIP_POSTPROCESS_BUNDLE to ON
2026-01-25Merge pull request #14214 from JoshuaVandaele/cmake-nonbreaking-improvementsDentomologist
CMake: Various improvements
2026-01-25Merge pull request #14302 from oltolm/opengl_assertOatmealDome
DX, OGL: fix assert
2026-01-25Remove unused importsMartino Fontana
Yellow squiggly lines begone! Done automatically on .cpp files through `run-clang-tidy`, with manual corrections to the mistakes. If an import is directly used, but is technically unnecessary since it's recursively imported by something else, it is *not* removed. The tool doesn't touch .h files, so I did some of them by hand while fixing errors due to old recursive imports. Not everything is removed, but the cleanup should be substantial enough. Because this done on Linux, code that isn't used on it is mostly untouched. (Hopefully no open PR is depending on these imports...)
2026-01-24Merge pull request #14303 from Sintendo/game-iniJMC47
Core: Pass game ID as string_view
2026-01-24Merge pull request #14230 from Sintendo/file-searchJosJuice
Common/FileSearch: Refactor DoFileSearch
2026-01-24DX, OGL: fix assertoltolm
2026-01-24Merge pull request #14216 from iwubcode/gameid_fifo_logJMC47
Core: add game id to fifo log header
2026-01-24Core/NetPlayServer: Pass game ID as string_viewSintendo
2026-01-24Core/ConfigManager: Refactor LoadGameIni and friendsSintendo
2026-01-24Core/AchievementManager: Refactor IsApprovedCode and usersSintendo
2026-01-24Core/ConfigLoaders: Refactor GetGameIniFilenamesSintendo
2026-01-24Remove VectorToJStringArraySintendo
2026-01-24Clean includesSintendo
2026-01-24Common/FileSearch: Refactor DoFileSearchSintendo
2026-01-23Merge pull request #13900 from JosJuice/jit-fma-double-roundingJosJuice
Jit: Implement error-free transformation for single-precision FMA
2026-01-21Merge pull request #14146 from ↵Dentomologist
jordan-woyak/cached-interp-fix-function-cast-warning CachedInterpreter: Replace reinterpret_cast with std::bit_cast to resolve -Wcast-function-type-mismatch warnings.
2026-01-19State: Simplify interthread communication and cleanups. Save/Load calls are ↵Jordan Woyak
now always non-blocking for the caller, but appropriately block the CPU thread as needed.
2026-01-19Common: Add TransferableSharedMutex class and unit tests.Jordan Woyak
2026-01-19Core: Add a HookableEvent for UICommon::FlushUnsavedData.Jordan Woyak
2026-01-19Android: Detect when native code should flush unsaved dataJosJuice
2026-01-19Core: add game id to fifo logs, this makes it easier to test graphical ↵iwubcode
enhancements which use the game id to load
2026-01-19Merge pull request #14294 from JosJuice/textureinfo-getters-headerJordan Woyak
VideoCommon: Move TextureInfo getters to header
2026-01-19VideoCommon: Move TextureInfo getters to headerJosJuice
This improves my PC's performance on RS2 Hoth by... 0.1% or so, which I think is within the margin of error. But this change also cuts down on boilerplate.
2026-01-18JitRegister: Check Open return codeDentomologist
If the call to `Open` a perf map fails don't set `s_is_enabled` (though it could already be true if you're also using VTUNE) and don't call `std::setvbuf` with a null stream. Also fix a typo in a comment (`if` -> `in`)
2026-01-18JitRegister: Verify IOFile IsGoodDentomologist
Use IOFile's bool operator to check that it's not just open but good.
2026-01-18JitRegister: Fix IsEnabled when using VTune without perfDentomologist
Set `s_is_enabled` to `true` in `Init` when `USE_VTUNE` is defined so that `IsEnabled` returns true even if perf isn't being used.
2026-01-19Merge pull request #14290 from ↵Admiral H. Curtiss
Dentomologist/jitregister_remove_redundant_open_file_check JitRegister: Remove redundant check for open file
2026-01-18JitArm64: Special-case fmadds with single-precision inputsJosJuice
If all inputs to an fmadds instruction (including cousins like fmsubs, fnmadd...) are single-precision, then the result is identical between a double-precision calculation with an error-free transform (whether the calculation is fused or not) and a single-precision FMA instruction (must be fused). So as a performance optimization in JitArm64, if we were going to use double precision with EFT but the inputs are singles, instead we'll use a normal single-precision FMA instruction without anything extra. This lets us skip both the EFT and double-to-single conversions. Also renaming `inaccurate_fma` to `nonfused` because it's confusing that `inaccurate_fma` and `m_accurate_fmadds` have such similar names despite controlling separate things.
2026-01-18Jit: Implement error-free transformation for single-precision FMAJosJuice
This implements the equivalent of 07443e2d41 in Jit64 and JitArm64. Aims to fix https://bugs.dolphin-emu.org/issues/13865.
2026-01-18Jit64: Return FixupBranch from HandleNaNsJosJuice
This will be used in the next commit to skip running code that's unnecessary when the result is NaN.
2026-01-18Jit64: Replace MOVSD with MOVAPD in software FMAJosJuice
Should be a little faster by avoiding false dependencies. Note that there is one remaining MOVSD that really needs to be a MOVSD.