Commit Graph

29862 Commits

Author SHA1 Message Date
JosJuice
9db0ebd4b6 PowerPC: Set host CPU rounding mode on init and savestate
Not doing this can cause desyncs when TASing. (I don't know
how common such desyncs would be, though. For games that
don't change rounding modes, they shouldn't be a problem.)
2021-06-10 20:12:15 +02:00
JMC47
8f9bb5612a
Merge pull request #9798 from JosJuice/android-wad-crash
Android: Fix WAD import crashing
2021-06-07 17:32:23 -04:00
JosJuice
d42cec0d19 Android: Fix WAD import crashing
progressMessage can have the invalid value of 0. That
progressMessage was being used for the thread name was
a typo anyway – it's supposed to use progressTitle.
2021-06-07 23:09:29 +02:00
Léo Lam
edc18e60ad
Merge pull request #9785 from Dentomologist/fix_gamelist_grid_zoom_in
GameList: Fix grid mode zoom keybind inconsistency
2021-06-07 14:00:21 +02:00
Léo Lam
5e371bb4be
Merge pull request #9792 from sepalani/lint
Lint: End of namespace
2021-06-07 12:16:08 +02:00
Sepalani
ce8004c9c1 Lint: End of namespace 2021-06-07 12:55:52 +04:00
Filoppi
83ea16f402 Qt: Fix IOWindow keeping a shared ptr to devices even after them being removed by the ControllerInterface
this prevented some devices from being recreated correctly, as they were exclusive (e.g. DInput Joysticks)

This is achieved by calling Settings::ReleaseDevices(), which releases all the UI devices shared ptrs.
If we are the host (Qt) thread, DevicesChanged() is now called in line, to avoid devices being hanged onto by the UI.
For this, I had to add a method to check whether we are the Host Thread to Qt.

Avoid calling ControllerInterface::RefreshDevices() from the CPU thread if the emulation is running
and we manually refresh devices from Qt, as that is not necessary anymore.

Refactored the way IOWindow lists devices to make it clearer and hold onto disconnected devices.
There were so many issues with the previous code:
-Devices changes would not be reflected until the window was re-opened
-If there was no default device, it would fail to select the device at index 0
-It could have crashed if we had 0 devices
-The default device was not highlighted as such
2021-06-07 11:48:30 +03:00
Filoppi
a77e3b4a9b InputCommon: Make Wiimote rumble variable thread safe 2021-06-07 11:48:30 +03:00
Filoppi
08f8c27927 ControllerInterface: fix DSU thread safety and use PlatformPopulateDevices() 2021-06-07 11:48:29 +03:00
Filoppi
8b53af9cbc ControllerInterface: polish DInput Keyboard and Mouse (add comments and logs)
Also fix the cursor axis not being updated when the mouse device had failed aquiring,
despite them being completely unrelated
2021-06-07 11:07:06 +03:00
Filoppi
038b57fecc ControllerInterface: DInput Joystick fix non thread safe static variable
also fix devices being added to its own custom list of devices even when rejected by the CI
2021-06-07 11:07:06 +03:00
Filoppi
a0ecca1a84 ControllerInterface: Implement ChangeWindow on DInput without recreating the devices
Also polished DInput code in general to try and mitigate issue 11702.
Added a lot of logging and comments.
2021-06-07 11:07:06 +03:00
Filoppi
dcc345400e ControllerInterface: devices population is now async so implement devices sorting priority
This helps us keeping the most important devices (e.g. Mouse and Keyboard) on the top
of the list of devices (they still are on all OSes supported by dolphin
and to make hotplug devices like DSU appear at the bottom.
2021-06-07 11:07:06 +03:00
Filoppi
0718cfd7d7 ControllerInterface: make evdev use PlatformPopulateDevices
Also fix evdev non thread safe acces to static variables
2021-06-07 11:07:06 +03:00
Filoppi
2aa941081e ControllerInterface: make SDL use PlatformPopulateDevices()
and avoid waiting on SDL async population being finished for no reason
2021-06-07 11:07:06 +03:00
Filoppi
1d816f8f26 ControllerInterface: make real Wiimote use PlatformPopulateDevices() 2021-06-07 11:07:06 +03:00
Filoppi
c238e49119 ControllerInterface: Remove OSX window handle
also make it more thread safe (avoid rare deadlock)
and fix it trying to add devices before the CI has init
2021-06-07 11:07:05 +03:00
Filoppi
2376aec135 ControllerInterface: Refactor
-Fix Add/Remove/Refresh device safety, devices could be added and removed at the same time, causing missing or duplicated devices (rare but possible)
-Fix other devices population race conditions in ControllerInterface
-Avoid re-creating all devices when dolphin is being shut down
-Avoid re-creating devices when the render window handle has changed (just the relevantr ones now)
-Avoid sending Devices Changed events if devices haven't actually changed
-Made most devices populations will be made async, to increase performance and avoid hanging the host or CPU thread on manual devices refresh
2021-06-07 11:07:05 +03:00
Filoppi
f90d851e25 ControllerInterface: mixed comments 2021-06-07 11:07:05 +03:00
Filoppi
c285ae57fb ControllerInterface: fix rare deadlock
A "devices changed" callback could have ended up waiting on another thread that was also populating devices
and waiting on the previous thread to release the callbacks mutex.
2021-06-07 11:07:05 +03:00
JMC47
ebe3fbe04c
Merge pull request #9771 from Filoppi/dsu_fixes
DSU improvements
2021-06-07 03:50:50 -04:00
Léo Lam
a208d529de
Merge pull request #9790 from AdmiralCurtiss/cheat-manager-config-change
CheatsManager: Avoid recreating child widgets on every OnStateChanged(), and take running game info directly from SConfig.
2021-06-07 02:37:11 +02:00
JosJuice
4ef4ac41d1 JitArm64: Fix clobbering LR in FakeLKExit
Fixes Need for Speed: Carbon accessing invalid memory when
branch following and BLR optimization are enabled simultaneously.
2021-06-06 22:43:57 +02:00
Admiral H. Curtiss
441d304317 CheatsManager: Use game information directly from SConfig, and only recreate widgets if game changes. 2021-06-06 21:56:34 +02:00
Admiral H. Curtiss
414e0f4598 GeckoCodeWidget: Take game ID and revision directly instead of through GameFile. 2021-06-06 21:25:37 +02:00
Admiral H. Curtiss
1fbe56210a ARCodeWidget: Take game ID and revision directly instead of through GameFile. 2021-06-06 21:23:17 +02:00
Léo Lam
684d09b342
Merge pull request #9789 from AdmiralCurtiss/netplay-efb-access-tile-size-bool
NetPlay: Sync the EFB access tile size as an integer instead of a boolean.
2021-06-06 19:20:38 +02:00
Admiral H. Curtiss
9fd16a93c5 NetPlay: Sync the EFB access tile size as an integer instead of a boolean. 2021-06-06 19:02:07 +02:00
Dentomologist
7a6098a7f6 GameList: Fix grid mode zoom keybind inconsistency
Add keybind to make 'control plus' zoom in as per convention, and also
'control shift minus' zoom out to maintain consistency.
2021-06-06 09:21:41 -07:00
Tilka
8139967768
Merge pull request #9787 from JosJuice/jitarm64-slwx-top
JitArm64: Discard top 32 bits in slwx result
2021-06-06 08:46:16 +01:00
Mai M
5470aceb63
Merge pull request #9786 from Tilka/dsp
DSP: small cleanup
2021-06-06 00:48:28 -04:00
Tilka
89af7b82f2
Merge pull request #9770 from JosJuice/jits-accidental-gt
Jits: Fix accidentally setting GT in CR when clearing EQ
2021-06-06 05:17:25 +01:00
Tilka
6c0180fc61
Merge pull request #9748 from JosJuice/fma-accuracy
Interpreter/Jit64: Emulate FMA accurately in more cases
2021-06-06 02:29:42 +01:00
Tillmann Karras
f2c4041d39 DSPHLE: remove unused function 2021-06-06 01:09:30 +01:00
Tillmann Karras
a13df9b251 DSP: use CR_* enum values 2021-06-06 01:08:45 +01:00
JosJuice
86de3df072 JitArm64: Discard top 32 bits in slwx result
srwx would like to be able to assume that the top 32 bits
are zero, and cmpl is already doing so.
2021-06-05 23:15:08 +02:00
JosJuice
acc7d3710d
Merge pull request #9780 from Techjar/freelook-config-fix
Common/FileUtil: Add some missing configs to D_CONFIG_IDX
2021-06-05 13:40:37 +02:00
Techjar
7111d11161 Common/FileUtil: Add some missing configs to D_CONFIG_IDX 2021-06-05 07:34:36 -04:00
JMC47
638909aec6
Merge pull request #9751 from JosJuice/jitarm64-fcmpx-ftz
JitArm64: Make fcmpX with flush-to-zero enabled less bad
2021-06-05 05:27:52 -04:00
Techjar
83d55704aa VideoCommon: Round bounding box coordinates down and remove pixel center offset
Fragment coordinates always have a 0.5 offset from a whole integer, as
that's where the pixel center is on modern GPUs. Therefore, we want to
always round the fragment coordinates down for bounding box
calculations. This also renders the pixel center offset useless, as 0.5
vs ~0.5833333 makes no difference when rounding down.
2021-06-05 00:34:10 -04:00
Shawn Hoffman
4ce22c093c msvc: remove workarounds for old compiler issues 2021-06-03 18:33:24 -07:00
Shawn Hoffman
d8cc419eb3 msvc: remove some unneeded warning disable
this was either for libusb.h or some now-removed code.
2021-06-03 16:32:54 -07:00
Shawn Hoffman
d19d2ce2bd msvc: use external header feature solution-wide
Add external include paths to ExternalIncludePath instead of
AdditionalIncludeDirectories. msbuild appends these paths to
EXTERNAL_INCLUDE env var, which is passed to /external:env:.

Specify /external:W0 and /external:templates-, with override for
DolphinQt for the template flag, since Qt 5.15.0 causes some warnings
in qmap.h
2021-06-03 15:42:23 -07:00
JosJuice
b6cc3c4b6e JitArm64: Make fcmpX with flush-to-zero enabled less bad
See the added code comment for details. Fixes Pokémon Battle
Revolution not progressing past the title screen.
2021-06-02 20:15:33 +02:00
JosJuice
21ebc176fe JitArm64: Set FPCR.AH
Only tested on a CPU which does not support FEAT_AFP.
2021-06-02 20:15:24 +02:00
Dentomologist
99ed43280d Updater: Escape HTML characters in commit descriptions 2021-06-01 17:22:19 -07:00
JMC47
a12865570d
Merge pull request #9764 from Pokechu22/amd-opengl-bbox-fix
VideoCommon: Fix bounding box on AMD/OpenGL/Windows
2021-06-01 19:55:54 -04:00
Léo Lam
8dc87ef698
Merge pull request #9752 from JosJuice/android-unit-tests-off
Android: Disable building unit tests by default
2021-06-02 01:04:40 +02:00
Techjar
8cfe49295f VideoCommon: Add fallback handling for bounding box when disabled or unsupported
The SDK seems to write "default" bounding box values before every draw
(1023 0 1023 0 are the only values encountered so far, which happen to
be the extents allowed by the BP registers) to reset the registers for
comparison in the pixel engine, and presumably to detect whether GX has
updated the registers with real values. Handling these writes and
returning them on read when bounding box emulation is disabled or
unsupported, even without computing real values from rendering, seems
to prevent games from corrupting memory or crashing.

This obviously does not fix any effects that rely on bounding box
emulation, but having the game not clobber its own code/data or just
outright crash is a definite improvement.
2021-05-31 19:56:24 -04:00
Pokechu22
c58837964f VideoCommon: Fix bounding box on AMD/OpenGL/Windows
Co-authored-by: Techjar <tecknojar@gmail.com>
2021-05-31 16:22:50 -07:00