summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar liamwhite2023-05-15 12:05:24 -0400
committerGravatar GitHub2023-05-15 12:05:24 -0400
commitbbb6b58aa4d86ccf1d23b5bdb3f81a50775848a1 (patch)
treed0b3480a440f086faa6489a5b201ad955926c7d4
parentMerge pull request #10234 from Kelebek1/clouds_depth (diff)
parentconfigure_graphics_advanced: Hide input compute toggle a little later (diff)
downloadyuzu-bbb6b58aa4d86ccf1d23b5bdb3f81a50775848a1.tar.gz
yuzu-bbb6b58aa4d86ccf1d23b5bdb3f81a50775848a1.tar.xz
yuzu-bbb6b58aa4d86ccf1d23b5bdb3f81a50775848a1.zip
Merge pull request #10181 from lat9nq/intel-compute-toggle
configure_graphics: Add option to enable compute pipelines for Intel proprietary
Diffstat (limited to '')
-rw-r--r--src/common/settings.cpp1
-rw-r--r--src/common/settings.h1
-rw-r--r--src/video_core/renderer_vulkan/vk_pipeline_cache.cpp3
-rw-r--r--src/yuzu/configuration/config.cpp2
-rw-r--r--src/yuzu/configuration/configure_dialog.cpp3
-rw-r--r--src/yuzu/configuration/configure_dialog.h2
-rw-r--r--src/yuzu/configuration/configure_graphics.cpp23
-rw-r--r--src/yuzu/configuration/configure_graphics.h6
-rw-r--r--src/yuzu/configuration/configure_graphics_advanced.cpp17
-rw-r--r--src/yuzu/configuration/configure_graphics_advanced.h3
-rw-r--r--src/yuzu/configuration/configure_graphics_advanced.ui11
-rw-r--r--src/yuzu/configuration/configure_per_game.cpp3
-rw-r--r--src/yuzu/configuration/configure_per_game.h2
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
77ConfigureGraphics::ConfigureGraphics(const Core::System& system_, QWidget* parent) 79ConfigureGraphics::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
39public: 40public:
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
20ConfigureGraphicsAdvanced::~ConfigureGraphicsAdvanced() = default; 22ConfigureGraphicsAdvanced::~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
79void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) { 87void 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
149void 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
31private: 33private:
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.
143Compute 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};