Commit Graph

29206 Commits

Author SHA1 Message Date
Lioncash 0f326c6067 Common: Move FixedSizeQueue into Common namespace
Gets this out of the global namespace.
2023-03-22 01:23:15 -04:00
Lioncash 0888c93d48 Common: Move FPU-related helpers into Common namespace
Makes these utilities' namespace consistent with the majority of the
Common library.
2023-03-21 10:58:13 -04:00
Admiral H. Curtiss 8f16fd60dd
JitArm64: Use 64-bit register for pointer when falling back to interpreter. 2023-03-21 02:46:29 +01:00
Robin Kertels 93fce0e4b6
VideoCommon:VertexManagerBase: Only calculate remaining indices once
Before, both of those were calculated 3 times due to the ASSERTs.
2023-03-20 20:59:50 +01:00
Robin Kertels 408b09da31
VideoCommon:VertexShaderManager: Inline SetVertexFormat & UpdateValue/Offset 2023-03-20 20:59:38 +01:00
Robin Kertels c1be9628fc
VideoBackends:Vulkan: Use WorkQueueThread 2023-03-20 16:40:32 +01:00
Robin Kertels 9d422d14d5
WorkQueueThread: Fix WaitForCompletion 2023-03-20 16:31:40 +01:00
Robin Kertels 9186050daa
VideoBackends:Vulkan: Clean up submission thread BlockingLoop usage 2023-03-20 16:23:35 +01:00
Robin Kertels 7703fef3a4
VideoCommon:VertexLoaderManager: Only update vertex format in shader manager if necessary. 2023-03-20 00:41:16 +01:00
Admiral H. Curtiss 454d2fd9ab
Interpreter: Avoid ppcState global (Interpreter_SystemRegisters.cpp). 2023-03-19 03:11:22 +01:00
Admiral H. Curtiss c582aad0c7
Interpreter: Avoid ppcState global (Interpreter_Paired.cpp). 2023-03-19 03:11:18 +01:00
Admiral H. Curtiss 514a7af473
Interpreter: Avoid ppcState global (Interpreter_LoadStorePaired.cpp). 2023-03-19 03:11:13 +01:00
Admiral H. Curtiss 9af8410e4c
Interpreter: Avoid ppcState global (Interpreter_LoadStore.cpp). 2023-03-19 03:11:09 +01:00
Admiral H. Curtiss 8b13349886
Interpreter: Avoid ppcState global (Interpreter_Integer.cpp). 2023-03-19 03:11:05 +01:00
Admiral H. Curtiss 2ce86a890a
Interpreter: Avoid ppcState global (Interpreter_FloatingPoint.cpp). 2023-03-19 03:11:01 +01:00
Admiral H. Curtiss d4ca591e02
Interpreter: Avoid ppcState global (Interpreter_Branch.cpp). 2023-03-19 03:10:56 +01:00
Admiral H. Curtiss 68ab623764
Interpreter: Avoid ppcState global (Interpreter.cpp). 2023-03-19 03:10:42 +01:00
Admiral H. Curtiss 3d67c11b91
Interpreter: Move global state into class, move instance to System. 2023-03-19 03:05:20 +01:00
Admiral H. Curtiss 919182eda2
Interpreter: Pass Interpreter to CPU instruction functions. 2023-03-19 03:05:11 +01:00
Admiral H. Curtiss a4d3342419
Merge pull request #11665 from JosJuice/fix-movie-wii-save
Core: Fix starting movie recording with existing Wii save
2023-03-19 01:46:21 +01:00
Admiral H. Curtiss fb7a371ac0
Merge pull request #11666 from AdmiralCurtiss/updater-spaces
WinUpdater: Quote path for args when relaunching Dolphin.
2023-03-18 18:32:35 +01:00
Admiral H. Curtiss 33d0ec97e9
WinUpdater: Quote path for args when relaunching Dolphin. 2023-03-17 12:48:39 +01:00
TellowKrinkle d037c60caf CMake: Use proper dependency tracking command for storyboard compiling 2023-03-17 01:28:33 -05:00
TellowKrinkle 66936f2087 CMake: Use generator expressions to get codesigning targets
Also works around a bug where CMake's ninja generator doesn't properly handle ||'s on POST_BUILD commands, making the || apply to the whole build like `<link> && custom0 || custom1`
2023-03-17 01:28:16 -05:00
Pokechu22 4dd658f4da Remove PPCTables::UsesFPU
We don't have getters for other flags, so it's not useful to have that.
2023-03-16 18:39:41 -07:00
Pokechu22 164ea57790 Split PPCTables from Interpreter_Tables
This also allows use of constexpr in both places. Some additional work was needed in PPCTables due to mutable data associated with each opcode.
2023-03-16 18:36:25 -07:00
Pokechu22 cd627d1232 PPCTables: Fix OPLOG system
Since OPLOG is defined in PPCTables.cpp only, it isn't visible elsewhere. This broke in 3ede866c37.
2023-03-16 18:36:25 -07:00
Pokechu22 34f39ee22e JitArm64_Tables: Use C++20 features 2023-03-16 18:36:25 -07:00
Pokechu22 ec7432ef36 Jit64_Tables: Use C++20 features 2023-03-16 18:36:25 -07:00
Pokechu22 14a93d24e1 Common: Add constexpr Fill function 2023-03-16 18:36:25 -07:00
JosJuice d179acef38 Core: Refactor InitializeDeterministicWiiSaves
Some simple deduplication.
2023-03-16 22:49:46 +01:00
JosJuice 9e7409e71e Core: Fix starting movie recording with existing Wii save
A change made in 0d095b4 didn't take into account that the movie system
doesn't set sync_titles.
2023-03-16 22:45:40 +01:00
Pierre Bourdon d623871f3e
Merge pull request #11664 from OatmealDome/macos-updater-test-mode
MacUI: Add stub implementation of UI::IsTestMode()
2023-03-16 15:24:49 +01:00
OatmealDome bbe2bd5fec MacUI: Add stub implementation of UI::IsTestMode() 2023-03-16 02:44:36 -04:00
Pierre Bourdon 91fca0783e
Merge pull request #11647 from AdmiralCurtiss/perfquery-inconsistency
Fix PerfQuery inconsistencies across backends.
2023-03-15 15:20:11 +01:00
Mai 4281606838
Merge pull request #11641 from JosJuice/android-remove-old-config
Android: Remove support for the old config system
2023-03-14 15:48:04 -04:00
Pierre Bourdon e83b6e19ab
Merge pull request #11655 from AdmiralCurtiss/dtk-heap
HW/DVDInterface: Avoid heap allocation in DTK callback.
2023-03-14 13:45:41 +01:00
Admiral H. Curtiss 4c21cdd0e6
HW/DVDInterface: Do DTK math in blocks instead of in samples. 2023-03-14 13:19:44 +01:00
Admiral H. Curtiss 66b6a60afe
HW/DVDInterface: Avoid heap allocation in DTK callback. 2023-03-14 10:58:03 +01:00
Pierre Bourdon 3783bedc25
Merge pull request #11635 from Dentomologist/wiimote_fix_disconnection_deadlock
ControllerInterface: Fix deadlock when Wii Remote disconnects
2023-03-14 02:41:36 +01:00
Admiral H. Curtiss aac9647ba2
Divide by MSAA for PerfQuery in all backends. 2023-03-14 02:13:25 +01:00
Admiral H. Curtiss ddd2b598da
Return quarter value for PerfQuery in all backends. 2023-03-14 02:08:20 +01:00
Admiral H. Curtiss 43a5d506c8
Merge pull request #11644 from deReeperJosh/trapteamaudio
Skylander Portal: Play Trap Team Audio
2023-03-14 01:29:20 +01:00
Admiral H. Curtiss 26605c0184
Merge pull request #11649 from Pokechu22/tas-controller-input-update-widgets
DolphinQt: Fix TAS widgets not updating with enable controller input
2023-03-14 01:21:17 +01:00
Admiral H. Curtiss 3006c23c85
Core/CPUThreadGuard: Fetch System from Guard. 2023-03-13 18:13:20 +01:00
Admiral H. Curtiss 31d33d0efd
HW/ProcessorInterface: Store reference to System in class. 2023-03-13 18:13:20 +01:00
Admiral H. Curtiss ba852a7812
HW/Memmap: Store reference to System in MemoryManager. 2023-03-13 18:13:20 +01:00
Admiral H. Curtiss 026b6a3e0f
HW: Pass System to functions. 2023-03-13 18:13:20 +01:00
Mai 137b9d1da1
Merge pull request #11646 from AdmiralCurtiss/si-class
HW/SerialInterface: Refactor to class.
2023-03-13 13:09:51 -04:00
Pierre Bourdon a6b2655631
Merge pull request #11636 from shuffle2/updater-test
Add test for Updater
2023-03-13 15:47:37 +01:00
Pokechu22 3f6b931150 DolphinQt: Fix TAS widgets not updating with enable controller input
This regressed in 0300b44d23. Specifically, the sliders and the stick/IR widgets did not update, but the spin boxes did update.
2023-03-12 17:58:48 -07:00
Joshua de Reeper f27e8216a5 Skylander Portal: Play Trap Team Audio
Asserts and length handling
2023-03-13 13:01:48 +13:00
Admiral H. Curtiss bf2f901a99
HW/SerialInterface: Refactor to class. 2023-03-12 16:08:56 +01:00
Admiral H. Curtiss d371b17f37
HW/SerialInterface: Pass System to ISIDevice. 2023-03-12 14:19:38 +01:00
Mai ab05dfc263
Merge pull request #11642 from shuffle2/winupdater-fail
winupdater: improve wording of UI::Error
2023-03-12 04:11:16 -04:00
Shawn Hoffman ab3da5e4ce winupdater: improve wording of UI::Error 2023-03-11 13:25:38 -08:00
Shawn Hoffman 06cb4ffa64 winupdater: fix CR getting into parsed VCToolsUpdateURL 2023-03-11 12:58:33 -08:00
Shawn Hoffman 0a8725e4a9 updater: add test for update flow
currently windows-only
2023-03-11 12:58:33 -08:00
Shawn Hoffman de0bc06856 updater: flush log after each write 2023-03-11 12:58:33 -08:00
JosJuice 53e7090f55 Migrate game INI profile setting to new config system 2023-03-11 17:51:58 +01:00
Admiral H. Curtiss 069280ddc6
HW/VideoInterface: Refactor to class. 2023-03-11 12:50:35 +01:00
Admiral H. Curtiss 2102e64299
HW/VideoInterface: Savestate members individually. 2023-03-11 12:48:02 +01:00
JosJuice 62ff2f1030
Merge pull request #11385 from JosJuice/android-input-overhaul
Android input overhaul
2023-03-11 12:37:44 +01:00
Admiral H. Curtiss 84542d915d
HW/MemoryInterface: Refactor to class. 2023-03-11 00:57:16 +01:00
Admiral H. Curtiss bf95d4012f
HW/EXI: Refactor ExpansionInterface to class. 2023-03-11 00:56:37 +01:00
Mai e4df388128
Merge pull request #11638 from JosJuice/tas-input-motionplus
DolphinQt: Add MotionPlus support to TAS input
2023-03-10 16:54:35 -05:00
Admiral H. Curtiss d31733ce64
HW/DVD: Rename DVDThreadManager to DVDThread. 2023-03-10 20:22:29 +01:00
Admiral H. Curtiss 25e883280a
HW/DVD: Merge DVDThread namespace into DVD. 2023-03-10 20:20:19 +01:00
JosJuice 4d34f86121 DolphinQt: Add MotionPlus support to TAS input
Will manually controlling both an accelerometer and a gyroscope at the
same time be reasonable to do? No idea. Was this easy to implement
thanks to the input override system? Yes.

Fixes https://bugs.dolphin-emu.org/issues/12443.
2023-03-10 19:36:17 +01:00
Admiral H. Curtiss d26a540253
HW/DVD: Rename DVDInterfaceManager to DVDInterface. 2023-03-10 18:37:46 +01:00
Admiral H. Curtiss ee35103ed9
HW/DVD: Rename DVDInterface namespace to DVD. 2023-03-10 18:37:18 +01:00
Admiral H. Curtiss dca8e9dc1e
HW/DVDThread: Refactor to class. 2023-03-10 18:12:59 +01:00
Admiral H. Curtiss eb25c46a91
HW/DVDInterface: Refactor to class. 2023-03-10 18:12:59 +01:00
Admiral H. Curtiss 929222ffbd
HW/DSP: Refactor to class. 2023-03-09 22:35:29 +01:00
Mai 40ff9b25b7
Merge pull request #11633 from AdmiralCurtiss/ai-class
HW/AudioInterface: Refactor to class.
2023-03-09 11:59:47 -05:00
Admiral H. Curtiss 1023e5dd4f
Merge pull request #11441 from JosJuice/jit64-lea-fixup
Jit64: Fix the offsetAddedToAddress correction
2023-03-09 16:13:25 +01:00
Admiral H. Curtiss 9ed388fc8a
Merge pull request #11557 from AdmiralCurtiss/split-file-reader
DiscIO: Add support for CleanRip-style split ISOs.
2023-03-09 16:13:15 +01:00
Admiral H. Curtiss 8c7997d6ca
Merge pull request #11601 from Dentomologist/bluetooth_adapter_missing_message
Config: Restore Bluetooth adapter missing message in Controller Settings
2023-03-09 16:10:14 +01:00
Admiral H. Curtiss 234c5dd90e
Merge pull request #11622 from JosJuice/tas-input-nonblocking
DolphinQt: Rework TAS input threading
2023-03-09 16:08:30 +01:00
Admiral H. Curtiss d638d2dcb7
HW/AudioInterface: Refactor to class. 2023-03-09 02:40:29 +01:00
Dentomologist d6a8e6caaf ControllerInterface: Fix deadlock when Wii Remote disconnects
In UpdateInput, lock m_devices_population_mutex before m_devices_mutex
to be consistent with other ControllerInterface functions. Normally the
former lock isn't needed in UpdateInput, but when a Wii Remote
disconnects it calls RemoveDevice which results in the mutexes being
locked in the wrong order.
2023-03-08 17:22:27 -08:00
Admiral H. Curtiss a1c2651fee
HW/EXI: Pass System to IEXIDevice. 2023-03-08 22:51:17 +01:00
Admiral H. Curtiss 7044cff011
Core/Boot: Pass around System. 2023-03-08 22:41:43 +01:00
Admiral H. Curtiss 912cd456fb
Core: Add System parameter to CPUThreadGuard. 2023-03-08 22:41:42 +01:00
JosJuice 0300b44d23 DolphinQt: Rework TAS input threading, part 2 (analog inputs) 2023-03-08 17:49:03 +01:00
JosJuice 11e4d46927 DolphinQt: Remove unneeded out parameters in TASInputWindow
IIRC we needed this before the input override system was added.
2023-03-08 17:49:03 +01:00
JosJuice 3eac1fc284 DolphinQt: Rework TAS input threading, part 1 (buttons)
This gets rid of a blocking operation, improving performance and fixing
https://bugs.dolphin-emu.org/issues/12893.

This also makes us no longer directly access the state of certain UI
elements from the CPU thread, which probably wasn't thread-safe but
doesn't seem to have caused any observable issues so far.
2023-03-08 17:49:02 +01:00
Admiral H. Curtiss 3b364c5c16
HW/CPU: Refactor to class, move to System. 2023-03-08 12:23:37 +01:00
Admiral H. Curtiss 0b9002ec2a
Merge pull request #11568 from SMarioMan/socket-broadcast
Network/Socket: Enable broadcast permissions in socket requests
2023-03-08 00:11:44 +01:00
Mai 16023ece6d
Merge pull request #11621 from deReeperJosh/skylandersfilefix
Skylander Portal: Clearing and Reloading fix
2023-03-07 15:24:46 -05:00
Admiral H. Curtiss 6d38dd9821
Qt/WatchWidget: Don't update if not paused. 2023-03-07 20:31:15 +01:00
JosJuice 1b55d7c594 Android: Change how the overlay controller setting works
Up until now, there have been two settings on Android that stored the
selected Wii Remote extension: the normal one that's also used on PC,
and a SharedPreferences one that's used by the overlay controls to
determine what controls to show. It is possible for these two to end up
out of sync, and my input changes have made that more likely to happen.

To fix this, let's rework how the overlay controller setting works.
We don't want it to encode the currently selected Wii Remote extension.
However, we can't simply get rid of the setting, because for some Wii
games we need the ability to switch between a GameCube controller and a
Wii Remote. What this commit does is give the user the option to select
any of the 4 GameCube controllers and any of the 4 Wii Remotes. (Before,
controllers 2-4 weren't available in the overlay.) Could be useful for
things like the Psycho Mantis fight in Metal Gear Solid. I'm also
switching from SharedPreferences to Dolphin.ini while I'm at it.
2023-03-07 17:39:34 +01:00
JosJuice 4c326f2030 Android: Remove the in-emulation IR sensitivity options
This too can be set in the normal controller settings now.
2023-03-07 17:39:34 +01:00
JosJuice 9b9b6d97bc Config: Simplify IsSettingSaveable's handling of Android section
The Android-specific controller mapping system is now gone,
so IsSettingSaveable can be greatly simplified.
2023-03-07 17:39:34 +01:00
JosJuice c2779aef06 Android: Add the advanced input mapping dialog
It's missing a lot of features from the PC version for now, like
buttons for inserting functions and the ability to see what the
expression evaluates to. I mostly just wanted to get something in
place so you can set up rumble.

Co-authored-by: Charles Lombardo <clombardo169@gmail.com>
2023-03-07 17:39:30 +01:00
Admiral H. Curtiss f389da2a33
HW/HSP: Refactor to class, move to System. 2023-03-07 02:11:39 +01:00
Admiral H. Curtiss 655cc7f75c
DiscIO: Add support for CleanRip-style split ISOs. 2023-03-05 19:23:55 +01:00
Scott Mansell 4acdbc0e84
Merge pull request #11625 from phire/eventhook_nodiscard
Fix KillRenderer config changed regression
2023-03-06 03:09:12 +13:00
Scott Mansell 901f12c935 HookableEvents: Add [[nodiscard]] to Register 2023-03-06 00:12:26 +13:00
Scott Mansell b7db2510ef Don't discard ConfigChanged callback handle 2023-03-06 00:12:26 +13:00
Scott Mansell 70cfb46f8e Fix duplicated FPS
This is a small regression from KillRenderer, which caused duplicated
frames to be counted on the FPS counter when the "Skip Presenting
Duplicated Frames" option was disabled.
2023-03-05 23:31:12 +13:00
Joshua de Reeper 2585ae9b2c Skylander Portal: Clearing and Reloading fix 2023-03-04 20:13:54 +13:00
JosJuice 2b1dd52750 Android: Add input device selection 2023-03-03 22:28:24 +01:00
JosJuice 9a8a395560 GCPadEmu/WiimoteEmu: Reorder control groups
This way, Android (which will show groups in the order they're defined)
will show groups in a more logical order similar to DolphinQt.

The main thing that was annoying me was how early Rumble was for
Wii Remotes. Some of the other changes I'm making in this commit,
like the order of Shake/Tilt/Swing, are more arbitrary and were
made for consistency with DolphinQt. But there are also places
where I didn't go all the way with matching DolphinQt. Most notably,
DolphinQt puts sticks before buttons, but I don't see any reason
to do that for Android.
2023-03-03 22:28:24 +01:00
JosJuice e0562abb7d ControllerEmu: Add default mappings for Android
Unlike PCs, Android doesn't really have any input method (not counting
touch) that can reasonably be expected to exist on most devices.
Because of this, I don't think shipping with a default mapping for the
buttons and sticks of GameCube controllers and Wii Remotes makes sense.
I would however like to ship default mappings for a few things:

1. Mapping the Wii Remote's accelerometer and gyroscope to the device's
   accelerometer and gyroscope. This functionality is useful mainly
   for people who use the touchscreen, but can also be useful when
   using a clip-on controller. The disadvantage of having this mapped
   by default is that games disable pointer input if the accelerometer
   reports that the Wii Remote is pointed at the ceiling.

2. Mapping GC keyboards for use with a physical keyboard, like on PC.
   After all, there's no other way of mapping them that makes sense.

3. Mapping rumble to the device's vibrator.

Aside from the GC keyboards, this approach is effectively the same as
what we were doing before the input overhaul.
2023-03-03 22:28:23 +01:00
JosJuice 8e33458f48 ControllerInterface/Android: Implement rumble 2023-03-03 22:28:23 +01:00
JosJuice 065481d989 ControllerInterface/Android: Automatically suspend sensors
This is a battery-saving measure. Whether a sensor should be suspended
is determined in the same way as whether key events and motion events
should be handled by the OS rather than consumed by Dolphin.
2023-03-03 22:28:23 +01:00
JosJuice 36acb17700 ControllerInterface/Android: Implement sensor input for InputDevices
This functionality was added in Android 12 to let apps get motion data
for gamepads.
2023-03-03 22:28:23 +01:00
JosJuice 5e51b56d72 ControllerInterface/Android: Implement sensor input 2023-03-03 22:28:23 +01:00
JosJuice 104ea09892 ControllerInterface/Android: Implement hotplug 2023-03-03 22:28:23 +01:00
JosJuice d6af294a23 ControllerInterface/Android: Return whether input was handled
When Android presents an input event to an app, it wants the app to
return true or false depending on whether the app handled the event or
not. If the event wasn't handled by the app, it will be passed on to
the system, which may decide to take an action depending on what kind
of input event it is. For instance, if a B button press is passed on to
the system, it will be turned into a Back press. But if an R1 press is
passed on to the system, nothing in particular happens.

It's important that we get this return value right in Dolphin. For
instance, the user generally wouldn't want a B button press to open
the EmulationActivity menu, so B button presses usually shouldn't be
passed on to the system - but volume button presses usually should be
passed on to the system, since it would be hard to adjust the volume
otherwise. What ButtonManager did was to pass on input events that are
for a button which the user has not mapped, which I think makes sense.
But exactly how to implement that is more complicated in the new input
backend than in ButtonManager, because now we have a separation between
the input backend and the code that keeps track of the user's mappings.

What I'm going with in this commit is to treat an input as mapped if
it has been polled recently. In part I chose this because it seemed
like a simple way of implementing it that wouldn't cause too many
layering violations, but it also has two useful side effects:

1. If a controller is not being polled (e.g. GameCube controllers in
   Wii games that don't use them), its mappings will not be considered.
2. Once sensor input is implemented in the Android input backend,
   we will be able to use this "polled recently" tracking to power down
   the sensors at times when the game is using a Wii Remote reporting
   mode that doesn't include motion data. (Assuming that the sensor
   inputs only are mapped to Wii Remote motion controls, that is.)
2023-03-03 22:28:23 +01:00
JosJuice ca508e4503 ControllerInterface/Android: Handle input events
Android doesn't let us poll inputs whenever we want. Instead, we
listen to input events (activities will have to forward them to the
input backend), and store the received values in atomic variables
in the Input classes. This is similar in concept to how ButtonManager
worked, but without its homegrown second input mapping system.
2023-03-03 22:28:23 +01:00
JosJuice 792cb62195 ControllerInterface/Android: Implement device population 2023-03-03 22:28:23 +01:00
JosJuice 0150f521f7 ControllerInterface/Android: Rip out ButtonManager
ButtonManager is very different from how a normal input backend works,
and is making it hard for us to improve controller support on Android.
The following commits will add a new input backend in its place.
2023-03-03 22:28:23 +01:00
JosJuice 95ce41ac56
Merge pull request #11399 from JosJuice/jit-one-stack
Jit: Don't use a second stack
2023-03-03 22:27:16 +01:00
Minty-Meeo bf079d6d3a [[unlikely]] ASSERT
and other ASSERT usage changes
2023-03-02 19:54:15 -06:00
Mai 6361586a04
Merge pull request #11582 from Pokechu22/software-crash-on-startup
Software: Fix regressions from "Kill Renderer"
2023-03-02 15:13:00 -05:00
Mai ab2f8d3475
Merge pull request #11607 from AdmiralCurtiss/sd-progress
Qt/WiiPane: Add progress window for SD card conversion.
2023-03-02 15:08:18 -05:00
Pokechu22 9cdc0aca9b Software: Fix "Auto-Adjust Window Size"
This also needs to be handled on the software renderer path.
2023-03-02 11:08:49 -08:00
Pokechu22 78428dd8db Software: Fix crash on startup when using "Compile Shaders Before Starting"
When that setting is enabled, m_xfb_entry is initially not present (during the phase where a shader compilation progress bar would be shown). The main path checks for m_xfb_entry, but the software renderer fallback path didn't.

Fixes another aspect of https://bugs.dolphin-emu.org/issues/13172.
2023-03-02 11:08:49 -08:00
Pokechu22 4a2d3c83c7 Software: Implement GetSurfaceInfo()
Before, it used a fallback where it returned a default object, where the width and height were set to 0. Presenter::Initialize() used GetSurfaceInfo to set the backbuffer size, then used that size when initializing the on-screen UI (even for the software renderer, where the on-screen UI isn't currently present), which meant that ImGui got a window size of 0 and thus resulted in a failed assertion.

Although BindBackbuffer checks for size changes, it doesn't help because ImGui has already been initialized, and the size hasn't actually changed since initialization occured.

Fixes one aspect of https://bugs.dolphin-emu.org/issues/13172.
2023-03-02 11:08:49 -08:00
SMarioMan 078730c873
Avoid altering TCP sockets
Co-authored-by: sepalani <sepalani@hotmail.fr>
2023-03-01 20:52:43 -05:00
iwubcode 42cb3f3904 VideoCommon: remove HiResTexture DDS loading, update hirestexture logic to use custom texture data 2023-03-01 12:11:04 -06:00
iwubcode 3e35255983 VideoCommon: add class to load custom texture data 2023-03-01 11:58:37 -06:00
Admiral H. Curtiss e2bd7d1d95
Common/FatFsUtil: Close temp file before deleting it on conversion failure. 2023-02-28 20:31:56 +01:00
Admiral H. Curtiss fe26b54efd
Qt/WiiPane: Add progress window for SD card conversion. 2023-02-28 20:31:55 +01:00
Admiral H. Curtiss 435d8c39ee
Common/FatFsUtil: Add callback for cancelling SD card conversion. 2023-02-28 20:31:51 +01:00
JosJuice b6256a57ef Jit: Move stack handling code to JitBase
Deduplication between Jit64 and JitArm64.
2023-02-28 20:30:06 +01:00
JosJuice 86c1f6e1e7 Jit: Don't use a second stack
This second stack leads to JNI problems on Android, because ART fetches
the address and size of the original stack using pthread functions
(see GetThreadStack in art/runtime/thread.cc), and (presumably) treats
stack addresses outside of the original stack as invalid. (What I don't
understand is why some JNI operations on the CPU thread work fine
despite this but others don't.)

Instead of creating a second stack, let's borrow the approach ART uses:
Use pthread functions to find out the stack's address and size, then
install guard pages at an appropriate location. This lets us get rid
of a workaround we had in the MsgAlert function.

Because we're no longer choosing the stack size ourselves, I've made some
tweaks to where the put the guard pages. Previously we had a stack of
2 MiB and a safe zone of 512 KiB. We now accept stacks as small as 512 KiB
(used on macOS) and use a safe zone of 256 KiB. I feel like this should
be fine, but haven't done much testing beyond "it seems to work".

By the way, on Windows it was already the case that we didn't create
a second stack... But there was a bug in the implementation!
The code for protecting the stack has to run on the CPU thread, since
it's the CPU thread's stack we want to protect, but it was actually
running on EmuThread. This commit fixes that, since now this bug
matters on other operating systems too.
2023-02-28 20:29:46 +01:00
JosJuice 0cdae98181 Jit: Fix GUARD_OFFSET calculation
Seems like this was broken all along. The safe zone is at the lower
addresses of the stack, not the higher addresses.
2023-02-28 19:11:35 +01:00
Admiral H. Curtiss a0974c18cd
RiivolutionPatcher: Use capitalization of file that exists in the host file system if possible.
Fixes https://bugs.dolphin-emu.org/issues/13138
2023-02-28 00:56:34 +01:00
Admiral H. Curtiss bdb19085c4
Common: Add utility function for case-insensitive string comparison. 2023-02-28 00:56:33 +01:00
JosJuice 7586fc8134
Merge pull request #11608 from Dentomologist/fix_dynamicinputtextures_directory_error_logs
UICommon: Create Load/DynamicInputTextures directory on startup
2023-02-27 18:07:57 +01:00
Admiral H. Curtiss 251fb92b80
Merge pull request #11606 from JosJuice/control-group-save-enabled
InputCommon: Fix ControlGroup::SaveConfig with DefaultValue::Disabled
2023-02-27 12:02:25 +01:00
Admiral H. Curtiss c730ee2de2
Merge pull request #11596 from AdmiralCurtiss/copyany
Common/FileUtil: Migrate CopyDir() to a more clear interface.
2023-02-27 12:02:00 +01:00
Admiral H. Curtiss a11b9d585f
Common/FileUtil: Remove obsolete CopyDir() function. 2023-02-26 23:17:10 +01:00
Admiral H. Curtiss 4f462b4ef6
Migrate destructive calls of File::CopyDir() to File::Move(). 2023-02-26 23:17:10 +01:00
Admiral H. Curtiss 5367bf394c
Common/FileUtil: Add Move() function. 2023-02-26 23:17:09 +01:00
Dentomologist e62162e486 UICommon: Create Load/DynamicInputTextures directory on startup
Fix console error spam on Dolphin and game startup if the directory
doesn't exist.
2023-02-26 13:10:15 -08:00
Daniel Garza 02f7c0213f
Qt/GameList: Also filter by filename when searching. 2023-02-26 19:13:45 +01:00
JosJuice 9b3816c993 InputCommon: Fix ControlGroup::SaveConfig with DefaultValue::Disabled
I also changed LoadConfig, but that change doesn't affect correctness,
it's only so it looks neat by matching SaveConfig.

This bug was added in 18a4afb053, the
commit that introduced DefaultValue::Disabled. The bug can't actually be
triggered in master, but it can be triggered in the Android input
overhaul PR.
2023-02-26 17:45:09 +01:00
Admiral H. Curtiss 26adf78e45
Merge pull request #11602 from JosJuice/cpu-guard-expression
PowerPC: Rework CPUThreadGuard handling in Expression.cpp
2023-02-26 11:55:47 +01:00
Shawn Hoffman 28956cc6c2 workaround msvc optimizer bug 2023-02-25 23:26:27 -08:00
Dentomologist ad6e95afb4 D3D: Restore workaround for erroneous NaN optimization
The HLSL compiler incorrectly decides isnan can't be true, so this
workaround was originally added in 52c82733 but lost during the
conversion to SPIR-V.
2023-02-25 16:27:30 -08:00
JosJuice ae5311d6e6 PowerPC: Rework CPUThreadGuard handling in Expression.cpp
See https://github.com/dolphin-emu/dolphin/pull/11554#discussion_r1113949572.
2023-02-25 16:13:34 +01:00
Dentomologist d18735e82e Qt/WiimoteControllersWidget: Add bluetooth unavailable message 2023-02-24 14:30:43 -08:00
Admiral H. Curtiss 1ed0e014cd
Migrate non-destructive calls of File::CopyDir() to File::Copy(). 2023-02-24 20:32:19 +01:00
Admiral H. Curtiss 884917a6d5
Common/FileUtil: Use non-throwing overload of is_directory() in CreateDir() and CreateFullPath(). 2023-02-24 20:32:19 +01:00
Admiral H. Curtiss e479f92418
Common/FileUtil: Add CreateDirs() function as a wrapper around std::filesystem::create_directories(). 2023-02-24 20:32:18 +01:00
Admiral H. Curtiss 616d57e7fc
Common/FileUtil: Add Copy() function as a wrapper around std::filesystem::copy(). 2023-02-24 20:32:18 +01:00
iwubcode 5d571b068f VideoBackends: rework d3d11 to specify samplers/bound textures using a bitset with a constant size, instead of hardcoding each individual enumeration value 2023-02-24 11:32:48 -06:00
Shawn Hoffman 2c2fb869a2 use std-provided randomness for JitArm64 unittests
decreases runtime significantly and lessens dependency on mbedtls
2023-02-22 12:55:12 -08:00
Admiral H. Curtiss e52aa52a66
Common/FileUtil: Rename Copy() to CopyRegularFile().
This is to clarify that it can only copy files, not folders.
2023-02-22 11:43:58 +01:00
Léo Lam 3c4a21315d
Merge pull request #11592 from Pokechu22/fix-delete-ticket
IOS/ES: Fix crash when deleting tickets
2023-02-21 10:53:37 +01:00
Pokechu22 f2ac3aec94 IOS/ES: Fix crash when deleting tickets
This broke formatting the system memory; see https://bugs.dolphin-emu.org/issues/13176. After calling ticket.DeleteTicket(), ticket.m_bytes was 0-length, but calling ticket.IsV1Ticket() still attempted to read from m_bytes.

This was introduced in 2fd9852ca8, although it didn't actually cause a crash until 929fba08e7.
2023-02-20 18:33:34 -08:00
Mai 6f21ce7d95
Merge pull request #11555 from CookiePLMonster/wil-todos
Address WIL todos in UICommon.cpp
2023-02-20 10:14:49 -05:00
Admiral H. Curtiss 4e6c89fbfd
Qt/CodeViewWidget: Don't read PC in Update() if we don't have a CPU thread guard. 2023-02-20 03:10:12 +01:00
Admiral H. Curtiss ef1520c2c6
Qt/CodeViewWidget: Don't try to pause emulator in Update() if we happen to be on a breakpoint. 2023-02-20 02:56:04 +01:00
Seeky 4e6e510003
Debugger: Add string comparison to conditional breakpoints. 2023-02-20 01:40:33 +01:00
JosJuice 78c53bfec8 Jit64: Fix the offsetAddedToAddress correction
The LEA that the signal handler is trying to undo the effects of is a
32-bit instruction, and the value in the register prior to the LEA is
also 32-bit, so the signal handler should use a 32-bit write.

(Actually, in the end this doesn't really matter, because the first
instruction that reads this value after backpatching is also a 32-bit
instruction...)
2023-02-18 21:14:31 +01:00
Admiral H. Curtiss 8db35e6d04
Merge pull request #11578 from Pokechu22/memory-leaks-feb-2023
Fix various memory leaks
2023-02-18 13:56:34 +01:00
Pokechu22 c94aacc968 AudioPane: Fix inconsistent initial state of audio stretching labels
This resulted in the labels being solid black even when audio stretching is disabled the first time the settings are opened, but then properly being greyed out after changing a setting (even the audio backend or DSP emulation engine, not just whether audio stretching is enabled).
2023-02-17 18:51:41 -08:00
Pokechu22 f1f3fd5d9d InputCommon: Fix memory leak in ExpressionParser
We allocate in MakeSuppressor via `return unique_ptr(std::make_unique<...>(...).release(), InvokingDeleter{}`, so it wasn't properly getting freed.
2023-02-17 18:29:36 -08:00
Pokechu22 b6d476241a CodeViewWidget: Fix memory leak
Per https://doc.qt.io/qt-6/qabstractitemview.html#setItemDelegateForColumn setItemDelegateForColumn does not take ownership of the parameter, so it was not being deleted. Specifying a parent to QObject (via QStyledItemDelegate's constructor) will allow it to automatically be deleted, per https://doc.qt.io/qt-6/objecttrees.html. The other instance of a QItemDelegate in IOWindow.cpp already used this.
2023-02-17 18:29:32 -08:00
Pokechu22 1c5e223532 MemoryViewWidget: Fix memory leaks
bp_item/row_item/item were never deleted, and the normal Qt ownership system wasn't applying to them because they were being cloned.
2023-02-17 18:17:01 -08:00
Admiral H. Curtiss 74abf48234
Merge pull request #11576 from yannhodiesne/convert-prevent-file-deletion
Check the input and destination paths before converting a game file onto itself
2023-02-17 18:49:15 +01:00
Markus Wick b381df700c
Merge pull request #11577 from JosJuice/android-armeabi-v7a
Android: Fix armeabi-v7a build
2023-02-17 17:57:38 +01:00
JosJuice 90b676d368 Android: Fix armeabi-v7a build
This very much isn't a build configuration that we're going to ship,
but I want to be able to tell people that they can build it on their
own if they really want to see how terribly it performs :)

Just like before, you'll need to edit two lines in app/build.gradle to
define ENABLE_GENERIC=ON and actually enable armeabi-v7a if you want an
armeabi-v7a build. This commit just fixes some compilations errors that
crop up if you do so.
2023-02-17 16:58:24 +01:00
Yann Hodiesne 49e897422f
Use a success count instead of files count 2023-02-17 15:49:31 +01:00
Yann Hodiesne cb42a03299
Check the input and destination paths before converting a game file onto itself
Before these changes you could tell Dolphin to convert a game file into the same format it is already in, leading to the FileDialog using the input path as the default destination path
An unsuspecting user could then click Save and Dolphin would try to convert the input file by writing the destination file on top of it... leading to an I/O error and the input file being entirely removed
2023-02-17 14:26:50 +01:00
Scott Mansell 28331c5905
Merge pull request #11574 from K0bin/val-fix
VideoBackends:Vulkan: Fix printing validation errors
2023-02-17 14:52:45 +13:00
Admiral H. Curtiss 0c48324c75
Jit64: Use 5 byte jump in mtmsr for the CP interrupt check.
WriteExternalExceptionExit() can write more than the maximum offset of the small jump.
2023-02-16 19:26:19 +01:00
Robin Kertels 2695666e6d
VideoBackends:Vulkan: Fix printing validation errors 2023-02-16 17:53:15 +01:00
Scott Mansell 6038a6e2db
Merge pull request #11569 from Hibyehello/patch-1
VideoBackend: Make Metal Default on MacOS
2023-02-16 21:08:35 +13:00
Pokechu22 74a14c7d1f ControllerInterface: Fix uninitialized variables in DualShockUDPClient
Strangely, this case did not trigger a C26495 warning in Visual Studio's analyzer; instead, I spotted this when using Valgrind.
2023-02-15 19:23:47 -08:00
Pokechu22 67381cdb8b VideoCommon: Remove unused ShutdownImGui function declaration
This was moved to the ~OnScreenUI() destructor in 0d4537d60f.
2023-02-15 19:20:59 -08:00
Pokechu22 8802f96b7e Fix uninitialized variable warnings (C26495) 2023-02-15 19:18:39 -08:00
Josh cd38ed76e2
Keep Vulkan precedence over OpenGL 2023-02-15 12:22:56 -06:00
Josh 546a016dc8
VideoBackend: Make Metal Default on MacOS 2023-02-15 12:05:54 -06:00
SMarioMan 301e97f7f7
Remove WinAPI-specific type from socket request 2023-02-15 09:29:21 -05:00
SMarioMan a45f6d9438
Enable broadcast permissions in socket requests 2023-02-15 07:59:38 -05:00
Admiral H. Curtiss 0758e00cfe
Common/FileUtil: Revert behavior of CreateFullPath().
This was accidentally changed in 7e6436db34.
2023-02-15 02:21:50 +01:00
Admiral H. Curtiss 661b74f4a3
Merge pull request #11564 from JosJuice/jitarm64-cmp-order
JitArm64: Fix special cases of cmp
2023-02-14 20:19:07 +01:00
Admiral H. Curtiss e1d3237dbd
Merge pull request #11342 from TellowKrinkle/GLLayerMac
VideoCommon: Fix stereoscopic 3D on OpenGL < 4.3 (macOS)
2023-02-14 20:17:22 +01:00
JosJuice 0049a76775 JitArm64: Fix special cases of cmp
This fixes a regression from 592ba31. When `a` was a constant 0 and `b`
was a non-constant 0x80000000, the 32-bit negation operation would
overflow, causing an incorrect result. The sign extension needs to happen
before the negation to avoid overflow.

Note that I can't merge the SXTW and NEG into one instruction.
NEG is an alias for SUB with the first operand being set to ZR,
but "SUB (extended register)" treats register 31 as SP instead of ZR.

I've also changed the order for the case where `a` is a constant
0xFFFFFFFF. I don't think the order actually affects correctness here,
but let's use the same order for all the cases since it makes the code
easier to reason about.
2023-02-14 19:16:00 +01:00
Admiral H. Curtiss 22ed084209
Merge pull request #11563 from JosJuice/host-lock-cpu-fixups
Follow-up fixes for "Properly lock CPU before accessing emulated memory"
2023-02-14 19:04:21 +01:00
JosJuice 5b6784432c Follow-up fixes for "Properly lock CPU before accessing emulated memory" 2023-02-14 18:44:16 +01:00
TellowKrinkle f25a0b43b6 VideoCommon: Fix stereoscopic 3D on OpenGL < 4.3 (macOS) 2023-02-14 18:25:33 +01:00
Pokechu22 4f6ce51d69 VideoCommon: Clear blend configuration if color/alpha update disabled
This works around an Intel driver bug where, on D3D12 only, dual-source blending behaves incorrectly if the second source is unused on. This bug is visible in skyboxes in Super Mario Sunshine, which first draw clouds and sun flare in greyscale and then draw the sky afterwards with a source factor of 1 and a dest factor of 1-src_color (this results in the clouds being tinted blue). This process is done on an RGB888 framebuffer, so alpha update is disabled. (Color update is enabled; note that if you look at this in Dolphin's fifo analyzer, it won't be enabled because they use the BP mask functionality to only change the blending functions and not alpha/color update, for whatever reason.)
2023-02-13 18:22:41 -08:00
Admiral H. Curtiss 5f929d00eb
Merge pull request #11560 from phire/EventHook_construct_on_first_use
HookableEvent: Switch to construct on first use
2023-02-14 01:01:03 +01:00
Admiral H. Curtiss 34a459bed7
Merge pull request #11445 from JosJuice/jit64-wraparound-backpatch
Jit64: Properly handle backpatching overflowed address calculations
2023-02-14 01:00:13 +01:00
Admiral H. Curtiss 3458c58c7d
Merge pull request #11503 from JosJuice/ppcanalyst-read-cr
PPCAnalyst: Actually check if instructions want CR
2023-02-14 00:55:24 +01:00
Admiral H. Curtiss e2d7b6d079
Merge pull request #11559 from Pokechu22/cache-fix-plru-updates
PPCCache: Update PLRU on any cache access
2023-02-14 00:50:54 +01:00
Admiral H. Curtiss 8f91cb62e6
Merge pull request #11426 from shuffle2/stdfs
fileutil: use std::filesystem
2023-02-14 00:50:34 +01:00
Admiral H. Curtiss e1dbea3658
JIT: Fix calls to HLE::Execute.
This got broken in 7cecb28bdf.
2023-02-13 11:47:47 +01:00
Scott Mansell 05181f6b88 HookableEvent: Switch to construct on first use
A registration might happen during static initialization, which opens
us up to issues with ordering of static initialization.
2023-02-13 18:48:43 +13:00
Scott Mansell 1fc5d37fd2
Merge pull request #11558 from Pokechu22/vertex-loader-size-assertion-details
VertexLoader: Add more info to m_vertex_size == m_src_ofs assertion
2023-02-13 17:34:04 +13:00
Pokechu22 cc411c4e41 VertexLoader: Add more info to m_vertex_size == m_src_ofs assertion 2023-02-12 20:10:38 -08:00
Pokechu22 14c4f4e7f6 PPCCache: Update PLRU on any cache access
The previous code only updated the PLRU on cache misses, which made it so that the least recently inserted cache block was evicted, instead of the least recently used/hit one.

This regressed in 9d39647f9e (part of #11183, but it was fine in e97d380437), although beforehand it was only implemented for the instruction cache, and the instruction cache hit extremely infrequently when the JIT or cached interpreter is in use, which generally keeps it from behaving correctly (the pure interpreter behaves correctly with it).

I'm not aware of any games that are affected by this, though I did not do extensive testing.
2023-02-12 19:59:19 -08:00
Scott Mansell a4729a026f
Merge pull request #11554 from JosJuice/host-lock-cpu
DolphinQt: Properly lock CPU before accessing emulated memory
2023-02-13 16:08:36 +13:00