Commit Graph

330 Commits

Author SHA1 Message Date
Zephyron c57a5fef92 WIP: Enhance shader compilation performance and control
This commit adds new settings and optimizations for shader compilation:

- Add new settings:
  - use_enhanced_shader_building: Enable enhanced shader compilation
  - shader_compilation_priority: Control shader compilation priority

- Improve shader compilation performance:
  - Optimize worker thread allocation based on CPU cores
  - Add smarter async shader compilation heuristics
  - Prioritize vertex and fragment shader compilation
  - Add performance tracking and logging

- Add performance monitoring:
  - Track shader compilation times
  - Log slow shader compilations
  - Monitor async shader compilation statistics

This is a work in progress commit. Further optimizations and refinements
will be needed based on testing and feedback.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:37:11 -03:00
Pavel Barabanov 38737f26e5 Optimize SpiriV output 2025-04-12 22:54:32 -03:00
Pavel Barabanov bd2f935c4d delete "enable" in setting.h 2025-04-12 22:54:32 -03:00
Pavel Barabanov be2e838f0d FRAME_SKIPPING and FRAME_INTERPOLATION only android and delete "enable" 2025-04-12 22:54:32 -03:00
Pavel Barabanov 70c2439d8c Add sync core speed 2025-04-12 22:54:32 -03:00
Pavel Barabanov d25bea5762 Android: add FRAME_SKIPPING and FRAME_INTERPOLATION 2025-04-12 22:54:32 -03:00
darktux 2032d035a3 Removed telemetry and anonymized SCM (git) strings 2025-04-04 03:40:47 +02:00
Briar 8364ab1b00 android: Rename default device name to eden 2025-04-04 03:23:31 +02:00
liamwhite 67120d9623 Merge pull request #13159 from liamwhite/web-error
core: enable error applet, add stubs for web applet
2024-02-26 12:44:55 -05:00
Liam 9db29b4e20 settings: remove global override for smash on amdvlk 2024-02-26 11:16:18 -05:00
Liam e850ec7aa9 settings: enable error applet 2024-02-24 22:56:08 -05:00
Liam a956f0f4f8 vulkan_device: don't use fixed cap for memory limits 2024-02-18 18:59:13 -05:00
Liam b4b3ddf4b4 general: add default configurations for applet mode 2024-02-09 09:20:53 -05:00
t895 6c6d6ece77 settings: Allow audio sink, input, and output to be set per game 2024-01-31 09:31:19 -05:00
Kelebek1 52c35521bd Rework time service to fix time passing offline. 2024-01-24 04:26:55 +00:00
t895 8323adf027 settings: Allow vsync to be changed per-game 2023-12-12 17:25:37 -05:00
t895 1fb59b06a6 settings: Allow CPU Debug and Fastmem to be changed per-game 2023-12-12 17:25:37 -05:00
t895 23d1e33daa settings: Enable NCE by default on capable systems 2023-12-08 20:25:07 -05:00
liamwhite da8676dda1 Merge pull request #12074 from GPUCode/yuwu-on-the-metal
Implement Native Code Execution (NCE)
2023-11-30 09:20:55 -05:00
liamwhite c90b7f3b93 Merge pull request #11946 from flodavid/gamemode
Enable (Feral Interactive) Gamemode on Linux
2023-11-29 12:33:09 -05:00
amazingfate c95a560bc3 qt: add cpu_backend configuration 2023-11-26 20:44:07 -05:00
Fernando S 896ae72dbf Merge pull request #11535 from GPUCode/upload_cmdbuf
renderer_vulkan: Introduce separate cmd buffer for uploads
2023-11-26 18:33:05 +01:00
flodavid 6bd3056c52 yuzu: create linux group in general settings
- Create files dedicated to starting and stopping gamemode functions
  - Use them in yuzu and yuzu_cmd modules
2023-11-25 19:30:37 +01:00
xcfrg e21bdc68db yuzu: integrate gamemode support on linux 2023-11-25 19:30:29 +01:00
GPUCode 3814ca9d84 Address some review comments 2023-11-25 00:47:35 -05:00
Liam 19619b1b14 arm: Implement native code execution backend 2023-11-25 00:46:47 -05:00
GPUCode dee5002355 device_memory: Enable direct mapped addresses for nce 2023-11-25 00:46:47 -05:00
GPUCode 9e5f019dee settings: Add cpu backend setting 2023-11-25 00:46:15 -05:00
t895 95fa508a1c common: settings: Add ifdefs to define android's default settings 2023-11-21 01:58:13 -05:00
GPUCode 4b853ff5cf renderer_vulkan: Introduce separate cmd buffer for uploads 2023-11-12 20:27:39 +01:00
Narr the Reg e19c9281db yuzu: Make mute audio persistent 2023-11-10 10:22:04 -06:00
liamwhite 4940a6b310 Merge pull request #11689 from liamwhite/breakpad
qt: implement automatic crash dump support
2023-10-29 23:41:13 -04:00
Florian 032d4938a9 yuzu: Use new setting method for stop emulation 2023-10-12 01:51:53 +02:00
Liam 5f51662bdb qt: implement automatic crash dump support 2023-10-08 11:35:53 -04:00
liamwhite da04fbdc2e Merge pull request #11402 from FernandoS27/depth-bias-control
Vulkan: Implement Depth Bias Control
2023-09-28 09:35:37 -04:00
Fernando Sahmkow 5ea12207f3 Query Cachge: Fully rework Vulkan's query cache 2023-09-23 23:05:29 +02:00
Fernando Sahmkow dcf5c4bec0 Vulkan: add temporary workaround for AMDVLK 2023-09-16 11:59:20 -04:00
GPUCode cc2c6d8805 debug: Add renderdoc capture hotkey 2023-09-14 16:37:41 +03:00
lat9nq 8980108234 settings: Add docked mode helper function 2023-08-22 21:58:09 -04:00
lat9nq 447ec24378 general: Convert use_docked_mode to an enumeration
Allows some special interactions with it in the Qt frontend.
2023-08-22 16:07:52 -04:00
lat9nq 276bc80544 settings: Add AspectRatio enum, split res scale function 2023-08-15 22:41:50 -04:00
lat9nq 4246d7d97d (ui)settings: Add more runtime_modifiable settings 2023-07-25 23:14:13 -04:00
lat9nq 9fbed50208 settings: Set GPU as default ASTC decoder 2023-07-24 16:28:13 -04:00
lat9nq 5c0cf58f73 common: Move global configuration state modifiers back to settings 2023-07-21 10:56:55 -04:00
lat9nq e952af53be core,common: Give memory layout setting an enum
Allows for 6GB and 8GB layouts to be selected.
2023-07-21 10:56:55 -04:00
lat9nq 5011827255 settings: Require time zone setting value for stirng 2023-07-21 10:56:55 -04:00
lat9nq 245c490e02 settings,configuration: Add a default suffix 2023-07-21 10:56:55 -04:00
lat9nq 4ffbd95fa5 settings: Define paired settings
settings_common: Remove unused optional
2023-07-21 10:56:55 -04:00
lat9nq eb6fe05451 settings: Define specializations for settings
Suggests to a frontend how to represent each setting.
2023-07-21 10:56:55 -04:00
lat9nq c0e9075d6b settings,uisettings: Remove leading underscore 2023-07-21 10:56:55 -04:00
lat9nq e09f6ee530 settings: Move speed_limit to core 2023-07-21 10:56:55 -04:00
lat9nq a7a32ab8a0 common,yuzu-qt: Avoid explicit instantiation on old clang
Clang versions < 15 have compile issues with explicit instantiation.
Disable it for these versions.
2023-07-21 10:56:55 -04:00
lat9nq 98eb39ee74 settings: Delete cpu_accuracy_first_time
Almost a 2 year old migration setting now
2023-07-21 10:56:54 -04:00
lat9nq 8d4c466cde settings: Move IsConfiguringGlobal to settings_common 2023-07-21 10:56:54 -04:00
lat9nq 5a2b7f951d (ui,)settings: Use explicit instantiation
Reduces compile times a tad on clang.
2023-07-21 10:56:54 -04:00
lat9nq 5574e68b57 settings: Remove redundant false literals 2023-07-21 10:56:54 -04:00
lat9nq 9d6de208a1 general: Add typeinfo where needed
Using typeid without including typeinfo first produces an ill-formed program.
2023-07-21 10:56:54 -04:00
lat9nq 9ba1120d59 settings: yuzu is not capitalized why is it capitalized stop no bad 2023-07-21 10:56:54 -04:00
lat9nq c97378bbf1 settings: Reorder
Groups graphics audio and system settings together in a way that
reflects the frontend. This also just conceptually groups them more
nicely than they were.
2023-07-21 10:56:54 -04:00
lat9nq 78f92086ca settings,general: Rename non-confirming enums 2023-07-21 10:56:54 -04:00
lat9nq 1eb6680ca3 settings: Make volume runtime-configurable 2023-07-21 10:56:07 -04:00
lat9nq d39bfc646f configure_audio: Implement ui generation
Needs a considerable amount of management specific to some of
the comoboboxes due to the audio engine configuration.

general: Partial audio config implmentation

configure_audio: Implement ui generation

Needs a considerable amount of management specific to some of
the comoboboxes due to the audio engine configuration.

general: Partial audio config implmentation

settings: Make audio settings as enums
2023-07-21 10:56:07 -04:00
lat9nq a61beb7123 settings: Split enums to new file 2023-07-21 10:56:07 -04:00
lat9nq e24838dabc settings, uisettings: Initialize linkage counter 2023-07-21 10:56:07 -04:00
lat9nq 689efc9175 configure_system: Implement with for loop 2023-07-21 10:56:07 -04:00
lat9nq 0dcb7fe1ce settings: Move runtime and save to parameters
These don't need to be whole new types.
2023-07-21 10:56:07 -04:00
lat9nq 793d6c2a85 settings: Add UiGeneral class 2023-07-21 10:56:07 -04:00
lat9nq f9310ec1e8 configuration: Implement slider 2023-07-21 10:56:07 -04:00
lat9nq cc4dbb8c8c settings: Define base renderer runtime modifiable settings 2023-07-21 10:56:07 -04:00
lat9nq 11c4168adb settings: Add anisotropy mode enum 2023-07-21 10:56:07 -04:00
lat9nq eae5e1f6f3 shared_translation: Finish using int ids 2023-07-21 10:56:07 -04:00
lat9nq 825e8f0611 settings,uisettings: Add IDs to settings 2023-07-21 10:56:07 -04:00
lat9nq d7ffd33ca0 configure_graphics: Partial runtime implementation 2023-07-21 10:56:07 -04:00
lat9nq c7e5ead869 settings: Recategorize a bit
Will help with generating config UI later.
2023-07-21 10:56:07 -04:00
lat9nq 4a5f3e4733 configure_graphics_advance: Generate UI at runtime
We can iterate through the AdvancedGraphics settings and generate the UI
during runtime. This doesn't help runtime efficiency, but it helps a ton
in reducing the amount of work a developer needs in order to add a new
setting.
2023-07-21 10:56:07 -04:00
lat9nq 253d2180c5 settings: Add a registry of settings
LoadString: Sanitize input

settings: Handle empty string, remove redundant category

settings: Rename Input to Controls, FS to DataStorage

settings: Fix Controls groups information

settings: Move use_docked_mode to System (again)

settings: Document

settings: Add type identification function

settings: Move registry into values

settings: Move global_reset_registry into values

settings: Separate AdvGraphics from Renderer

settings: More document

squash

settings: Use linkage object

uisettings: Move registry into settings

Probably wont build without

uisettings: Use settings linkage object

config: Load settings with a map

Uses the new all_settings vector to load settings.

qt-config: Rename settings category

qt config: Rename to read category

config: Read/write contols category with for_each

This is extremely limited due to the complexity of the Controls group,
but this handles the the settings that use the interface.

qt-config: Use new settings registry

qt-config: Read/write advgrphics

qt-config: Use settings linkage object

yuzu_cmd: Load setting off of vector

cmd-config: Finish settings rename

config: Read controls settings group with for_each

cmd/config: Move registry into values

cmd: Read adv graphics

cmd-config: Use settings linkage object
2023-07-21 10:56:07 -04:00
lat9nq bd8630531e settings,core,config_sys: Remove optional type from custom_rtc, rng_seed
core: Fix MSVC errors
2023-07-21 10:56:07 -04:00
lat9nq 02a4c18835 settings: Pool SetGlobal functions 2023-07-21 10:56:07 -04:00
lat9nq fc30b04714 settings,video_core: Consolidate ASTC decoding options
Just puts them all neatly into one place.
2023-07-21 10:56:07 -04:00
Narr the Reg 3241ff028c input_common: Tune mouse controls 2023-06-28 21:04:33 -06:00
liamwhite 4696a032a8 Merge pull request #10495 from bm01/master
input_common: Redesign mouse panning
2023-06-27 11:21:28 -04:00
Liam d0837e10ae video_core: optionally skip barriers on feedback loops 2023-06-14 14:11:46 -04:00
Baptiste Marie 83f4158d6c input_common: Redesign mouse panning 2023-06-12 00:47:52 +02:00
Liam 1b33ebdde2 nvnflinger: allow locking framerate during video playback 2023-06-08 01:15:51 -04:00
Liam 011dfe1db7 textures: add BC1 and BC3 compressors and recompression setting 2023-05-23 12:54:40 -04:00
liamwhite c8356ee137 Merge pull request #10181 from lat9nq/intel-compute-toggle
configure_graphics: Add option to enable compute pipelines for Intel proprietary
2023-05-15 12:05:24 -04:00
german77 e43d1c20d5 service: nfp: Allow to load with a different amiibo id 2023-05-09 17:51:59 -06:00
Fernando Sahmkow 62295b5069 Settings: add option to enable / disable reactive flushing 2023-05-07 23:46:12 +02:00
lat9nq 90f4126609 settings: Add enable compute pipelines
For the Intel proprietary driver's deficiencies.

settings: Restore compute option global state
2023-05-07 01:06:20 -04:00
bunnei 12c4c09b3f Merge pull request #10125 from lat9nq/vsync-select
configuration: Expose separate swap present modes
2023-05-06 21:55:39 -07:00
Liam f50b8635b3 settings: remove pessimistic flushing 2023-05-03 18:52:42 -04:00
Morph 069637f4ff Merge pull request #10124 from liamwhite/pebkac
settings: rename extended memory layout to unsafe, move from general to system
2023-05-03 10:52:45 -04:00
lat9nq 2cca81495e settings: Enable FIFO relaxed
Not entirely sure if we need this, but there's also no reason not to
support it.

settings: Give VSyncMode values
2023-05-02 21:51:30 -04:00
lat9nq 581d8f34ee configuration: Expose separate swap present modes
Previously, yuzu would try and guess which vsync mode to use given
different scenarios, but apparently we didn't always get it right. This
exposes the separate modes in a drop-down the user can select.

If a mode isn't available in Vulkan, it defaults to FIFO.
2023-05-02 21:51:29 -04:00
GPUCode d56a40606c vk_present_manager: Add toggle for async presentation 2023-05-01 23:13:24 +03:00
Liam bdaf10ec9e settings: rename extended memory layout to unsafe, move from general to system 2023-04-30 14:24:22 -04:00
bunnei 4f1ca556e9 Merge pull request #9906 from german77/metroid2
input_common: Increase mouse sensitivity range
2023-03-08 10:43:38 -08:00
german77 db3f4f7515 input_common: Increase mouse sensitivity range 2023-03-07 19:31:52 -06:00
Ikko Eltociear Ashimine 538c3df844 fix typo in settings.h
Intial -> Initial
2023-03-06 20:28:47 +09:00
Narr the Reg 2e388209d7 Revert "yuzu: config: Remove player 8 and 9 from config file" 2023-02-26 14:39:13 -06:00
liamwhite b385fc2cd1 Merge pull request #9849 from ameerj/async-astc
texture_cache: Add asynchronous ASTC texture decoding
2023-02-26 09:20:12 -05:00
Narr the Reg f6531fb17c yuzu: config: Remove player 8 and 9 from config file 2023-02-25 22:20:32 -06:00
ameerj c5386e2179 configuration: Add async ASTC decode setting 2023-02-22 18:21:09 -05:00
Narr the Reg 75039440f3 input_common: Reintroduce custom pro controller support 2023-02-09 20:08:54 -06:00
Levi Behunin 2ff6c44168 Move to Clang Format 15
Depends on https://github.com/yuzu-emu/build-environments/pull/69

clang-15 primary run
2023-01-29 17:49:42 -07:00
Narr the Reg 216bdb7884 input_common: Disable SDL driver with switch controllers 2023-01-19 18:05:20 -06:00
Matías Locatti 7297ab36c1 Update settings.h 2023-01-13 04:56:25 -03:00
Matías Locatti cf9e60d883 1.5X resolution scaler option 2023-01-13 02:34:24 -03:00
Liam a9d96415c4 renderer_vulkan: disable turbo by default 2023-01-08 11:38:30 -05:00
liamwhite 41958ff4ae Merge pull request #9552 from liamwhite/turbo
vulkan: implement 'turbo mode' clock booster
2023-01-06 09:59:59 -05:00
Wollnashorn 0b17b4edd2 config: Better wording for VK pipeline cache option and enable by default 2023-01-05 21:03:01 +01:00
Wollnashorn ef0b585b0b video_core/vulkan: Added `VkPipelineCache` to store Vulkan pipelines
As an optional feature which can be enabled in the advanced graphics configuration, all pipelines that get built at the initial shader loading are stored in a VkPipelineCache object and are dumped to the disk.

These vendor specific pipeline cache files are located at `/shader/GAME_ID/vulkan_pipelines.bin`. This feature was mainly added because of an issue with the AMD driver (see yuzu-emu#8507) causing invalidation of the cache files the driver builds automatically.
2023-01-05 21:02:44 +01:00
Liam d9b2bc7f04 common: add setting for renderer clock workaround 2023-01-04 22:22:01 -05:00
Fernando Sahmkow e5d02ff039 yuzu-ui: Add setting for disabling macro HLE 2023-01-04 14:56:52 -05:00
Chloe Marcec 27a7d5a11a Set: Allow setting device nickname 2022-12-13 19:54:17 -05:00
Liam 292cc68b75 video_core: Integrate SMAA
Co-authored-by: goldenx86 <goldenx86@users.noreply.github.com>
Co-authored-by: BreadFish64 <breadfish64@users.noreply.github.com>
2022-12-08 17:17:45 -05:00
merry 32b13dbca1 Merge pull request #9370 from liamwhite/break-unmapped
core: add option to break on unmapped access
2022-12-06 20:20:20 +00:00
Liam dfc09df118 core: add option to break on unmapped access 2022-12-02 08:25:45 -05:00
Liam acc4a150ef video_core: add null backend 2022-11-28 19:49:09 -05:00
bunnei 0e8043fc24 Merge pull request #9276 from goldenx86/fsrSlider
FSR Sharpening Slider
2022-11-27 00:13:15 -08:00
Matías Locatti 71055c8e90 Oops 2022-11-26 17:39:43 -03:00
Matías Locatti 492fabc9b2 Replace GLSL as the default OpenGL shader backend
GLASM is not very compatible with the latest games, and too many people have the special superpower to break their Vulkan support.
2022-11-26 17:27:04 -03:00
Matías Locatti 8e19421f84 FSR Sharpening Slider part 1 - only a global slider 2022-11-24 04:22:13 -05:00
Morph 98c792dbf4 settings: Update aspect_ratio range
Since 16:10 was added, the maximum value is now 4.
2022-10-13 12:24:04 -04:00
lat9nq e5392df1a5 yuzu qt: Add option to disable startup Vulkan check
The startup check apparently confuses other programs when yuzu launches
2 processes and then quickly closes one of them. Though this isn't
really our issues it's also not a big deal for me to add an option to
work around that issue.
2022-09-19 14:46:12 -04:00
Morph 8c3b3247ea Merge pull request #8682 from lat9nq/dumpy
yuzu qt: Add option to create Windows crash dumps
2022-09-16 12:47:51 -04:00
lat9nq 554b7e220b yuzu: Use a debugger to generate minidumps
yuzu: Move mini_dump out of core

startup_checks: Better exception handling
2022-09-04 21:36:04 -04:00
Liam 39c3184237 video_core: add option for pessimistic flushing 2022-08-25 12:32:14 -04:00
Kelebek1 c92bcde27e Allow audio volume up to 200% 2022-08-12 16:57:29 +01:00
Narr the Reg a08b8f224b yuzu: Add webcam support and rebase to latest master 2022-07-23 19:40:25 -05:00
german77 76b18ad549 input_common: Add camera driver 2022-07-23 19:38:42 -05:00
Kelebek1 be1f5f1d9f Project Andio 2022-07-22 01:11:32 +01:00
bunnei e42a6ad7d9 yuzu: settings: Remove framerate cap and merge unlocked framerate setting.
- These were all somewhat redundant.
2022-07-16 23:11:39 -07:00
merry 4091cca405 common/setting: Make ranged a property of the type
- Avoids new GCC 12 warnings when Type is of form std::optional<T>
- Makes more sense this way, because ranged is not a property which would change over time
2022-07-15 18:45:55 +01:00
lat9nq 6e65bb6f83 settings: Consolidate RangedSetting's with regular ones
The latest git version of GCC has issues with my diamond inheritance
shenanigans. Since that's now two compilers that don't like it I thought
it'd be best to just axe all of it and just have the two templates like
before.

This rolls the features of BasicRangedSetting into BasicSetting, and
likewise RangedSetting into Setting. It also renames them from
BasicSetting and Setting to Setting and SwitchableSetting respectively.
Now longer name corresponds to more complex thing.
2022-06-30 12:39:48 -04:00
bunnei d52485dd46 Merge pull request #8393 from lat9nq/default-vulkan
general: Set renderer_backend's default to Vulkan
2022-06-11 00:06:59 -07:00
Liam 2ee161a0bf core/debugger: Implement new GDB stub debugger 2022-06-01 00:01:25 -04:00
lat9nq 9e96b749ca settings: Set Vulkan to the default renderer backend 2022-05-29 21:38:36 -04:00
Fernando Sahmkow df5dd2fd82 VideoCore: Add option to dump the macros.
Co-Authored-By: liamwhite <liamwhite@users.noreply.github.com>
2022-05-08 21:37:34 -04:00
Morph 2b87305d31 general: Convert source file copyright comments over to SPDX
This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-23 05:55:32 -04:00
german77 25c46f82c5 yuzu: Add custom ringcon configuration 2022-04-16 00:49:26 -05:00
merry e752529c4c configuration: Add Paranoid CPU accuracy level
Disables most optimizations for the paranoid.
2022-03-26 08:46:25 +00:00
merry 3fe2c2d40d dynarmic: Inline exclusive memory accesses
Inlines implementation of exclusive instructions into JITted code,
improving performance of applications relying heavily on these
instructions.

We also fastmem these instructions for additional speed, with
support for appropriate recompilation on fastmem failure.

An unsafe optimization to disable the intercore global_monitor is also
provided, should one wish to rely solely on cmpxchg semantics for
safety.

See also: merryhime/dynarmic#664
2022-02-27 19:40:05 +00:00
bunnei 5dc4c92dc2 settings: Add a new "use_extended_memory_layout" setting.
- This will be used to enable emulation of a larger memory arrangement.
2022-02-21 13:07:19 -08:00
german77 47ca44ad1d yuzu: Add setting to disable controller navigation 2022-01-23 21:08:49 -06:00
Fernando Sahmkow 65387dd0a0 ShaderDecompiler: Add a debug option to dump the game's shaders. 2022-01-04 02:39:00 +01:00
german77 b7357d95a7 settings: Add debug setting to enable all controllers 2021-11-27 20:24:37 -06:00
Narr the Reg 7b56b2cab6 input_common: Fully implement UDP controllers 2021-11-26 15:46:36 -06:00
german77 dfb63175d1 core/hid: Fully implement native mouse 2021-11-24 20:30:28 -06:00
german77 6032358402 input_common: Allow keyboard to be backwards compatible 2021-11-24 20:30:28 -06:00