Commit Graph

27386 Commits

Author SHA1 Message Date
Lioncash 2c9ec6cb8a VideoCommon/BoundingBox: Move PixelShaderManager::SetBoundingBoxActive() calls into Enable()/Disable()
Now that we have an actual interface to manage things, we can stop
duplicating the calls to to the pixel shader manager and remove the
need to remember to actually do so when disabling or enabling the
bounding box.
2019-12-05 11:57:58 -05:00
Lioncash 9bd533ebe4 VideoCommon/BoundingBox: Make interface for querying bounding box data
Rather than expose the bounding box members directly, we can instead
provide an interface for code to use. This makes it nicer to transition
from global data, as the interface function names are already in
place.
2019-12-05 11:48:42 -05:00
Lioncash 10f7674651 VideoCommon/IndexGenerator: Eliminate static state
Now that we've extracted all of the stateless functions that can be
hidden, it's time to make the index generator a regular class with
active data members.

This can just be a member that sits within the vertex manager base
class. By deglobalizing the state of the index generator we also get rid
of the wonky dual-initializing that was going on within the OpenGL
backend.

Since the renderer is always initialized before the vertex manager, we
now only call Init() once throughout the execution lifecycle.
2019-12-05 10:49:32 -05:00
Lioncash 159947ab68 VideoCommon/IndexGenerator: Make use of if constexpr
We can use if constexpr with the template functions that pass in a
non-type template parameter, allowing the removal of branches that
aren't taken at compile time.

Compilers will generally do this by default, however, we now give a
gentle prodding to the compiler if this would otherwise not be the case.
2019-12-05 10:49:32 -05:00
Lioncash fb3fda775f VideoCommon/IndexGenerator: Move stateless functions into anonymous namespace
These don't rely on any of the static members within the IndexGenerator
class, so we can make all of these functions fully internal to the
translation unit.
2019-12-05 10:49:29 -05:00
Lioncash 69f2ca2230 VideoCommon/IndexGenerator: Make use of anonymous namespace
More things will be moved into this in subsequent changes. While we're
at it, we can also make use of std::array.
2019-12-05 09:36:41 -05:00
Lioncash 1f46a6a64b VideoCommon/OpcodeDecoding: Make use of if constexpr
We can make use of if constexpr in several scenarios here to allow
compilers to exise the relevant code paths out.

Technically a decent compiler would do this already, but now we can give
compilers a little more nudging here in the event that isn't the case.
2019-12-05 09:13:06 -05:00
Lioncash 99353c3baa VideoCommon/OpcodeDecoding: Remove unused headers
Nothing provided by these headers are used, so we can remove them.
2019-12-05 09:13:06 -05:00
Lioncash 6339a5ea8e VideoCommon/OpcodeDecoding: Resolve implicit signedness conversion
cmd2 is a u32, so any bitwise arithmetic on it with a type of the same
size or smaller will result in a u32 value. This is also implicitly
converted to an unsigned type in the if statement as well, given that
size_t * int -> size_t.

This is just more explicit about the operations occurring and also
likely silences a sign conversion warning.
2019-12-05 09:13:06 -05:00
Lioncash 4710b82f43 VideoCommon/OpcodeDecoding: Remove use of goto in Run()
With the use of a lambda and a change in switch fallthrough, we can
completely eliminate the use of goto within Run().
2019-12-05 09:13:06 -05:00
Lioncash f74503cce0 VideoCommon/OpcodeDecoding: Make use of anonymous namespace
Provides a region for all internal utilities.
2019-12-05 09:13:06 -05:00
Lioncash 6b4e340995 VideoCommon/OpcodeDecoding: Amend comment formatting
Amends a documentation comment that acquired some wonky formatting
during the introduction of clang-format a few years ago.
2019-12-05 09:13:06 -05:00
Lioncash b2a9c36501 VideoCommon/OpcodeDecoding: Move g_bRecordFifoData into namespace
Keeps the global localized with the code that it's primarily related to.

Now it's obvious from a glance what the global variable is affecting.
2019-12-05 09:13:03 -05:00
Lioncash d8063e9c54 VideoCommon/OpcodeDecoding: Normalize variable naming
Provides consistent naming of variables within the translation unit.

While we're at it, we can mark them const where applicable.
2019-12-05 08:05:29 -05:00
Lioncash f29730944f VideoCommon/FramebufferShaderGen: Make use of std::ostringstream internally
We only use these string streams to output into a final std::string
instance, we don't read into types with them. Because of this, we can
just make use of std::ostringstream, rather than the fully-fledged
std::stringstream.
2019-12-05 00:18:00 -05:00
Lioncash fff445cc10 VideoCommon/FramebufferShaderGen: Make use of std::string_view where applicable
Prevents the use of the null pointer as an input to any functions.
2019-12-05 00:15:37 -05:00
Lioncash 3405815f09 VideoCommon/FramebufferShaderGen: Remove unused Config struct
This isn't used anywhere within the codebase, so it can be removed
entirely.
2019-12-04 23:54:15 -05:00
Lioncash 3a8d17c140 VideoCommon/FramebufferShaderGen: Use an anonymous namespace where applicable
Places all internal helpers and types within an anonymous namespace.
2019-12-04 23:51:26 -05:00
Lioncash eefd6a10f5 VideoCommon/FramebufferShaderGen: Add missing initial source file comments
Makes the source files consistent with the rest of the VideoCommon code.
2019-12-04 23:48:59 -05:00
Lioncash f8c90f0484 VideoCommon/FramebufferShaderGen: Collapse stream insertions
No behavioral change. This is intended to make the transition to fmt
less noisy in subsequent changes by combining insertions of multiple
string literals into one where applicable.
2019-12-04 23:45:15 -05:00
Lioncash 0f28f4049b VideoCommon/TextureConverterShaderGen: Convert over to fmt
Easily the most straightforward to convert over, given the lack of
significant formatting arguments.
2019-12-03 05:05:02 -05:00
Lioncash 8af6bfb8b0 VideoCommon/ShaderGenCommon: Add function for writing fmt-based strings
Begins the conversion of the shader generators over to using fmt
formatting specifiers.

This also has a benefit over the older StringFromFormat-based API in
that all formatted data is appended to the existing buffer rather than
creating a completely separate string and then appending it to the
internal string buffer.
2019-12-03 04:49:48 -05:00
Lioncash 474e210cd5 PPCCache: Make arrays constexpr where applicable
Two of these arrays were stored within the save state when the exact
same data is constructed all the time.

We can just build this into the binary rather than the save state,
shrinking a little bit of the save state's overall size.
2019-12-03 04:05:09 -05:00
Lioncash 1d5ce4708f PPCCache: Make use of std::array where applicable
Allows simplifying a bunch of initialization and filling code.
2019-12-03 04:05:05 -05:00
Connor McLaughlin 15fc71cfcf
Merge pull request #8498 from stenzek/update-vs2019
Update VS projects/solutions to VS2019
2019-12-03 13:03:49 +10:00
Stenzek 52e2e32193 Core: Only reset wiimotes in Wii mode
This was causing the FifoCI runners to crash, as the Wiimotes were not
initialized in the first place.
2019-11-30 15:41:38 +10:00
Stenzek 33c0abd1ab Disable warning C5054 on DolphinQt
They're all in the Qt headers, and quite noisy.
2019-11-30 13:42:52 +10:00
Stenzek dd23a1ee79 Update VS projects/solutions to VS2019 2019-11-30 13:42:52 +10:00
Anthony 4a0611df54
Merge pull request #8487 from lioncash/video-fmt
VideoCommon: Make use of fmt outside of shader generators
2019-11-28 15:03:23 -08:00
Anthony b5656df7e8
Merge pull request #8502 from lioncash/log
Common: Unify logging namespace with Common
2019-11-28 15:01:49 -08:00
OatmealDome ef32a10d69 InputCommon: Decouple ButtonManager and Touchscreen from Android
Changes were also made for codestyle compliance.
2019-11-28 15:20:51 -05:00
Lioncash c792961000 Common: Unify logging namespace with Common
Previously the logging was a in a little bit of a disarray. Some things
were in namespaces, and other things were not.

Given this code will feature a bit of restructuring during the
transition over to fmt, this is a good time to unify it under a single
namespace and also remove functions and types from the global namespace.

Now, all functions and types are under the Common::Log namespace. The
only outliers being, of course, the preprocessor macros.
2019-11-28 05:13:21 -05:00
Lioncash e33c366502 GCMemcard: Remove byteswapping macros
We can just specify the functions directly instead of relying on
preprocessor textual replacement.
2019-11-27 23:15:31 -05:00
Lioncash 1f1a02151e GCMemcard: Replace ByteSwap with std::swap
There's already a standard library function that does what this function
is doing.
2019-11-27 23:15:26 -05:00
Anthony c2c8a14966
Merge pull request #8348 from JosJuice/mmu-setting
Disable full MMU by default and add it to global config GUI
2019-11-27 16:04:40 -08:00
Anthony 9822a2d582
Merge pull request #8465 from CookiePLMonster/d3d-common-cleanup
D3DCommon: Cleanups and resource leak fix
2019-11-27 16:03:44 -08:00
Anthony 66ca83e6af
Merge pull request #8479 from nokturnusmf/master
Fixed #11874 (leading 0s ignored by debugger)
2019-11-27 15:57:54 -08:00
JosJuice 6e0130351e Android: Fix crash on enabling GC adapter
We must set Java_GCAdapter.manager before the GC adapter thread (C++)
starts. We used to set it at emulation start, which was fine until
9f3f45a made the GC adapter thread start much earlier.
2019-11-28 00:47:58 +01:00
Anthony 155016531f
Merge pull request #8439 from JosJuice/android-native-motion-controls
Android: Native motion controls
2019-11-27 15:40:43 -08:00
Anthony 34a1df1c68
Merge pull request #8493 from JosJuice/android-audio-volume
Android: Add audio volume setting
2019-11-27 15:36:54 -08:00
Anthony 8d814baf79
Merge pull request #8494 from JosJuice/android-checkbox-no-description
Android: Fix displaying checkbox settings with no description
2019-11-27 15:35:29 -08:00
Anthony e33acc07f9
Merge pull request #8332 from CookiePLMonster/dsp-lle-deadlock
DSPLLE: Put DSP thread in idle state when it's paused
2019-11-27 15:34:34 -08:00
Anthony 44f85bbc5e
Merge pull request #8496 from JosJuice/volumewii-check-decrypted-order
VolumeWii: Check SupportsReadWiiDecrypted before m_encrypted
2019-11-27 15:33:43 -08:00
Anthony f20c1c2f8d
Merge pull request #8499 from JosJuice/volumeverifier-super-paper-mario
VolumeVerifier: Detect broken Super Paper Mario
2019-11-27 15:31:05 -08:00
JosJuice 59633f5309 VolumeVerifier: Detect broken Super Paper Mario
https://bugs.dolphin-emu.org/issues/11900
2019-11-27 18:26:22 +01:00
JosJuice 9938585702 DolphinQt: Remove "Experimental" from "Export Wii Save"
It's pretty well tested at this point.
2019-11-27 17:23:58 +01:00
JosJuice cf8208ace9 Android: Add audio volume setting 2019-11-26 21:10:27 +01:00
JosJuice 23fc5f9e35 VolumeWii: Check SupportsReadWiiDecrypted before m_encrypted
Fixes using DirectoryBlob on extracted games that were unencrypted
prior to being extracted.

(One day I'll make DirectoryBlob actually support raw reads and then
the order of these two won't matter...)
2019-11-26 20:09:40 +01:00
JosJuice 70ee5234ba
Merge pull request #8188 from JosJuice/android-game-details
Android: Bring back and update the game details dialog
2019-11-25 11:31:37 +01:00
JosJuice 8339793918 Android: Fix displaying checkbox settings with no description
https://bugs.dolphin-emu.org/issues/11904
2019-11-25 00:14:40 +01:00
Scott Mansell ac77df9e90
Merge pull request #8490 from vadosnaprimer/dumping
2 minor dumping fixes
2019-11-25 10:38:44 +13:00
JosJuice 45ba745bc8
Merge pull request #8320 from CookiePLMonster/cpu-lock-yield-fix
Do not yield to UI from PauseAndLock
2019-11-24 20:12:04 +01:00
feos cb6a632c60 fix missing frame when you start another dump without closing dolphin 2019-11-24 18:02:38 +03:00
feos 15e6e7ddd2 figure out new segment on the fly right in FrameDump::Start() 2019-11-24 18:02:36 +03:00
Lioncash b28db1d4e6 UICommon: Make use of fmt where applicable
Continues the migration to using fmt.

Notably, this allows safely converting a map within USBUtils over to
containing string view instances, rather than std::string instances, as
fmt safely handles the formatting of string views.
2019-11-23 19:41:40 -05:00
Léo Lam ec895f544c
Merge pull request #8486 from lioncash/dualshock
InputCommon/DualShockUDPClient: Minor cleanup
2019-11-24 00:46:19 +01:00
Léo Lam 3a2d3aa9d2
Merge pull request #8488 from tinyredpanda/simplify-wstring-conversion
Simplify wstring to QString conversion
2019-11-24 00:17:32 +01:00
Lioncash 6fbbc2683e VideoCommon: Make use of fmt outside of shader generators
Migrates most of VideoCommon over to using fmt, with the exception being
the shader generator code. The shader generators are quite large and
have more corner cases to deal with in terms of conversion (shaders have
braces in them, so we need to make sure to escape them).

Because of the large amount of code that would need to be converted, the
conversion of VideoCommon will be in two parts:

- This change (which converts over the general case string formatting),
- A follow up change that will specifically deal with converting over
  the shader generators.
2019-11-23 16:00:45 -05:00
JosJuice 9639dde114 Address review comments on old code 2019-11-23 17:48:44 +01:00
JosJuice 8e2b12e1ea GameDetailsDialog: Use labels instead of icons 2019-11-23 17:48:44 +01:00
JosJuice 2e13353201 GameDetailsDialog: Convert layout to ConstraintLayout
This also removes the FAB from GameDetailsDialog. It was
previously outside of the visible area and thus unusable.
2019-11-23 17:48:43 +01:00
JosJuice 4f1511043c GameDetailsDialog: Fix banner placeholder 2019-11-23 17:48:43 +01:00
JosJuice ec91674d07 GameDetailsDialog: Show game ID and revision 2019-11-23 17:48:43 +01:00
JosJuice 84e616337d GameDetailsDialog: Remove the screenshot ImageView
It takes up a lot of space on the screen, and the functionality for
saving these screenshots isn't in Dolphin anymore as far as I can tell.
2019-11-23 17:48:43 +01:00
JosJuice 100e7e2b3d GameDetailsDialog: Hide description if empty
In particular, Wii games don't have descriptions.
2019-11-23 17:48:43 +01:00
JosJuice 100f032e2f GameDetailsDialog: Don't use CircleImageView for banners
Because trying to fit a 3:1 banner into a circle looks very awkward.

Also move the banner below the title/description now that it
takes up more space horizontally.
2019-11-23 17:48:42 +01:00
JosJuice fcb96a179d GameDetailsDialog: Actually load the banner 2019-11-23 17:48:42 +01:00
JosJuice c2952c466f Bring back game banner loading code deleted in 3f21975 2019-11-23 17:48:42 +01:00
JosJuice 5ed0cf8e0e Rename GameSettingsDialog to GamePropertiesDialog
Since it no longer only contains settings.
2019-11-23 17:48:42 +01:00
JosJuice 00c4dad784 Android: Bring back the game details dialog
It was made inaccessible in e19922c (I'm not sure why)
and then removed by 593b697.
2019-11-23 17:48:41 +01:00
JosJuice 870912722e Revert "Android: Remove dead code and related lib <circleimageview>"
This reverts commit 593b69728d.
2019-11-23 17:35:19 +01:00
JosJuice 4305a9ac57
Merge pull request #8482 from rafaeltoledo/rt/material-fix
Moves AlertDialogs imports to AndroidX and fix tabs background color
2019-11-23 16:56:39 +01:00
tinyredpanda fe9e7d5578 Prefer MessageBoxW to MessageBoxA 2019-11-23 13:56:05 +00:00
Rafael Toledo 8453277479 Moves `AlertDialog`s imports to AndroidX and fix tabs background color 2019-11-23 10:50:12 -03:00
tinyredpanda 5dbabef355 Simplify wstring to QString conversion 2019-11-23 13:23:46 +00:00
Lioncash 334e2768f5 InputCommon/DualShockUDPClient: Use an alias for the clock type
Makes code slightly less verbose without exposing the whole chrono
header to the current source file.
2019-11-22 17:06:10 -05:00
Lioncash db9e592765 InputCommon/DualShockUDPClient: Use deduction guides for lock_guard
With C++17, we can use template deduction guides provided by the
standard library. This allows the omission of the mutex type itself.
2019-11-22 17:06:10 -05:00
Lioncash 278d03f737 InputCommon/DualShockUDPClient: Make use of std::array where applicable
Provides the same semantics of a C array, but is much nicer to work
with.

Notably, it makes all cases of performing comparisons with said arrays
significantly less reading-involved.
2019-11-22 17:06:07 -05:00
Silent 5be9505ab3
Signal DSP thread after unlocking DSP mutex 2019-11-22 23:00:42 +01:00
JosJuice a06da596e5
Merge pull request #8485 from lioncash/imu
InputCommon/IMU*: Remove unnecessary includes
2019-11-22 22:31:57 +01:00
JosJuice af37d09b0f
Merge pull request #8484 from lioncash/input-func
InputCommon/FunctionExpression: Minor cleanup
2019-11-22 22:31:31 +01:00
Silent e30ff7c327
DSPLLE: Put DSP thread in idle state if it's paused to prevent a deadlock
DSP thread is considered "idle" when it signals s_ppc_event and waits for s_dsp_event,
without putting it in this state when m_dsp_thread_mutex is locked it was possible to
create a deadlock between a DSP thread, emulation thread and Qt thread by accessing
Config menu immediately after booting up the game
2019-11-22 22:07:41 +01:00
Lioncash 67097b4574 InputCommon/DualShockUDPClient: Relocate settings to top of source file
This is a small namespace, so we can move it to the top of the file to
get it out of the way of everything else.
2019-11-22 15:56:29 -05:00
Lioncash 4488719a76 InputCommon/DualShockUDPClient: In-class initialize members where applicable
Deduplicates members within the constructor's initializer list.
2019-11-22 15:56:29 -05:00
Lioncash 544d6cbe52 InputCommon/DualShockUDPClient: Add missing header guard
Prevents potential inclusion issues from occurring.
2019-11-22 15:56:26 -05:00
Lioncash 91993b46d9 InputCommon/IMU*: Remove unnecessary includes
Trims out unnecessary includes to avoid unnecessary header dependencies.

This also resolves indirect inclusions of <optional> within
IMUAccelerometer.h and IMUGyroscope.h
2019-11-22 15:41:38 -05:00
Lioncash 814fd165af InputCommon/FunctionExpression: Use Yoda conditions, we do not
The general convention in the codebase is to compare the non-constant
value/string with the constant value/string, not the other way around.
2019-11-22 15:36:18 -05:00
Lioncash 1f6077922b InputCommon/FunctionExpression: Remove unnecessary 'else' in MakeFunctionExpression()
Given all conditional bodies only contain a return, the use of else here
isn't necessary.

This has the benefit of consistently vertically aligning the names.
2019-11-22 15:36:18 -05:00
Lioncash 10fea99d80 InputCommon/FunctionExpression: Make MakeFunctionExpression() take a std::string_view
There's nothing within this function that requires a copy of the string
to be made, so we can make use of a non-owning view
2019-11-22 15:36:18 -05:00
Lioncash ddf8abf507 InputCommon/FunctionExpression: Remove unused LOOP_MAX_REPS constant
This isn't used anywhere in the translation unit, so we can remove it.
2019-11-22 15:36:18 -05:00
Lioncash 64bc6f53fd InputCommon/FunctionExpression: Remove cyclical include
This header was including itself, which is likely not intended.
2019-11-22 15:36:18 -05:00
Lioncash cb8fbe872e InputCommon/FunctionExpression: Collapse namespaces
Since we target C++17, we can collapse the namespaces into a single
declaration specifier.
2019-11-22 15:36:14 -05:00
Lioncash 6586ecc7a8 InputCommon/FunctionExpression: include <algorithm>
std::min/std::max are used within this translation unit, so it needs to
be included to prevent potential compilation failures.
2019-11-22 14:41:13 -05:00
Lioncash e8edc49bbe InputCommon: Make use of fmt where applicable
Continues the migration over to fmt
2019-11-22 14:38:26 -05:00
Matthew Foulds 5b6e7aabcf Fixed 11874 (leading 0s ignored by debugger) 2019-11-22 19:16:34 +00:00
Mat M bc449fb98f
Merge pull request #8480 from JosJuice/volumeverifier-block-future
VolumeVerifier: Fix a copypaste error
2019-11-22 11:42:50 -05:00
Rafael Toledo 2d1f32efb4 Bumps compile API to 29 (Q) removes unecessary casts and deprecated
calls
2019-11-22 13:17:37 -03:00
JosJuice 4e713238d9 VolumeVerifier: Fix a copypaste error
This was completely wrong, but I guess it happened to work correctly
anyway due to timing reasons (MD5 is faster than SHA-1 + AES).
2019-11-22 13:39:04 +01:00
JosJuice 2d4a3f4597 Android: Add an option for disabling native motion controls 2019-11-20 23:21:06 +01:00
JosJuice a9cf8670e0
Merge pull request #8224 from Pokechu22/wiimote-eeprom
Write the entirety of the Wiimote EEPROM, in a per-Wiimote file
2019-11-20 22:03:53 +01:00