diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/settings.cpp | 1 | ||||
| -rw-r--r-- | src/common/settings.h | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_dialog.cpp | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_dialog.h | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.cpp | 23 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.h | 6 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.cpp | 17 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.h | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.ui | 11 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_per_game.cpp | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_per_game.h | 2 |
13 files changed, 67 insertions, 10 deletions
diff --git a/src/common/settings.cpp b/src/common/settings.cpp index db1774c71..ba617aea1 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp | |||
| @@ -232,6 +232,7 @@ void RestoreGlobalState(bool is_powered_on) { | |||
| 232 | values.bg_red.SetGlobal(true); | 232 | values.bg_red.SetGlobal(true); |
| 233 | values.bg_green.SetGlobal(true); | 233 | values.bg_green.SetGlobal(true); |
| 234 | values.bg_blue.SetGlobal(true); | 234 | values.bg_blue.SetGlobal(true); |
| 235 | values.enable_compute_pipelines.SetGlobal(true); | ||
| 235 | 236 | ||
| 236 | // System | 237 | // System |
| 237 | values.language_index.SetGlobal(true); | 238 | values.language_index.SetGlobal(true); |
diff --git a/src/common/settings.h b/src/common/settings.h index 5f4caaab9..36ffcd693 100644 --- a/src/common/settings.h +++ b/src/common/settings.h | |||
| @@ -472,6 +472,7 @@ struct Values { | |||
| 472 | SwitchableSetting<bool> use_fast_gpu_time{true, "use_fast_gpu_time"}; | 472 | SwitchableSetting<bool> use_fast_gpu_time{true, "use_fast_gpu_time"}; |
| 473 | SwitchableSetting<bool> use_vulkan_driver_pipeline_cache{true, | 473 | SwitchableSetting<bool> use_vulkan_driver_pipeline_cache{true, |
| 474 | "use_vulkan_driver_pipeline_cache"}; | 474 | "use_vulkan_driver_pipeline_cache"}; |
| 475 | SwitchableSetting<bool> enable_compute_pipelines{false, "enable_compute_pipelines"}; | ||
| 475 | 476 | ||
| 476 | SwitchableSetting<u8> bg_red{0, "bg_red"}; | 477 | SwitchableSetting<u8> bg_red{0, "bg_red"}; |
| 477 | SwitchableSetting<u8> bg_green{0, "bg_green"}; | 478 | SwitchableSetting<u8> bg_green{0, "bg_green"}; |
diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index 596996bec..66dfe5733 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | |||
| @@ -698,7 +698,8 @@ std::unique_ptr<ComputePipeline> PipelineCache::CreateComputePipeline( | |||
| 698 | PipelineStatistics* statistics, bool build_in_parallel) try { | 698 | PipelineStatistics* statistics, bool build_in_parallel) try { |
| 699 | // TODO: Remove this when Intel fixes their shader compiler. | 699 | // TODO: Remove this when Intel fixes their shader compiler. |
| 700 | // https://github.com/IGCIT/Intel-GPU-Community-Issue-Tracker-IGCIT/issues/159 | 700 | // https://github.com/IGCIT/Intel-GPU-Community-Issue-Tracker-IGCIT/issues/159 |
| 701 | if (device.GetDriverID() == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS) { | 701 | if (device.GetDriverID() == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS && |
| 702 | !Settings::values.enable_compute_pipelines.GetValue()) { | ||
| 702 | LOG_ERROR(Render_Vulkan, "Skipping 0x{:016x}", key.Hash()); | 703 | LOG_ERROR(Render_Vulkan, "Skipping 0x{:016x}", key.Hash()); |
| 703 | return nullptr; | 704 | return nullptr; |
| 704 | } | 705 | } |
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index b94d36838..70737c54e 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp | |||
| @@ -716,6 +716,7 @@ void Config::ReadRendererValues() { | |||
| 716 | ReadGlobalSetting(Settings::values.use_asynchronous_shaders); | 716 | ReadGlobalSetting(Settings::values.use_asynchronous_shaders); |
| 717 | ReadGlobalSetting(Settings::values.use_fast_gpu_time); | 717 | ReadGlobalSetting(Settings::values.use_fast_gpu_time); |
| 718 | ReadGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache); | 718 | ReadGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache); |
| 719 | ReadGlobalSetting(Settings::values.enable_compute_pipelines); | ||
| 719 | ReadGlobalSetting(Settings::values.bg_red); | 720 | ReadGlobalSetting(Settings::values.bg_red); |
| 720 | ReadGlobalSetting(Settings::values.bg_green); | 721 | ReadGlobalSetting(Settings::values.bg_green); |
| 721 | ReadGlobalSetting(Settings::values.bg_blue); | 722 | ReadGlobalSetting(Settings::values.bg_blue); |
| @@ -1366,6 +1367,7 @@ void Config::SaveRendererValues() { | |||
| 1366 | WriteGlobalSetting(Settings::values.use_asynchronous_shaders); | 1367 | WriteGlobalSetting(Settings::values.use_asynchronous_shaders); |
| 1367 | WriteGlobalSetting(Settings::values.use_fast_gpu_time); | 1368 | WriteGlobalSetting(Settings::values.use_fast_gpu_time); |
| 1368 | WriteGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache); | 1369 | WriteGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache); |
| 1370 | WriteGlobalSetting(Settings::values.enable_compute_pipelines); | ||
| 1369 | WriteGlobalSetting(Settings::values.bg_red); | 1371 | WriteGlobalSetting(Settings::values.bg_red); |
| 1370 | WriteGlobalSetting(Settings::values.bg_green); | 1372 | WriteGlobalSetting(Settings::values.bg_green); |
| 1371 | WriteGlobalSetting(Settings::values.bg_blue); | 1373 | WriteGlobalSetting(Settings::values.bg_blue); |
diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp index 2aaefcc05..8e76a819a 100644 --- a/src/yuzu/configuration/configure_dialog.cpp +++ b/src/yuzu/configuration/configure_dialog.cpp | |||
| @@ -36,8 +36,9 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry_, | |||
| 36 | debug_tab_tab{std::make_unique<ConfigureDebugTab>(system_, this)}, | 36 | debug_tab_tab{std::make_unique<ConfigureDebugTab>(system_, this)}, |
| 37 | filesystem_tab{std::make_unique<ConfigureFilesystem>(this)}, | 37 | filesystem_tab{std::make_unique<ConfigureFilesystem>(this)}, |
| 38 | general_tab{std::make_unique<ConfigureGeneral>(system_, this)}, | 38 | general_tab{std::make_unique<ConfigureGeneral>(system_, this)}, |
| 39 | graphics_tab{std::make_unique<ConfigureGraphics>(system_, this)}, | ||
| 40 | graphics_advanced_tab{std::make_unique<ConfigureGraphicsAdvanced>(system_, this)}, | 39 | graphics_advanced_tab{std::make_unique<ConfigureGraphicsAdvanced>(system_, this)}, |
| 40 | graphics_tab{std::make_unique<ConfigureGraphics>( | ||
| 41 | system_, [&]() { graphics_advanced_tab->ExposeComputeOption(); }, this)}, | ||
| 41 | hotkeys_tab{std::make_unique<ConfigureHotkeys>(system_.HIDCore(), this)}, | 42 | hotkeys_tab{std::make_unique<ConfigureHotkeys>(system_.HIDCore(), this)}, |
| 42 | input_tab{std::make_unique<ConfigureInput>(system_, this)}, | 43 | input_tab{std::make_unique<ConfigureInput>(system_, this)}, |
| 43 | network_tab{std::make_unique<ConfigureNetwork>(system_, this)}, | 44 | network_tab{std::make_unique<ConfigureNetwork>(system_, this)}, |
diff --git a/src/yuzu/configuration/configure_dialog.h b/src/yuzu/configuration/configure_dialog.h index 1f724834a..a086a07c4 100644 --- a/src/yuzu/configuration/configure_dialog.h +++ b/src/yuzu/configuration/configure_dialog.h | |||
| @@ -72,8 +72,8 @@ private: | |||
| 72 | std::unique_ptr<ConfigureDebugTab> debug_tab_tab; | 72 | std::unique_ptr<ConfigureDebugTab> debug_tab_tab; |
| 73 | std::unique_ptr<ConfigureFilesystem> filesystem_tab; | 73 | std::unique_ptr<ConfigureFilesystem> filesystem_tab; |
| 74 | std::unique_ptr<ConfigureGeneral> general_tab; | 74 | std::unique_ptr<ConfigureGeneral> general_tab; |
| 75 | std::unique_ptr<ConfigureGraphics> graphics_tab; | ||
| 76 | std::unique_ptr<ConfigureGraphicsAdvanced> graphics_advanced_tab; | 75 | std::unique_ptr<ConfigureGraphicsAdvanced> graphics_advanced_tab; |
| 76 | std::unique_ptr<ConfigureGraphics> graphics_tab; | ||
| 77 | std::unique_ptr<ConfigureHotkeys> hotkeys_tab; | 77 | std::unique_ptr<ConfigureHotkeys> hotkeys_tab; |
| 78 | std::unique_ptr<ConfigureInput> input_tab; | 78 | std::unique_ptr<ConfigureInput> input_tab; |
| 79 | std::unique_ptr<ConfigureNetwork> network_tab; | 79 | std::unique_ptr<ConfigureNetwork> network_tab; |
diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 76e5b7499..f316b598c 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp | |||
| @@ -2,9 +2,11 @@ | |||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | 2 | // SPDX-License-Identifier: GPL-2.0-or-later |
| 3 | 3 | ||
| 4 | // Include this early to include Vulkan headers how we want to | 4 | // Include this early to include Vulkan headers how we want to |
| 5 | #include "video_core/vulkan_common/vulkan_device.h" | ||
| 5 | #include "video_core/vulkan_common/vulkan_wrapper.h" | 6 | #include "video_core/vulkan_common/vulkan_wrapper.h" |
| 6 | 7 | ||
| 7 | #include <algorithm> | 8 | #include <algorithm> |
| 9 | #include <functional> | ||
| 8 | #include <iosfwd> | 10 | #include <iosfwd> |
| 9 | #include <iterator> | 11 | #include <iterator> |
| 10 | #include <string> | 12 | #include <string> |
| @@ -74,8 +76,11 @@ static constexpr Settings::VSyncMode PresentModeToSetting(VkPresentModeKHR mode) | |||
| 74 | } | 76 | } |
| 75 | } | 77 | } |
| 76 | 78 | ||
| 77 | ConfigureGraphics::ConfigureGraphics(const Core::System& system_, QWidget* parent) | 79 | ConfigureGraphics::ConfigureGraphics(const Core::System& system_, |
| 78 | : QWidget(parent), ui{std::make_unique<Ui::ConfigureGraphics>()}, system{system_} { | 80 | const std::function<void()>& expose_compute_option_, |
| 81 | QWidget* parent) | ||
| 82 | : QWidget(parent), ui{std::make_unique<Ui::ConfigureGraphics>()}, | ||
| 83 | expose_compute_option{expose_compute_option_}, system{system_} { | ||
| 79 | vulkan_device = Settings::values.vulkan_device.GetValue(); | 84 | vulkan_device = Settings::values.vulkan_device.GetValue(); |
| 80 | RetrieveVulkanDevices(); | 85 | RetrieveVulkanDevices(); |
| 81 | 86 | ||
| @@ -513,8 +518,7 @@ void ConfigureGraphics::RetrieveVulkanDevices() try { | |||
| 513 | const Common::DynamicLibrary library = OpenLibrary(); | 518 | const Common::DynamicLibrary library = OpenLibrary(); |
| 514 | const vk::Instance instance = CreateInstance(library, dld, VK_API_VERSION_1_1, wsi.type); | 519 | const vk::Instance instance = CreateInstance(library, dld, VK_API_VERSION_1_1, wsi.type); |
| 515 | const std::vector<VkPhysicalDevice> physical_devices = instance.EnumeratePhysicalDevices(); | 520 | const std::vector<VkPhysicalDevice> physical_devices = instance.EnumeratePhysicalDevices(); |
| 516 | vk::SurfaceKHR surface = //< needed to view present modes for a device | 521 | vk::SurfaceKHR surface = CreateSurface(instance, wsi); |
| 517 | CreateSurface(instance, wsi); | ||
| 518 | 522 | ||
| 519 | vulkan_devices.clear(); | 523 | vulkan_devices.clear(); |
| 520 | vulkan_devices.reserve(physical_devices.size()); | 524 | vulkan_devices.reserve(physical_devices.size()); |
| @@ -527,6 +531,17 @@ void ConfigureGraphics::RetrieveVulkanDevices() try { | |||
| 527 | physical_device.GetSurfacePresentModesKHR(*surface); | 531 | physical_device.GetSurfacePresentModesKHR(*surface); |
| 528 | vulkan_devices.push_back(QString::fromStdString(name)); | 532 | vulkan_devices.push_back(QString::fromStdString(name)); |
| 529 | device_present_modes.push_back(present_modes); | 533 | device_present_modes.push_back(present_modes); |
| 534 | |||
| 535 | VkPhysicalDeviceDriverProperties driver_properties{}; | ||
| 536 | driver_properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES; | ||
| 537 | driver_properties.pNext = nullptr; | ||
| 538 | VkPhysicalDeviceProperties2 properties{}; | ||
| 539 | properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR; | ||
| 540 | properties.pNext = &driver_properties; | ||
| 541 | dld.vkGetPhysicalDeviceProperties2(physical_device, &properties); | ||
| 542 | if (driver_properties.driverID == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS) { | ||
| 543 | expose_compute_option(); | ||
| 544 | } | ||
| 530 | } | 545 | } |
| 531 | } catch (const Vulkan::vk::Exception& exception) { | 546 | } catch (const Vulkan::vk::Exception& exception) { |
| 532 | LOG_ERROR(Frontend, "Failed to enumerate devices with error: {}", exception.what()); | 547 | LOG_ERROR(Frontend, "Failed to enumerate devices with error: {}", exception.what()); |
diff --git a/src/yuzu/configuration/configure_graphics.h b/src/yuzu/configuration/configure_graphics.h index 901f604a5..364b1cac2 100644 --- a/src/yuzu/configuration/configure_graphics.h +++ b/src/yuzu/configuration/configure_graphics.h | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | #pragma once | 4 | #pragma once |
| 5 | 5 | ||
| 6 | #include <functional> | ||
| 6 | #include <memory> | 7 | #include <memory> |
| 7 | #include <vector> | 8 | #include <vector> |
| 8 | #include <QColor> | 9 | #include <QColor> |
| @@ -37,7 +38,9 @@ class ConfigureGraphics : public QWidget { | |||
| 37 | Q_OBJECT | 38 | Q_OBJECT |
| 38 | 39 | ||
| 39 | public: | 40 | public: |
| 40 | explicit ConfigureGraphics(const Core::System& system_, QWidget* parent = nullptr); | 41 | explicit ConfigureGraphics(const Core::System& system_, |
| 42 | const std::function<void()>& expose_compute_option_, | ||
| 43 | QWidget* parent = nullptr); | ||
| 41 | ~ConfigureGraphics() override; | 44 | ~ConfigureGraphics() override; |
| 42 | 45 | ||
| 43 | void ApplyConfiguration(); | 46 | void ApplyConfiguration(); |
| @@ -81,6 +84,7 @@ private: | |||
| 81 | // selection in the combobox | 84 | // selection in the combobox |
| 82 | u32 vulkan_device{}; | 85 | u32 vulkan_device{}; |
| 83 | Settings::ShaderBackend shader_backend{}; | 86 | Settings::ShaderBackend shader_backend{}; |
| 87 | const std::function<void()>& expose_compute_option; | ||
| 84 | 88 | ||
| 85 | const Core::System& system; | 89 | const Core::System& system; |
| 86 | }; | 90 | }; |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp index 627ed8b17..1f3e489d0 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.cpp +++ b/src/yuzu/configuration/configure_graphics_advanced.cpp | |||
| @@ -15,6 +15,8 @@ ConfigureGraphicsAdvanced::ConfigureGraphicsAdvanced(const Core::System& system_ | |||
| 15 | SetupPerGameUI(); | 15 | SetupPerGameUI(); |
| 16 | 16 | ||
| 17 | SetConfiguration(); | 17 | SetConfiguration(); |
| 18 | |||
| 19 | ui->enable_compute_pipelines_checkbox->setVisible(false); | ||
| 18 | } | 20 | } |
| 19 | 21 | ||
| 20 | ConfigureGraphicsAdvanced::~ConfigureGraphicsAdvanced() = default; | 22 | ConfigureGraphicsAdvanced::~ConfigureGraphicsAdvanced() = default; |
| @@ -27,6 +29,7 @@ void ConfigureGraphicsAdvanced::SetConfiguration() { | |||
| 27 | ui->async_astc->setEnabled(runtime_lock); | 29 | ui->async_astc->setEnabled(runtime_lock); |
| 28 | ui->use_asynchronous_shaders->setEnabled(runtime_lock); | 30 | ui->use_asynchronous_shaders->setEnabled(runtime_lock); |
| 29 | ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); | 31 | ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); |
| 32 | ui->enable_compute_pipelines_checkbox->setEnabled(runtime_lock); | ||
| 30 | 33 | ||
| 31 | ui->async_present->setChecked(Settings::values.async_presentation.GetValue()); | 34 | ui->async_present->setChecked(Settings::values.async_presentation.GetValue()); |
| 32 | ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.GetValue()); | 35 | ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.GetValue()); |
| @@ -36,6 +39,8 @@ void ConfigureGraphicsAdvanced::SetConfiguration() { | |||
| 36 | ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue()); | 39 | ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue()); |
| 37 | ui->use_vulkan_driver_pipeline_cache->setChecked( | 40 | ui->use_vulkan_driver_pipeline_cache->setChecked( |
| 38 | Settings::values.use_vulkan_driver_pipeline_cache.GetValue()); | 41 | Settings::values.use_vulkan_driver_pipeline_cache.GetValue()); |
| 42 | ui->enable_compute_pipelines_checkbox->setChecked( | ||
| 43 | Settings::values.enable_compute_pipelines.GetValue()); | ||
| 39 | 44 | ||
| 40 | if (Settings::IsConfiguringGlobal()) { | 45 | if (Settings::IsConfiguringGlobal()) { |
| 41 | ui->gpu_accuracy->setCurrentIndex( | 46 | ui->gpu_accuracy->setCurrentIndex( |
| @@ -74,6 +79,9 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() { | |||
| 74 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_vulkan_driver_pipeline_cache, | 79 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_vulkan_driver_pipeline_cache, |
| 75 | ui->use_vulkan_driver_pipeline_cache, | 80 | ui->use_vulkan_driver_pipeline_cache, |
| 76 | use_vulkan_driver_pipeline_cache); | 81 | use_vulkan_driver_pipeline_cache); |
| 82 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.enable_compute_pipelines, | ||
| 83 | ui->enable_compute_pipelines_checkbox, | ||
| 84 | enable_compute_pipelines); | ||
| 77 | } | 85 | } |
| 78 | 86 | ||
| 79 | void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) { | 87 | void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) { |
| @@ -104,6 +112,8 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { | |||
| 104 | Settings::values.use_vulkan_driver_pipeline_cache.UsingGlobal()); | 112 | Settings::values.use_vulkan_driver_pipeline_cache.UsingGlobal()); |
| 105 | ui->anisotropic_filtering_combobox->setEnabled( | 113 | ui->anisotropic_filtering_combobox->setEnabled( |
| 106 | Settings::values.max_anisotropy.UsingGlobal()); | 114 | Settings::values.max_anisotropy.UsingGlobal()); |
| 115 | ui->enable_compute_pipelines_checkbox->setEnabled( | ||
| 116 | Settings::values.enable_compute_pipelines.UsingGlobal()); | ||
| 107 | 117 | ||
| 108 | return; | 118 | return; |
| 109 | } | 119 | } |
| @@ -125,6 +135,9 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { | |||
| 125 | ConfigurationShared::SetColoredTristate(ui->use_vulkan_driver_pipeline_cache, | 135 | ConfigurationShared::SetColoredTristate(ui->use_vulkan_driver_pipeline_cache, |
| 126 | Settings::values.use_vulkan_driver_pipeline_cache, | 136 | Settings::values.use_vulkan_driver_pipeline_cache, |
| 127 | use_vulkan_driver_pipeline_cache); | 137 | use_vulkan_driver_pipeline_cache); |
| 138 | ConfigurationShared::SetColoredTristate(ui->enable_compute_pipelines_checkbox, | ||
| 139 | Settings::values.enable_compute_pipelines, | ||
| 140 | enable_compute_pipelines); | ||
| 128 | ConfigurationShared::SetColoredComboBox( | 141 | ConfigurationShared::SetColoredComboBox( |
| 129 | ui->gpu_accuracy, ui->label_gpu_accuracy, | 142 | ui->gpu_accuracy, ui->label_gpu_accuracy, |
| 130 | static_cast<int>(Settings::values.gpu_accuracy.GetValue(true))); | 143 | static_cast<int>(Settings::values.gpu_accuracy.GetValue(true))); |
| @@ -132,3 +145,7 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { | |||
| 132 | ui->anisotropic_filtering_combobox, ui->af_label, | 145 | ui->anisotropic_filtering_combobox, ui->af_label, |
| 133 | static_cast<int>(Settings::values.max_anisotropy.GetValue(true))); | 146 | static_cast<int>(Settings::values.max_anisotropy.GetValue(true))); |
| 134 | } | 147 | } |
| 148 | |||
| 149 | void ConfigureGraphicsAdvanced::ExposeComputeOption() { | ||
| 150 | ui->enable_compute_pipelines_checkbox->setVisible(true); | ||
| 151 | } | ||
diff --git a/src/yuzu/configuration/configure_graphics_advanced.h b/src/yuzu/configuration/configure_graphics_advanced.h index ae3c10946..1c7b636b9 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.h +++ b/src/yuzu/configuration/configure_graphics_advanced.h | |||
| @@ -28,6 +28,8 @@ public: | |||
| 28 | void ApplyConfiguration(); | 28 | void ApplyConfiguration(); |
| 29 | void SetConfiguration(); | 29 | void SetConfiguration(); |
| 30 | 30 | ||
| 31 | void ExposeComputeOption(); | ||
| 32 | |||
| 31 | private: | 33 | private: |
| 32 | void changeEvent(QEvent* event) override; | 34 | void changeEvent(QEvent* event) override; |
| 33 | void RetranslateUI(); | 35 | void RetranslateUI(); |
| @@ -44,6 +46,7 @@ private: | |||
| 44 | ConfigurationShared::CheckState use_asynchronous_shaders; | 46 | ConfigurationShared::CheckState use_asynchronous_shaders; |
| 45 | ConfigurationShared::CheckState use_fast_gpu_time; | 47 | ConfigurationShared::CheckState use_fast_gpu_time; |
| 46 | ConfigurationShared::CheckState use_vulkan_driver_pipeline_cache; | 48 | ConfigurationShared::CheckState use_vulkan_driver_pipeline_cache; |
| 49 | ConfigurationShared::CheckState enable_compute_pipelines; | ||
| 47 | 50 | ||
| 48 | const Core::System& system; | 51 | const Core::System& system; |
| 49 | }; | 52 | }; |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.ui b/src/yuzu/configuration/configure_graphics_advanced.ui index 9d8cbea09..9ef7c8e8f 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.ui +++ b/src/yuzu/configuration/configure_graphics_advanced.ui | |||
| @@ -137,6 +137,17 @@ | |||
| 137 | </widget> | 137 | </widget> |
| 138 | </item> | 138 | </item> |
| 139 | <item> | 139 | <item> |
| 140 | <widget class="QCheckBox" name="enable_compute_pipelines_checkbox"> | ||
| 141 | <property name="toolTip"> | ||
| 142 | <string>Enable compute pipelines, required by some games. This setting only exists for Intel proprietary drivers, and may crash if enabled. | ||
| 143 | Compute pipelines are always enabled on all other drivers.</string> | ||
| 144 | </property> | ||
| 145 | <property name="text"> | ||
| 146 | <string>Enable Compute Pipelines (Intel Vulkan only)</string> | ||
| 147 | </property> | ||
| 148 | </widget> | ||
| 149 | </item> | ||
| 150 | <item> | ||
| 140 | <widget class="QWidget" name="af_layout" native="true"> | 151 | <widget class="QWidget" name="af_layout" native="true"> |
| 141 | <layout class="QHBoxLayout" name="horizontalLayout_1"> | 152 | <layout class="QHBoxLayout" name="horizontalLayout_1"> |
| 142 | <property name="leftMargin"> | 153 | <property name="leftMargin"> |
diff --git a/src/yuzu/configuration/configure_per_game.cpp b/src/yuzu/configuration/configure_per_game.cpp index 7e757eafd..7ac162586 100644 --- a/src/yuzu/configuration/configure_per_game.cpp +++ b/src/yuzu/configuration/configure_per_game.cpp | |||
| @@ -48,8 +48,9 @@ ConfigurePerGame::ConfigurePerGame(QWidget* parent, u64 title_id_, const std::st | |||
| 48 | audio_tab = std::make_unique<ConfigureAudio>(system_, this); | 48 | audio_tab = std::make_unique<ConfigureAudio>(system_, this); |
| 49 | cpu_tab = std::make_unique<ConfigureCpu>(system_, this); | 49 | cpu_tab = std::make_unique<ConfigureCpu>(system_, this); |
| 50 | general_tab = std::make_unique<ConfigureGeneral>(system_, this); | 50 | general_tab = std::make_unique<ConfigureGeneral>(system_, this); |
| 51 | graphics_tab = std::make_unique<ConfigureGraphics>(system_, this); | ||
| 52 | graphics_advanced_tab = std::make_unique<ConfigureGraphicsAdvanced>(system_, this); | 51 | graphics_advanced_tab = std::make_unique<ConfigureGraphicsAdvanced>(system_, this); |
| 52 | graphics_tab = std::make_unique<ConfigureGraphics>( | ||
| 53 | system_, [&]() { graphics_advanced_tab->ExposeComputeOption(); }, this); | ||
| 53 | input_tab = std::make_unique<ConfigureInputPerGame>(system_, game_config.get(), this); | 54 | input_tab = std::make_unique<ConfigureInputPerGame>(system_, game_config.get(), this); |
| 54 | system_tab = std::make_unique<ConfigureSystem>(system_, this); | 55 | system_tab = std::make_unique<ConfigureSystem>(system_, this); |
| 55 | 56 | ||
diff --git a/src/yuzu/configuration/configure_per_game.h b/src/yuzu/configuration/configure_per_game.h index 4ecc43541..85752f1fa 100644 --- a/src/yuzu/configuration/configure_per_game.h +++ b/src/yuzu/configuration/configure_per_game.h | |||
| @@ -75,8 +75,8 @@ private: | |||
| 75 | std::unique_ptr<ConfigureAudio> audio_tab; | 75 | std::unique_ptr<ConfigureAudio> audio_tab; |
| 76 | std::unique_ptr<ConfigureCpu> cpu_tab; | 76 | std::unique_ptr<ConfigureCpu> cpu_tab; |
| 77 | std::unique_ptr<ConfigureGeneral> general_tab; | 77 | std::unique_ptr<ConfigureGeneral> general_tab; |
| 78 | std::unique_ptr<ConfigureGraphics> graphics_tab; | ||
| 79 | std::unique_ptr<ConfigureGraphicsAdvanced> graphics_advanced_tab; | 78 | std::unique_ptr<ConfigureGraphicsAdvanced> graphics_advanced_tab; |
| 79 | std::unique_ptr<ConfigureGraphics> graphics_tab; | ||
| 80 | std::unique_ptr<ConfigureInputPerGame> input_tab; | 80 | std::unique_ptr<ConfigureInputPerGame> input_tab; |
| 81 | std::unique_ptr<ConfigureSystem> system_tab; | 81 | std::unique_ptr<ConfigureSystem> system_tab; |
| 82 | }; | 82 | }; |