Commit Graph

35185 Commits

Author SHA1 Message Date
Admiral H. Curtiss
295d86c86f
Merge pull request #12455 from PatrickFerry/qt_handle_overridden_graphics_backend
Qt: Handle Overridden Graphics Backend
2024-01-01 22:42:30 +01:00
Admiral H. Curtiss
6e3a2324a4
Merge pull request #12464 from JosJuice/jit-isi-membase
Jit: Reload RMEM/MEM_REG on ISI exception
2024-01-01 22:09:05 +01:00
Admiral H. Curtiss
043d868841
Merge pull request #12473 from Dentomologist/bitset64_fix_iterator_incrementation
BitSet64: Fix iterator incrementation
2024-01-01 22:03:11 +01:00
Admiral H. Curtiss
370daaf26c
Merge pull request #12474 from Dentomologist/bitset_use_static_cast
BitSet: Use direct initialization instead of c-style casts
2024-01-01 22:01:45 +01:00
Dentomologist
7dbf463ddf BitSet64: Fix iterator incrementation
Use 1 of the same type as the stored value when shifting left. This
prevents undefined behavior caused by shifting an int more than 31 bits.

Previously iterator incrementation could either hang or prematurely
report it had reached the end of the bitset.
2024-01-01 00:41:48 -08:00
Dentomologist
abb484a101 BitSet: Use direct initialization instead of c-style casts 2024-01-01 00:36:13 -08:00
Tilka
07df4ff16e
Merge pull request #12471 from mitaclaw/flush-gpr-arm-bug
Fix Logic Inefficiency in Arm64GPRCache::FlushRegisters
2024-01-01 00:46:34 +01:00
Dentomologist
58c5ae3de9 UnitTests: Refactor BitSetTest
Group numbers and their bitcounts together in pairs, which allows for
range-based loop iteration.
2023-12-31 12:10:50 -08:00
mitaclaw
01e534a681 Fix Logic Inefficiency in Arm64GPRCache::FlushRegisters
This was introduced in 6a9f565ac4.
2023-12-30 23:44:27 -08:00
Tilka
8ecc478662
Merge pull request #12469 from JosJuice/tlb-index-constants
PowerPC: Add constants for the two TLB indices
2023-12-30 16:59:17 +01:00
JosJuice
465f17a882 PowerPC: Add constants for the two TLB indices
Just for readability.
2023-12-30 14:31:05 +01:00
JosJuice
2a89a1d27a
Merge pull request #12461 from blakbin/DocumentProvider
Improve DocumentProvider
2023-12-30 12:50:46 +01:00
JosJuice
26760cf8a8
Merge pull request #12467 from AdmiralCurtiss/codepage-convert-linkage
Common/StringUtil: Use internal linkage for codepage conversion functions.
2023-12-30 12:13:53 +01:00
luc-git
6b166f1819
DolphinQt/Mapping: Add "Use Mouse Controlled Pointing" button. 2023-12-29 20:31:39 +01:00
Admiral H. Curtiss
99fbc4b97e
Merge pull request #11885 from Filoppi/devices_deadlock_fix_v2
Input: Improve Controller Interface devices threading
2023-12-29 20:17:04 +01:00
Admiral H. Curtiss
4f04ac5858
Common/StringUtil: Use internal linkage for codepage conversion functions. 2023-12-29 19:50:55 +01:00
Admiral H. Curtiss
bf0ac9de0c
Merge pull request #12466 from JosJuice/win32-error-string-encoding
Common: Fix encoding handling in GetWin32ErrorString
2023-12-29 19:48:00 +01:00
JosJuice
0c7359e150 Common: Fix encoding handling in GetWin32ErrorString
These messages can be localized, so we can't just assume it's all ASCII.
2023-12-29 16:01:13 +01:00
Tilka
68250afa08
Merge pull request #12465 from Tilka/zelda
DSPHLE/Zelda: fix use of wrong reverb buffer
2023-12-29 08:14:55 +01:00
Jules Blok
f1d446da3f
Merge pull request #12452 from Tilka/efb24
VideoCommon: apply "force 24-bit color" to EFB-to-VRAM copies as well
2023-12-29 03:51:59 +01:00
Tillmann Karras
594b55c448 DSPHLE/Zelda: fix use of wrong reverb buffer 2023-12-29 02:45:23 +01:00
Tillmann Karras
ca69c60e1b DSPHLE/Zelda: add another 32-bit getter/setter (NFC) 2023-12-29 02:45:20 +01:00
Patrick Ferry
1c68f4231b Qt: Handle Overridden Graphics Backend
This fixes an issue where the game specific graphics backend would be saved as the global setting after playing a game.

This also now displays the currently running graphics backend when looking in the graphics configuration window.
2023-12-28 17:28:08 +00:00
Admiral H. Curtiss
e212d1c395
Merge pull request #12463 from Dentomologist/netkdrequestdevice_fix_crashes
NetKDRequestDevice: Fix sporadic crashes during emulation shutdown
2023-12-27 21:47:18 +01:00
JosJuice
8fcf9969eb Jit: Reload RMEM/MEM_REG on ISI exception
Aims to fix https://bugs.dolphin-emu.org/issues/13444.
2023-12-27 16:39:00 +01:00
Dentomologist
ecf4f1b1f9 NetKDRequestDevice: Fix nullptr dereference crash
Keep a shared_ptr to NetKDTimeDevice inside NetKDRequestDevice.

This allows the KDDownload task to finish its work without potentially
trying to dereference nullptr, which can potentially come from either
GetIOS() or GetDeviceByName() if EmulationKernel's destructor has
started running.
2023-12-24 16:46:08 -08:00
Dentomologist
dd1f5f9726 NetKDRequestDevice: Fix use-after-free crash
Explicitly shut down work queues in NetKDRequestDevice's destructor to
prevent their threads from accessing members after they've been freed.

This crash would occur sporadically if NetKDRequestDevice's periodic
download or mail checks happened to overlap with emulation shutdown in
the wrong way.

An example sequence of events that could cause the crash:
* m_scheduler_timer_thread queues a periodic Download event in
  m_scheduler_work_queue, then waits for m_shutdown_event.
* A request to stop emulation results in s_ios being reset by the CPU
  thread. This triggers NetKDRequestDevice's destructor which sets
  m_shutdown_event and joins m_scheduler_timer_thread.
* m_scheduler_timer_thread wakes from m_shutdown_event and returns from
  its thread function, ending the thread.
* The CPU thread resumes execution at the end of NetKDRequestDevice's
  destructor and begins destroying NetKDRequestDevice's members in
  reverse declaration order.
* m_http is declared after m_scheduler_work_queue and is therefore
  destroyed earlier.
* m_scheduler_work_queue's destructor calls its Shutdown function, which
  by default finishes the work items in the queue.
* The queued Download event calls KDDownload which calls m_http.Get()
  which calls Fetch() which passes garbage data from the freed m_curl
  into curl_easy_setopt().
* Curl promptly crashes.

Shutting down the work queues manually in the destructor prevents the
above because m_http and the other members don't get freed until after
the queue threads finish.
2023-12-24 15:04:35 -08:00
BlakDulz
45d3c41d68 Make DocumentProvider Support Thumbnail
This  will make DocumentUI or the built-in Android System Internal Files Manager app showing Thumbnail of Image file instead of image type icon.
2023-12-24 15:34:10 +07:00
Sepalani
e9fa335fbe Socket: Fix a nullptr dereference when operations are pending 2023-12-24 09:23:02 +04:00
BlakDulz
d667fca8d3 Implement Refresh on DocumentProvider
"When interacting with DocumentUI or the built-in Android System Internal Files Manager app and performing Create, Rename, and Delete operations, DocumentsUI will not automatically refresh the changes.
Previously, users had to manually pull down from the top to refresh the changes. This commit aims to fix this issue by automatically notifying the system that changes have occurred and triggering a requery."
2023-12-23 23:26:54 +07:00
Lioncache
a23cf2121d VideoCommon/PixelEngine: Generify lock guards
We don't need to specify the type of the mutex being passed in.
2023-12-22 14:19:29 -05:00
Lioncache
0505f057ca VideoCommon/PixelEngine: Remove global system accessor in UpdateInterrupts()
Now that the system instance is passed through, this is no longer necessary.
2023-12-22 14:19:29 -05:00
Lioncache
e539dbba4c VideoCommon/PixelEngine: Passthrough system instance in constructor
Simplifies the interface in terms of usage
2023-12-22 14:19:26 -05:00
Mai
b1438c224f
Merge pull request #12439 from lioncash/sprintf
Core: Use fmt over sprintf in trivial cases
2023-12-21 17:17:21 -05:00
Mai
6c2da5229e
Merge pull request #12458 from JosJuice/jitarm64-logic-i2r-not-nothing
JitArm64: Fix the "do nothing" cases of ANDI2R and friends
2023-12-21 17:13:20 -05:00
JosJuice
d8c78f2a92 JitArm64: Fix the "do nothing" cases of ANDI2R and friends
So somehow I forgot that AArch64 uses three-operand encoding...

Fixes a regression from 6303416201 which manifested in various ways,
such as incorrect rendering of the Wind Waker title screen.
2023-12-21 20:51:32 +01:00
Tilka
8d4575cfd8
Merge pull request #12454 from lioncash/proc
VideoCommon/CommandProcessor: Pass system instance through constructor
2023-12-21 17:46:28 +00:00
iwubcode
79648e1c24 VideoCommon: revert max pixel shader samplers back to 8 for Android devices.
It was reported that some games (Zelda Wind Waker and Zelda Twilight Princess but others may also exhibit the issue) have graphical issues with the max pixel samplers set to 16 on some Android devices (ex: Pixel6); since this was increased for a performance heavy feature (custom shaders) just disable it for now.  In the future, this could be handled more elegantly
2023-12-21 00:36:44 -06:00
Lioncache
f97b2d472a VideoCommon/CommandProcessor: Pass system instance through constructor
Makes the use of the interface a little less noisy, especially given
how much of the interface depends on an instance being present.
2023-12-20 09:02:53 -05:00
Tilka
70b7a59456
Merge pull request #12451 from lioncash/fifo
VideoCommon/Fifo: Pass system instance through FifoManager constructor
2023-12-20 12:45:38 +00:00
Tilka
01340d7f8d
Merge pull request #12442 from lioncash/hle
Core/HLE/HLE: Remove global system accessors
2023-12-20 12:41:09 +00:00
Tillmann Karras
ddb4566a41 VideoCommon: apply "force 24-bit color" to EFB-to-VRAM copies as well 2023-12-20 02:25:07 +00:00
Admiral H. Curtiss
acd76918d7
Merge pull request #12448 from lioncash/es
Core/IOS/ES: Remove global system accessor in InitializeEmulationState()
2023-12-19 04:26:08 +01:00
Lioncache
b0d244b772 VideoCommon/Fifo: Pass system instance through FifoManager constructor
Given how many member functions make use of the system instance,
it's likely just better to pass the system instance in on construction.

Makes the interface a little less noisy to use.
2023-12-18 22:03:25 -05:00
OatmealDome
186b2f4e92
Merge pull request #12450 from lioncash/cheats
CheatSearch: Get rid of global system accessors
2023-12-18 20:10:48 -05:00
Lioncache
dec53848f5 CheatSearch: Get rid of global system accessors
We can retrieve the system via the CPUThreadGuard instances.
2023-12-18 19:24:35 -05:00
Lioncache
00f494307f UICommon: Remove global system accessor in TriggerSTMPowerEvent()
This can be passed through via the IOS instance.
2023-12-18 19:17:16 -05:00
Lioncache
c0b7e9cd94 Core/HLE/HLE: Remove global system accessor from ExecuteFromJIT()
We can just pass in our system instance via the ABI function helpers.
2023-12-18 19:11:52 -05:00
Lioncache
f4277a901a Core/HLE/HLE: Remove global system accessors
We can get rid of the global system accessors by requiring passing in
relevant state that the function needs and making callsites do the work.

This *does* add a global accessor to the PPCAnalyzer, however, this already
has global accessors present elsewhere within its code, so they can be removed
all at once in a follow up change.
2023-12-18 19:11:49 -05:00
Lioncache
f1b18d8ae3 Core/IOS/ES: Remove global system accessor in InitializeEmulationState()
We can pass the core timing instance into the function.
2023-12-18 19:06:45 -05:00