Commit Graph

34522 Commits

Author SHA1 Message Date
JosJuice 58f247290f Use latest resolution value for resolution hotkey OSD
Because CPU thread config changed callbacks are no longer instant,
g_Config.iEFBScale doesn't yet contain the new value when the hotkey OSD
code tries to read it.

Should fix https://bugs.dolphin-emu.org/issues/13343.
2023-08-27 15:38:00 +02:00
JosJuice 7ac0db70c6
Merge pull request #12086 from krnlyng/jitcompilerPCload
JitArm64: Avoid loading compilerPC multiple times if it's already in a register.
2023-08-27 10:05:11 +02:00
iwubcode f982c556b5 VideoCommon: add additional texture sampler types to ShaderAsset 2023-08-26 12:12:37 -05:00
JosJuice f9959656e7
Merge pull request #11919 from t895/kotlin-controls
Android: Convert "features.input" package to Kotlin
2023-08-26 19:10:56 +02:00
Frajo Haider 7daa19f40d JitArm64: Avoid loading compilerPC multiple times if it's already in a register. 2023-08-26 18:14:07 +03:00
JosJuice 85281e76ee Jit: Remove unnecessary member variables 2023-08-26 17:05:04 +02:00
JosJuice 07d70db46b DolphinQt: Allow toggling most JIT debug settings at any time
There's no reason not to allow this now that these settings are
cleanly integrated into the new config system. (Actually, maybe
we could even have done this before the previous commit...)
2023-08-26 17:05:04 +02:00
JosJuice 28e8117b90 Jit: Automatically clear cache when JIT settings are updated
This fixes a problem where changing the JIT debug settings on
Android while a game was running wouldn't cause the changed settings
to apply to code blocks that already had been compiled.
2023-08-26 17:04:56 +02:00
JosJuice cd31da97d6
Merge pull request #11191 from JosJuice/jitarm64-no-checked-entry
JitArm64: Never check downcount on block entry
2023-08-26 17:00:08 +02:00
Admiral H. Curtiss 799ce0dc9d
Merge pull request #12097 from Dentomologist/ios_remove_unused_member_variables
IOS: Remove unused member variable from SharedContentMap and UIDSys
2023-08-26 16:41:45 +02:00
Admiral H. Curtiss 2502e412b3
Merge pull request #12117 from JosJuice/config-callback-cpu
Don't call RunAsCPUThread in config callbacks
2023-08-26 16:34:46 +02:00
Admiral H. Curtiss d8e35438bd
Merge pull request #12127 from sepalani/ascii_
MemoryViewWidget: Fix some characters being truncated
2023-08-26 14:56:26 +02:00
Admiral H. Curtiss 65a9be581f
Merge pull request #12121 from JosJuice/discscrubber-volume-ptr
DiscIO: Don't keep volume pointer in DiscScrubber
2023-08-26 14:31:15 +02:00
Admiral H. Curtiss dec2990053
Merge pull request #12128 from Dentomologist/gcc_suppress_ppcstate_off_warning_spam
GCC: Suppress PPCSTATE_OFF invalid-offsetof warnings
2023-08-26 14:22:04 +02:00
Admiral H. Curtiss e876045e56
Merge pull request #12135 from Dentomologist/jitarm64_resolve_deprecated_enum_conversion_warning
JitArm64: Resolve deprecated enum conversion warning
2023-08-26 14:18:58 +02:00
Admiral H. Curtiss 5c4671f573
Merge pull request #12126 from JosJuice/small-vector
Move SmallVector to Common
2023-08-26 14:15:18 +02:00
Charles Lombardo 6a19629fc6 Android: Convert TvSettingsItem to Kotlin 2023-08-25 14:54:17 -04:00
Charles Lombardo ed9467dc1b Android: Convert HomeScreenChannel to Kotlin 2023-08-25 14:54:17 -04:00
Charles Lombardo 09c2c6541d Android: Convert GameFileCache to Kotlin 2023-08-25 14:54:17 -04:00
Charles Lombardo a56ee1a62e Android: Convert GameFile to Kotlin 2023-08-25 14:54:16 -04:00
Charles Lombardo 0e3b33d901 Android: Convert InputMappingControlSettingViewHolder to Kotlin 2023-08-25 14:20:33 -04:00
Charles Lombardo 6caa4307ac Android: Convert ProfileViewHolder to Kotlin 2023-08-25 14:20:33 -04:00
Charles Lombardo 29e5c78541 Android: Convert ProfileDialogPresenter to Kotlin 2023-08-25 14:20:33 -04:00
Charles Lombardo 6ad18e4ee5 Android: Convert ProfileAdapter to Kotlin 2023-08-25 14:20:33 -04:00
Charles Lombardo dfafa74ba1 Android: Convert MotionAlertDialog to Kotlin 2023-08-25 14:20:33 -04:00
Charles Lombardo 5171290bdb Android: Convert AdvancedMappingDialog to Kotlin 2023-08-25 14:20:33 -04:00
Charles Lombardo d049be0cad Android: Convert AdvancedMappingControlViewHolder to Kotlin 2023-08-25 14:20:33 -04:00
Charles Lombardo dac7035119 Android: Convert AdvancedMappingControlAdapter to Kotlin 2023-08-25 14:20:33 -04:00
Charles Lombardo d21b2d86a8 Android: Convert InputMappingControlSetting to Kotlin 2023-08-25 14:20:33 -04:00
Charles Lombardo 9d7bd6e6bd Android: Convert InputDeviceSetting to Kotlin 2023-08-25 14:20:32 -04:00
Charles Lombardo 2590382871 Android: Convert MappingCommon to Kotlin 2023-08-25 14:20:32 -04:00
Charles Lombardo f8ab65bcac Android: Convert InputOverrider to Kotlin 2023-08-25 14:20:32 -04:00
Charles Lombardo cb9c670d85 Android: Convert InputMappingIntSetting to Kotlin 2023-08-25 14:20:32 -04:00
Charles Lombardo 60b3b1231b Android: Convert InputMappingDoubleSetting to Kotlin 2023-08-25 14:20:32 -04:00
Charles Lombardo b2e2c3b8d4 Android: Convert InputMappingBooleanSetting to Kotlin 2023-08-25 14:20:32 -04:00
Charles Lombardo 4c8cd49d80 Android: Convert DolphinVibratorManagerPassthrough to Kotlin 2023-08-25 14:20:32 -04:00
Charles Lombardo 29adbb4394 Android: Convert DolphinVibratorManagerCompat to Kotlin 2023-08-25 14:20:32 -04:00
Charles Lombardo 1ff6a3788e Android: Convert DolphinVibratorManager to Kotlin 2023-08-25 14:20:32 -04:00
Charles Lombardo ba9f2373c0 Android: Convert DolphinSensorEventListener to Kotlin 2023-08-25 14:20:31 -04:00
Charles Lombardo 24c882622f Android: Convert ControllerInterface to Kotlin 2023-08-25 14:20:31 -04:00
Charles Lombardo 9ac1847cbd Android: Convert NumericSetting to Kotlin 2023-08-25 14:20:31 -04:00
Charles Lombardo 82298dc408 Android: Convert CoreDevice to Kotlin 2023-08-25 14:20:31 -04:00
Charles Lombardo 3011c0dc64 Android: Convert EmulatedController to Kotlin 2023-08-25 13:31:21 -04:00
Charles Lombardo 4ce069cf4f Android: Convert ControlReference to Kotlin 2023-08-25 13:31:04 -04:00
Charles Lombardo 7c79ff0100 Android: Convert ControlGroup to Kotlin 2023-08-25 13:30:42 -04:00
Charles Lombardo fafbb2199e Android: Convert Control to Kotlin 2023-08-25 13:30:23 -04:00
Charles Lombardo 0454578f45 Android: Convert ControlGroupEnabledSetting to Kotlin 2023-08-25 10:08:50 -04:00
iwubcode 9223540bf4 VideoCommon: additional error checking for CustomPipelineAction and move the pixel shader asset cache time back to being calculated during texture creation 2023-08-24 00:47:48 -05:00
iwubcode 7c52a52440 VideoCommon: add TextureData structure that contains the raw texture data, a sampler, and the type of texture information 2023-08-24 00:35:31 -05:00
Dentomologist a650a16f4c JitArm64: Resolve deprecated enum conversion warning
Resolve warning caused by using values from two different enums in a
conditional expression which was deprecated in c++20.

The warning in question is clang -Wdeprecated-anon-enum-enum-conversion
and gcc -Wenum-compare.
2023-08-23 14:38:52 -07:00
JosJuice ba99d17ac0 VideoCommon: Fix custom shader constants on GLES 2023-08-22 19:38:18 +02:00
Admiral H. Curtiss 4223cd0264
Merge pull request #12130 from JosJuice/translation-fixes
Fixes to translatable strings
2023-08-22 16:44:36 +02:00
JosJuice 6e88c44d5d Move SmallVector to Common
We had one implementation of this type of data structure in Arm64Emitter
and one in VideoCommon. This moves the Arm64Emitter implementation to
its own file and adds begin and end functions to it, so that VideoCommon
can use it.

You may notice that the license header for the new file is CC0. I wrote
the Arm64Emitter implementation of SmallVector, so this should be no
problem.
2023-08-22 13:19:49 +02:00
iwubcode 55fba7c0ed
VideoCommon/GraphicsModAsset: Error out if config key is not a string. 2023-08-22 02:40:08 +02:00
Admiral H. Curtiss dbe6a5f7e4
Merge pull request #11300 from iwubcode/custom-shaders
VideoCommon: add a graphics mod action that allows you to modify the game's base rendering
2023-08-22 02:18:40 +02:00
Dentomologist 58ab94c30c GCC: Suppress PPCSTATE_OFF invalid-offsetof warnings
Modify PPCSTATE_OFF and PPCSTATE_OFF_ARRAY macros when using GCC to
avoid useless log spam. Specifically, use a consteval lambda with gcc
_Pragma statements to disable the -Winvalid-offsetof warning inside the
macros.

Each successful build (and many failing ones) on the Android buildbot
generates almost 300 cases of -Winvalid-offsetof, resulting in thousands
of lines of log spam per build. In addition to bloating the log filesize
these spurious warnings make it harder to find actual warnings.

These warnings are generated by calls to the macros PPCSTATE_OFF and
PPCSTATE_OFF_ARRAY, which in turn are used by many other macros used by
the JIT. The ultimate cause is that offsetof is only conditionally
supported on non-standard-layout types, which includes the PowerPCState
struct.

To address potential questions of whether there's a better way to handle
this:

The obvious solution would be to modify PowerPCState so that it does
have a standard layout. This is unfortunately impractical.

To have a standard layout a type can only contain other types with
standard layouts. None of the stl containers are guaranteed to have
standard layouts, and PowerPCState contains a std::tuple and std::array.
PowerPCState also contains a PowerPC::Cache and InstructionCache which
themselves contain std:arrays and std::vectors.

Furthermore InstructionCache derives from Cache, and a derived class can
only have standard layout if at most one class in its hierarchy has a
non-static data member, but both classes have such members. Making
InstructionCache have a standard layout would require duplicating all
the functionality of Cache so it no longer derived from it, as well as
replacing the stl containers. This might require having a raw pointer to
said containers, with the manual memory management that implies.

All of that would be much more disruptive than would be justified to get
rid of some warnings (however annoying they might be). This is
compounded by the fact that PowerPCState hasn't had a standard layout
for a long time, if ever, and if the PPCSTATE_OFF macros weren't working
reliably it would have become obvious a long time ago.

As to why I picked the lambda solution over other potential changes:

- Keeping the define as-is and wrapping some gcc #pragmas around it
  doesn't work because the pragmas don't get included when the define is
  substituted to the call site.

- Keeping the define as a non-lambda expression and using inline
  _Pragma() statements would ideally be better and works fine for msvc,
  but fails for GCC with "'#pragma' is not allowed here".

- Turning off -Winvalid-offsetof globally for gcc would work, but there
  might be other contexts where offsetof is problematic and GCC seems to
  be the only compiler warning about it.
2023-08-21 14:01:11 -07:00
Sepalani 573863703a MemoryViewWidget: Fix some characters being truncated 2023-08-21 22:02:44 +04:00
JosJuice e7c2133160 Fixes to translatable strings 2023-08-21 16:29:52 +02:00
JosJuice 3451cb1ca2
Merge pull request #11959 from Dentomologist/add_x64emitter_unittests
x64EmitterTest: add J/J_CC/CALL unit tests
2023-08-21 16:27:04 +02:00
iwubcode 5506121685 VideoCommon: add support to graphics mod manager to load in assets and pass it to graphics actions 2023-08-20 18:53:27 -05:00
iwubcode 6ea0d17802 VideoCommon: when graphics settings change, trigger a reload of all custom shaders 2023-08-20 18:53:27 -05:00
iwubcode 931a8aa413 VideoCommon: add milliseconds elapsed time value to pixel shaders as a uniform to be able to support animation effects in custom shaders 2023-08-20 18:53:27 -05:00
iwubcode c7191382be VideoCommon: add custom pipeline action 2023-08-20 18:53:27 -05:00
iwubcode d320366954 VideoCommon: add custom shader cache to VertexManagerBase, supporting custom pixel shaders by replacing the existing pipeline with a modified one 2023-08-20 18:53:27 -05:00
iwubcode bedbf2b8c6 VideoCommon: add custom shader cache 2023-08-20 18:53:27 -05:00
iwubcode dbaf24ef09 VideoCommon: add data needed to support custom pixel shaders to graphics mod actions 2023-08-20 18:53:27 -05:00
iwubcode 4283d76718 VideoCommon: uber pixel shader gen changes needed to support custom pixel shaders in graphics mods 2023-08-20 18:53:27 -05:00
iwubcode e704385fce VideoCommon: pixel shader gen changes needed to support custom pixel shaders in graphics mods 2023-08-20 18:53:27 -05:00
iwubcode c3a370839a VideoCommon: add helper functions to handle generating custom lighting code for a custom pixel shader 2023-08-20 18:53:27 -05:00
iwubcode 0da5cf60a8 VideoCommon: add custom pixel shader definition and custom shader header to shadergen common as it will be used by both the special and uber shader variant of pixel shaders 2023-08-20 18:53:27 -05:00
Admiral H. Curtiss f19651e49b
Merge pull request #11025 from AdmiralCurtiss/hle-printf
HLE_OS: Manually handle printfs from emulated software to prevent emulated software from crashing Dolphin with an invalid printf formatting string.
2023-08-20 01:31:49 +02:00
JosJuice 0f64df3e3e DiscIO: Don't keep volume pointer in DiscScrubber
Keeping the pointer creates use-after-free opportunities, and we don't
have much reason to keep it around anyway.
2023-08-19 17:30:22 +02:00
Admiral H. Curtiss d36f0fff4c
Jit64: Actually update membase register after GlobalAdvance(). 2023-08-19 17:00:01 +02:00
JosJuice ed7894924c
Merge pull request #12048 from krnlyng/someothertest
Jit: Load the memory register only when the msr bits have changed and do not use jumps to load it.
2023-08-19 09:49:29 +02:00
Admiral H. Curtiss b6bfa10ace
Merge pull request #11996 from Dentomologist/remove_pointless_pauseandlock_functions
EXI: Remove pointless PauseAndLock functions
2023-08-18 21:35:56 +02:00
Admiral H. Curtiss bb4ed1c450
Merge pull request #12118 from AdmiralCurtiss/tas-window-translatable
DolphinQt/TASInputWindow: Make 'Enable Controller Input' translatable.
2023-08-18 21:33:23 +02:00
Admiral H. Curtiss 8a96ce73f6
Merge pull request #12044 from jmlee337/upnpport
Do not try portmapping when using traversal server
2023-08-18 21:28:52 +02:00
Admiral H. Curtiss 9a51215af3
Merge pull request #12083 from JosJuice/android-controlled-by-gamepad
InputConfig: Update IsControllerControlledByGamepadDevice for Android input overhaul
2023-08-18 21:27:26 +02:00
xujibbs b3902397cb
DolphinQt/TASInputWindow: Make 'Enable Controller Input' translatable. 2023-08-18 21:02:30 +02:00
Admiral H. Curtiss 3441fe6efc
Merge pull request #11999 from Filoppi/post_process_fixes
Video: implement output resampling (upscaling/downscaling) methods
2023-08-18 20:33:09 +02:00
JosJuice a9ec2a6e41
Merge pull request #12116 from AdmiralCurtiss/log-colors
DolphinQt/LogWidget: Restore log window colors.
2023-08-18 09:00:43 +02:00
Filoppi 8bca9a864f Video: The `Auto` internal resolution scaling wasn't working correctly if the window weird aspect ratios (e.g. 32:9), beacuse it would account for the the portion of the image that will show black bars into the calcuations to find the best matching resolution 2023-08-18 02:14:00 +03:00
Filoppi 6c7f34d5da Video: The `Auto-Adjust Window Size` setting was calculating the window size based on the resolution of the window in the previous frame if we used the "stretch" aspect ratio setting, so it's result would be self influence in a loop and behave unreliably (e.g. when changing resolution between Auto/Native/2x the automatic window scaling would behave randomly) 2023-08-18 02:14:00 +03:00
Filoppi cb34d1aafe Video: There was always a black line around one of the 4 edges (top/left/bottom/right) of the window because the final output size wasn't calculated right (unless the aspect ratio was set to stretch) 2023-08-18 02:14:00 +03:00
Filoppi fae3aee9e0 Video: The `% 4` that was done on the rendering resolution was only meant to be done when recording videos (due to encoding limitations) but one case was missed (this had no consequences really, as it was just in the code that automatically resizes the window). The hardcoded `4` has been replaced with `VIDEO_ENCODER_LMC` for clarity. 2023-08-18 02:14:00 +03:00
Filoppi 80b453082d Video: fix post process shaders with parameters failing to build on OpenGL
This was because the shader uniforms between the pixel and vertex shaders
were willingly left different, to avoid filling the vertex shader with unnecessary
params. Turns out all backends are fine with this except OGL.
The new behaviour is now much more consistent and well explained,
the "default" shaders are the ones that always run, and the non default
ones are the user selected ones (if any).
2023-08-18 02:00:56 +03:00
Sam Belliveau 39d96a21a8 Video: Improved Tooltips & Bicubic (#5)
Edited by Filoppi
2023-08-18 02:00:56 +03:00
Sam Belliveau ca93a5191f Video: Added Box Resampling
Edited by Filoppi
2023-08-18 02:00:56 +03:00
Filoppi 2edf81cdb0 Video: implement output resampling (upscaling/downscaling) methods 2023-08-18 02:00:55 +03:00
Admiral H. Curtiss 1854ff0142
Merge pull request #12003 from Filoppi/auto_hdr
Add AutoHDR post process shader
2023-08-18 00:20:08 +02:00
Admiral H. Curtiss ecf5870a91
Merge pull request #12115 from AdmiralCurtiss/advanced-config
DolphinQt/AdvancedPane: UI improvements.
2023-08-18 00:16:59 +02:00
Admiral H. Curtiss 42e893d6be
Merge pull request #12114 from AdmiralCurtiss/color-correction-button
DolphinQt/EnhancementsWidget: Use custom tooltip for Color Correction button.
2023-08-18 00:16:47 +02:00
Admiral H. Curtiss fc7ef66669
Merge pull request #12110 from JosJuice/android-dir-init-toast
Android: Move DirectoryInitialization toast to UI thread
2023-08-18 00:15:15 +02:00
Admiral H. Curtiss a08792033a
Merge pull request #12103 from iwubcode/asset_load_system_time
VideoCommon: asset load time is now stored as a chrono system_clock time
2023-08-18 00:14:29 +02:00
JosJuice b62c25864f CPUThreadConfigCallback: Remove some CPU thread asserts
Turns out that we have two subsystems that want to register CPU thread
callbacks from a different thread than the CPU thread: FreeLookConfig
and VideoConfig. Both seem to happen from the host thread before the CPU
thread starts, so there's no thread safety issue. But ideally, if we
want to allow registering callbacks from threads other than the CPU
thread, we should make registering callbacks actually thread-safe. This
is an unsolved problem for the regular Config system, so I would like to
leave it outside the scope of this PR.
2023-08-17 19:19:26 +02:00
JosJuice 7197e3abd0 Use structs for config callback IDs
This way you can't mix up regular config callback IDs and CPU thread
config callback IDs. (It would be rather bad if you did!)
2023-08-17 19:19:26 +02:00
JosJuice 1104b93ee4 UnitTests: Declare as CPU thread when using CPUThreadConfigCallback
This fixes a bunch of DEBUG_ASSERTs in the unit tests.
2023-08-17 19:19:25 +02:00
JosJuice 2b17e89336 Config: Don't clear callbacks on shutdown
This fixes a problem that started happening in CoreTimingTest after the
previous commit. CPUThreadConfigCallback registers a Config callback
only once per run of the process, but CoreTimingTest calls
Config::Shutdown after each test, and Config::Shutdown was clearing all
callbacks, preventing the callback from running after that.
2023-08-17 19:19:25 +02:00
JosJuice 71ce8bb6f0 Don't call RunAsCPUThread in config callbacks
In theory, our config system supports calling Set from any thread. But
because we have config callbacks that call RunAsCPUThread, it's a lot
more restricted in practice. Calling Set from any thread other than the
host thread or the CPU thread is formally thread unsafe, and calling Set
on the host thread while the CPU thread is showing a panic alert causes
a deadlock. This is especially a problem because 04072f0 made the
"Ignore for this session" button in panic alerts call Set.

Because so many of our config callbacks want their code to run on the
CPU thread, I thought it would make sense to have a centralized way to
move execution to the CPU thread for config callbacks. To solve the
deadlock problem, this new way is non-blocking. This means that threads
other than the CPU thread might continue executing before the CPU thread
is informed of the new config, but I don't think there's any problem
with that.

Intends to fix https://bugs.dolphin-emu.org/issues/13108.
2023-08-17 19:19:25 +02:00
Admiral H. Curtiss a9cba9be36
DolphinQt/LogWidget: Restore log window colors. 2023-08-16 19:55:18 +02:00