Commit Graph

31834 Commits

Author SHA1 Message Date
Sintendo 8e7b6f4178 Jit64: addx - Prefer ADD over LEA when possible
The old logic would always emit LEA when both sources are in a register
and OE is disabled. However, ADD is still preferable when one of the
sources matches the destination.

Before:
45 8D 6C 35 00       lea         r13d,[r13+rsi]

After:
44 03 EE             add         r13d,esi
2020-01-05 23:23:56 +01:00
Pierre Bourdon 7a6a4510f6
Merge pull request #8362 from GerbilSoft/feature/string-optimizations.2019-09-11
Various string and other optimizations
2019-12-30 10:59:14 +01:00
David Korth 11339d77c6 IsSettingSaveable.cpp: Significant code size reduction.
- Refactor the Config::System::Main check so we check system once,
  then we check for the section.

- Use an std::array<> instead of std::vector<>.

- Use an array of pointers instead of an array of ConfigLocation.
  The latter contains two std::string objects, whereas pointers
  are only 8 bytes (on 64-bit).

Code size comparison: (64-bit Linux, gcc-9.2.0, release build)

   text    data     bss     dec     hex filename
  16136       0      40   16176    3f30 IsSettingSaveable.cpp.o [before]
   3933     720       0    4653    122d IsSettingSaveable.cpp.o [after]
 -12203    +720     -40  -11523   -2d03 Difference
2019-12-29 23:45:02 -05:00
David Korth f5fe692842 Use pre-increment for iterators instead of post-increment.
Pre-increment is more efficient, since it doesn't have to return the
old iterator.
2019-12-29 23:45:02 -05:00
David Korth c2dd2e8a2e Use std::istringstream or std::ostringstream instead of std::stringstream where possible.
This removes std::iostream from the inheritance chain, which reduces
overhead slightly.
2019-12-29 23:45:02 -05:00
David Korth 6e549bb668 InputConfig::LoadConfig(): Convert num[] to an array of std::string_view.
NOTE: The explicit std::string() conversions later are needed. Otherwise,
gcc-9.2.0 throws all sorts of errors because it can't find a matching
operator+() function.
2019-12-29 23:45:02 -05:00
David Korth a23b3d26f4 GLExtensions.cpp: Use arrays of `const char *const` instead of `std::string`.
The strings end up being copied, so we might as well initialize the
std::string in the unordered_map directly.
2019-12-29 23:45:02 -05:00
David Korth 05101b251c OGL/Render.cpp, InitDriverInfo(): Use std::string_view to eliminate string copies.
Consolidate the NVIDIA Tegra and non-Tegra checks into one branch.
2019-12-29 23:45:02 -05:00
David Korth 1d7f128693 GetSysMenuVersionString(): Use a char instead of std::string for the region letter.
Append the region letter after determining the version number.
2019-12-29 23:45:02 -05:00
David Korth 9f3b9acad9 PowerPC.cpp: No need to explicitly initialize ppcState.
"ppcState{}" is stored in the .data segment, which means the full ~4 MB
is stored in the executable.

"ppcState" is stored in the .bss segment, which means it only stores a
note that tells it to allocate and zero ~4 MB at runtime.
2019-12-29 23:45:02 -05:00
David Korth afe2e7de0f VolumeVerifier.cpp: Verify that the string arrays are sorted before using std::binary_sort().
Debug builds only, since this is wrapped in assert().
2019-12-29 23:42:55 -05:00
David Korth d660aba20f VolumeVerifier.cpp: Use arrays of string_view objects instead of strings.
string_view is a thin wrapper around C strings, so it's more efficient
for constant strings than C++ strings.

The unordered_set<> also adds extra runtime overhead. For small arrays,
a simple linear search works. For larger arrays, std::binary_search()
works better than linear but without the unordered_set<> overhead.

ShouldBeDualLayer(): Removed a duplicate "SK8X52" entry.
2019-12-29 23:42:55 -05:00
Connor McLaughlin 084344aa5d
Merge pull request #8495 from stenzek/windows-arm64
Platform support for Windows-on-ARM64
2019-12-28 19:27:47 +10:00
Stenzek d744c5a148 Compile fixes for Windows-on-ARM64 2019-12-28 19:20:41 +10:00
Stenzek 6fcb1c6c46 Add an ARM64 target to Visual Studio projects 2019-12-28 19:20:41 +10:00
Stenzek 5a65031611 Add a Win32 NoGUI platform and project 2019-12-28 08:56:27 +10:00
Anthony 0755f92979
Merge pull request #8534 from JosJuice/netplay-index-empty-strings
Properly check for missing netplay session name/region
2019-12-25 21:52:22 -08:00
Pierre Bourdon 0341288af2
Merge pull request #8525 from Techjar/axwii-ub
HW/DSPHLE: Fix struct aliasing undefined behavior in AX ucode
2019-12-24 08:35:28 +01:00
JosJuice 0c12dbe860 DolphinQt: Properly save netplay session settings when changed 2019-12-23 23:14:13 +01:00
JosJuice 8e278b8053 Check presence of name and region in NetPlayServer 2019-12-23 23:14:13 +01:00
JosJuice 2fa4ef729f DolphinQt: Check presence of region in NetPlaySetupDialog 2019-12-23 23:14:13 +01:00
Pierre Bourdon 02680ef7bb
Merge pull request #8533 from delroth/notice-logs
DualShockUDPClient: downgrade spurious NOTICE_LOGs
2019-12-23 18:50:03 +01:00
Pierre Bourdon 5c996dec89
DualShockUDPClient: downgrade spurious NOTICE_LOGs 2019-12-23 18:36:18 +01:00
Techjar eae959238e HW/DSPHLE: Fix struct aliasing undefined behavior in AX ucode
This fixes Old AX Wii games having no audio when compiled under VS2019.
This also includes some minor code cleanup and moving a function to
avoid duplication.
2019-12-22 14:48:47 -05:00
Techjar 79092cdda0 Common/BitUtils: Implement BitCast(To|From)Array 2019-12-22 14:48:47 -05:00
Connor McLaughlin 8a50d9c540
Merge pull request #8522 from stenzek/fifoci-ffmpeg
FrameDump: Set first_frame if movie frame number <= 1
2019-12-22 12:11:03 +10:00
Stenzek 6a0067fd26 FrameDump: Set first_frame if movie frame number <= 1
The frame number is incremented before the first frame is swapped out.

Fixes ffmpeg creating invalid video files on output if the emulator only
runs for a single frame, e.g. FifoCI.
2019-12-22 11:54:34 +10:00
JosJuice 10e98d0985 Translation resources sync with Transifex 2019-12-21 12:13:24 +01:00
Mat M eea4e4385e
Merge pull request #8528 from CaseyCarter/includes
Include <memory> for std::unique_ptr in DXContext.h
2019-12-19 17:29:43 -05:00
Casey Carter 222bc6a443 Include <memory> for std::unique_ptr in DXContext.h 2019-12-19 14:25:12 -08:00
Connor McLaughlin 74dedc57fd
Merge pull request #8519 from JosJuice/setupwiimemory-region-override
Boot: Optionally allow preserving region settings in setting.txt
2019-12-19 20:47:56 +10:00
Connor McLaughlin 6f5d770bdd
Merge pull request #8524 from shuffle2/update-externals
Update externals
2019-12-19 20:41:49 +10:00
Connor McLaughlin 90223de536
Merge pull request #8526 from shuffle2/remove-x86
remove x86 targets from sln
2019-12-19 20:07:43 +10:00
Shawn Hoffman d9c4bf499f remove x86 targets from sln 2019-12-19 00:43:48 -08:00
Shawn Hoffman 392fc1dcdc update the rapidjson used by discord-rpc to current master dfbe1db9da455552f7a9ad5d2aea17dd9d832ac1 2019-12-18 22:20:11 -08:00
Shawn Hoffman e3a30fbdf2 update minilzo to 2.10 2019-12-18 22:20:11 -08:00
Léo Lam 3cf2857aac
Merge pull request #8520 from lioncash/analyst-tidy
PowerPC/PPCAnalyst: Remove unimplemented LogFunctionCall prototype
2019-12-15 12:07:38 +01:00
Lioncash 7c12081693 PowerPC/PPCAnalyst: Remove unimplemented LogFunctionCall prototype
This doesn't have an implementation, so it can be removed.
2019-12-15 00:23:32 -05:00
JosJuice 208c6a3011 Boot: Optionally allow preserving region settings in setting.txt
See the discussion in https://bugs.dolphin-emu.org/issues/11930.
(This probably doesn't really fix that issue, but it's something
I thought would make sense anyway.)
2019-12-14 19:03:20 +01:00
Léo Lam ad5ad7c0c4
Merge pull request #8515 from Simonx22/gradle-353
Android: update to Gradle 3.5.3
2019-12-14 16:26:20 +01:00
Léo Lam 6cd2f5a76d
Merge pull request #8501 from lioncash/byteswap
GCMemcard: Remove byteswapping functions and macros
2019-12-14 14:28:01 +01:00
Léo Lam 49fcc71565
Merge pull request #8506 from lioncash/cache
PPCCache: Make arrays constexpr where applicable
2019-12-14 14:25:06 +01:00
Connor McLaughlin a980a39807
Merge pull request #8518 from stenzek/more-wiimote-reset-crashes
Core: Reset Wiimotes/rumble/memwatcher on emu thread
2019-12-13 13:44:22 +10:00
spycrab 0cb3257d3f
Merge pull request #8435 from firodj/pr-fix-macos-qt-plugin-cocoa
DolphinQt: Fix qt.qpa.plugin on MacOS
2019-12-10 17:41:02 +01:00
Stenzek e5485ca499 Core: Reset wiimotes/rumble on emu thread instead of main thread
This was causing a race which was crashing the FifoCI runners. The main
thread called Stop() which in turn called ResetAllWiimotes() while the
emu thread was still exiting, also shutting down the Wiimote class.

By shifting the reset to the emu thread, all cleanup operations happen
on the same thread where they were initialized.
2019-12-09 20:07:00 +10:00
Stenzek c602cb2e2f Core: Reset memory watcher on same thread which allocates it 2019-12-09 20:06:14 +10:00
Connor McLaughlin 6f274092b6
Merge pull request #8517 from stenzek/fix-vulkan-d3d12
Fix Vulkan and D3D12 video backends crashing on boot
2019-12-09 19:47:34 +10:00
Stenzek e05bc33899 Vulkan: Call VertexManagerBase initialize 2019-12-09 19:16:15 +10:00
Stenzek 07c43b192f D3D12: Call VertexManagerBase initialize 2019-12-09 19:16:04 +10:00
Anthony a21fb96638
Merge pull request #8516 from JosJuice/scrub-unencrypted-again
Fix scrubbing unencrypted Wii disc images (for real this time)
2019-12-08 12:25:16 -08:00