diff options
| author | 2023-05-18 22:54:58 -0400 | |
|---|---|---|
| committer | 2023-07-21 10:56:07 -0400 | |
| commit | daa31121ee75dedcb636011e02815b816a7cc446 (patch) | |
| tree | ea05baafa53b7acf49724299ddbe6897279af313 /src | |
| parent | configuration: Use a mapping of setting value to name (diff) | |
| download | yuzu-daa31121ee75dedcb636011e02815b816a7cc446.tar.gz yuzu-daa31121ee75dedcb636011e02815b816a7cc446.tar.xz yuzu-daa31121ee75dedcb636011e02815b816a7cc446.zip | |
configure_cpu: Generate UI
Diffstat (limited to 'src')
| -rw-r--r-- | src/yuzu/configuration/configure_cpu.cpp | 138 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_cpu.h | 11 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_cpu.ui | 129 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_dialog.cpp | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_per_game.cpp | 3 |
5 files changed, 94 insertions, 190 deletions
diff --git a/src/yuzu/configuration/configure_cpu.cpp b/src/yuzu/configuration/configure_cpu.cpp index ecaeb1a6b..0982e006d 100644 --- a/src/yuzu/configuration/configure_cpu.cpp +++ b/src/yuzu/configuration/configure_cpu.cpp | |||
| @@ -5,88 +5,83 @@ | |||
| 5 | #include <memory> | 5 | #include <memory> |
| 6 | #include "common/common_types.h" | 6 | #include "common/common_types.h" |
| 7 | #include "common/settings.h" | 7 | #include "common/settings.h" |
| 8 | #include "configuration/shared_widget.h" | ||
| 8 | #include "core/core.h" | 9 | #include "core/core.h" |
| 9 | #include "ui_configure_cpu.h" | 10 | #include "ui_configure_cpu.h" |
| 10 | #include "yuzu/configuration/configuration_shared.h" | 11 | #include "yuzu/configuration/configuration_shared.h" |
| 11 | #include "yuzu/configuration/configure_cpu.h" | 12 | #include "yuzu/configuration/configure_cpu.h" |
| 12 | 13 | ||
| 13 | ConfigureCpu::ConfigureCpu(const Core::System& system_, | 14 | ConfigureCpu::ConfigureCpu( |
| 14 | std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group, | 15 | const Core::System& system_, |
| 15 | QWidget* parent) | 16 | std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group, |
| 16 | : Tab(group, parent), ui{std::make_unique<Ui::ConfigureCpu>()}, system{system_} { | 17 | const ConfigurationShared::TranslationMap& translations_, |
| 18 | const ConfigurationShared::ComboboxTranslationMap& combobox_translations_, QWidget* parent) | ||
| 19 | : Tab(group, parent), ui{std::make_unique<Ui::ConfigureCpu>()}, system{system_}, | ||
| 20 | translations{translations_}, combobox_translations{combobox_translations_} { | ||
| 17 | ui->setupUi(this); | 21 | ui->setupUi(this); |
| 18 | 22 | ||
| 19 | SetupPerGameUI(); | 23 | Setup(); |
| 20 | 24 | ||
| 21 | SetConfiguration(); | 25 | SetConfiguration(); |
| 22 | 26 | ||
| 23 | connect(ui->accuracy, qOverload<int>(&QComboBox::currentIndexChanged), this, | 27 | connect(accuracy_combobox, qOverload<int>(&QComboBox::currentIndexChanged), this, |
| 24 | &ConfigureCpu::UpdateGroup); | 28 | &ConfigureCpu::UpdateGroup); |
| 25 | } | 29 | } |
| 26 | 30 | ||
| 27 | ConfigureCpu::~ConfigureCpu() = default; | 31 | ConfigureCpu::~ConfigureCpu() = default; |
| 28 | 32 | ||
| 29 | void ConfigureCpu::SetConfiguration() { | 33 | void ConfigureCpu::SetConfiguration() {} |
| 34 | void ConfigureCpu::Setup() { | ||
| 30 | const bool runtime_lock = !system.IsPoweredOn(); | 35 | const bool runtime_lock = !system.IsPoweredOn(); |
| 36 | auto* accuracy_layout = ui->widget_accuracy->layout(); | ||
| 37 | auto* unsafe_layout = ui->unsafe_widget->layout(); | ||
| 38 | std::map<std::string, QWidget*> unsafe_hold{}; | ||
| 39 | |||
| 40 | std::forward_list<Settings::BasicSetting*> settings; | ||
| 41 | const auto push = [&](Settings::Category category) { | ||
| 42 | for (const auto setting : Settings::values.linkage.by_category[category]) { | ||
| 43 | settings.push_front(setting); | ||
| 44 | } | ||
| 45 | }; | ||
| 46 | |||
| 47 | push(Settings::Category::Cpu); | ||
| 48 | push(Settings::Category::CpuUnsafe); | ||
| 49 | |||
| 50 | for (const auto setting : settings) { | ||
| 51 | auto* widget = new ConfigurationShared::Widget(setting, translations, combobox_translations, | ||
| 52 | this, runtime_lock, apply_funcs); | ||
| 53 | |||
| 54 | if (!widget->Valid()) { | ||
| 55 | delete widget; | ||
| 56 | continue; | ||
| 57 | } | ||
| 58 | |||
| 59 | if (setting->Id() == Settings::values.cpu_accuracy.Id()) { | ||
| 60 | accuracy_layout->addWidget(widget); | ||
| 61 | accuracy_combobox = widget->combobox; | ||
| 62 | } else { | ||
| 63 | unsafe_hold.insert({setting->GetLabel(), widget}); | ||
| 64 | } | ||
| 65 | } | ||
| 31 | 66 | ||
| 32 | ui->accuracy->setEnabled(runtime_lock); | 67 | for (const auto& [label, widget] : unsafe_hold) { |
| 33 | ui->cpuopt_unsafe_unfuse_fma->setEnabled(runtime_lock); | 68 | unsafe_layout->addWidget(widget); |
| 34 | ui->cpuopt_unsafe_reduce_fp_error->setEnabled(runtime_lock); | ||
| 35 | ui->cpuopt_unsafe_ignore_standard_fpcr->setEnabled(runtime_lock); | ||
| 36 | ui->cpuopt_unsafe_inaccurate_nan->setEnabled(runtime_lock); | ||
| 37 | ui->cpuopt_unsafe_fastmem_check->setEnabled(runtime_lock); | ||
| 38 | ui->cpuopt_unsafe_ignore_global_monitor->setEnabled(runtime_lock); | ||
| 39 | |||
| 40 | ui->cpuopt_unsafe_unfuse_fma->setChecked(Settings::values.cpuopt_unsafe_unfuse_fma.GetValue()); | ||
| 41 | ui->cpuopt_unsafe_reduce_fp_error->setChecked( | ||
| 42 | Settings::values.cpuopt_unsafe_reduce_fp_error.GetValue()); | ||
| 43 | ui->cpuopt_unsafe_ignore_standard_fpcr->setChecked( | ||
| 44 | Settings::values.cpuopt_unsafe_ignore_standard_fpcr.GetValue()); | ||
| 45 | ui->cpuopt_unsafe_inaccurate_nan->setChecked( | ||
| 46 | Settings::values.cpuopt_unsafe_inaccurate_nan.GetValue()); | ||
| 47 | ui->cpuopt_unsafe_fastmem_check->setChecked( | ||
| 48 | Settings::values.cpuopt_unsafe_fastmem_check.GetValue()); | ||
| 49 | ui->cpuopt_unsafe_ignore_global_monitor->setChecked( | ||
| 50 | Settings::values.cpuopt_unsafe_ignore_global_monitor.GetValue()); | ||
| 51 | |||
| 52 | if (Settings::IsConfiguringGlobal()) { | ||
| 53 | ui->accuracy->setCurrentIndex(static_cast<int>(Settings::values.cpu_accuracy.GetValue())); | ||
| 54 | } else { | ||
| 55 | ConfigurationShared::SetPerGameSetting(ui->accuracy, &Settings::values.cpu_accuracy); | ||
| 56 | ConfigurationShared::SetHighlight(ui->widget_accuracy, | ||
| 57 | !Settings::values.cpu_accuracy.UsingGlobal()); | ||
| 58 | } | 69 | } |
| 59 | UpdateGroup(ui->accuracy->currentIndex()); | 70 | |
| 71 | UpdateGroup(accuracy_combobox->currentIndex()); | ||
| 60 | } | 72 | } |
| 61 | 73 | ||
| 62 | void ConfigureCpu::UpdateGroup(int index) { | 74 | void ConfigureCpu::UpdateGroup(int index) { |
| 63 | if (!Settings::IsConfiguringGlobal()) { | 75 | const auto accuracy = static_cast<Settings::CPUAccuracy>( |
| 64 | index -= ConfigurationShared::USE_GLOBAL_OFFSET; | 76 | combobox_translations.at(typeid(Settings::CPUAccuracy))[index].first); |
| 65 | } | ||
| 66 | const auto accuracy = static_cast<Settings::CPUAccuracy>(index); | ||
| 67 | ui->unsafe_group->setVisible(accuracy == Settings::CPUAccuracy::Unsafe); | 77 | ui->unsafe_group->setVisible(accuracy == Settings::CPUAccuracy::Unsafe); |
| 68 | } | 78 | } |
| 69 | 79 | ||
| 70 | void ConfigureCpu::ApplyConfiguration() { | 80 | void ConfigureCpu::ApplyConfiguration() { |
| 71 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.cpu_accuracy, ui->accuracy); | 81 | const bool is_powered_on = system.IsPoweredOn(); |
| 72 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.cpuopt_unsafe_unfuse_fma, | 82 | for (const auto& apply_func : apply_funcs) { |
| 73 | ui->cpuopt_unsafe_unfuse_fma, | 83 | apply_func(is_powered_on); |
| 74 | cpuopt_unsafe_unfuse_fma); | 84 | } |
| 75 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.cpuopt_unsafe_reduce_fp_error, | ||
| 76 | ui->cpuopt_unsafe_reduce_fp_error, | ||
| 77 | cpuopt_unsafe_reduce_fp_error); | ||
| 78 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.cpuopt_unsafe_ignore_standard_fpcr, | ||
| 79 | ui->cpuopt_unsafe_ignore_standard_fpcr, | ||
| 80 | cpuopt_unsafe_ignore_standard_fpcr); | ||
| 81 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.cpuopt_unsafe_inaccurate_nan, | ||
| 82 | ui->cpuopt_unsafe_inaccurate_nan, | ||
| 83 | cpuopt_unsafe_inaccurate_nan); | ||
| 84 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.cpuopt_unsafe_fastmem_check, | ||
| 85 | ui->cpuopt_unsafe_fastmem_check, | ||
| 86 | cpuopt_unsafe_fastmem_check); | ||
| 87 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.cpuopt_unsafe_ignore_global_monitor, | ||
| 88 | ui->cpuopt_unsafe_ignore_global_monitor, | ||
| 89 | cpuopt_unsafe_ignore_global_monitor); | ||
| 90 | } | 85 | } |
| 91 | 86 | ||
| 92 | void ConfigureCpu::changeEvent(QEvent* event) { | 87 | void ConfigureCpu::changeEvent(QEvent* event) { |
| @@ -100,32 +95,3 @@ void ConfigureCpu::changeEvent(QEvent* event) { | |||
| 100 | void ConfigureCpu::RetranslateUI() { | 95 | void ConfigureCpu::RetranslateUI() { |
| 101 | ui->retranslateUi(this); | 96 | ui->retranslateUi(this); |
| 102 | } | 97 | } |
| 103 | |||
| 104 | void ConfigureCpu::SetupPerGameUI() { | ||
| 105 | if (Settings::IsConfiguringGlobal()) { | ||
| 106 | return; | ||
| 107 | } | ||
| 108 | |||
| 109 | ConfigurationShared::SetColoredComboBox( | ||
| 110 | ui->accuracy, ui->widget_accuracy, | ||
| 111 | static_cast<u32>(Settings::values.cpu_accuracy.GetValue(true))); | ||
| 112 | |||
| 113 | ConfigurationShared::SetColoredTristate(ui->cpuopt_unsafe_unfuse_fma, | ||
| 114 | Settings::values.cpuopt_unsafe_unfuse_fma, | ||
| 115 | cpuopt_unsafe_unfuse_fma); | ||
| 116 | ConfigurationShared::SetColoredTristate(ui->cpuopt_unsafe_reduce_fp_error, | ||
| 117 | Settings::values.cpuopt_unsafe_reduce_fp_error, | ||
| 118 | cpuopt_unsafe_reduce_fp_error); | ||
| 119 | ConfigurationShared::SetColoredTristate(ui->cpuopt_unsafe_ignore_standard_fpcr, | ||
| 120 | Settings::values.cpuopt_unsafe_ignore_standard_fpcr, | ||
| 121 | cpuopt_unsafe_ignore_standard_fpcr); | ||
| 122 | ConfigurationShared::SetColoredTristate(ui->cpuopt_unsafe_inaccurate_nan, | ||
| 123 | Settings::values.cpuopt_unsafe_inaccurate_nan, | ||
| 124 | cpuopt_unsafe_inaccurate_nan); | ||
| 125 | ConfigurationShared::SetColoredTristate(ui->cpuopt_unsafe_fastmem_check, | ||
| 126 | Settings::values.cpuopt_unsafe_fastmem_check, | ||
| 127 | cpuopt_unsafe_fastmem_check); | ||
| 128 | ConfigurationShared::SetColoredTristate(ui->cpuopt_unsafe_ignore_global_monitor, | ||
| 129 | Settings::values.cpuopt_unsafe_ignore_global_monitor, | ||
| 130 | cpuopt_unsafe_ignore_global_monitor); | ||
| 131 | } | ||
diff --git a/src/yuzu/configuration/configure_cpu.h b/src/yuzu/configuration/configure_cpu.h index 187d080b6..fb970122d 100644 --- a/src/yuzu/configuration/configure_cpu.h +++ b/src/yuzu/configuration/configure_cpu.h | |||
| @@ -19,6 +19,8 @@ class ConfigureCpu : public ConfigurationShared::Tab { | |||
| 19 | public: | 19 | public: |
| 20 | explicit ConfigureCpu(const Core::System& system_, | 20 | explicit ConfigureCpu(const Core::System& system_, |
| 21 | std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group, | 21 | std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group, |
| 22 | const ConfigurationShared::TranslationMap& translations, | ||
| 23 | const ConfigurationShared::ComboboxTranslationMap& combobox_translations, | ||
| 22 | QWidget* parent = nullptr); | 24 | QWidget* parent = nullptr); |
| 23 | ~ConfigureCpu() override; | 25 | ~ConfigureCpu() override; |
| 24 | 26 | ||
| @@ -31,7 +33,7 @@ private: | |||
| 31 | 33 | ||
| 32 | void UpdateGroup(int index); | 34 | void UpdateGroup(int index); |
| 33 | 35 | ||
| 34 | void SetupPerGameUI(); | 36 | void Setup(); |
| 35 | 37 | ||
| 36 | std::unique_ptr<Ui::ConfigureCpu> ui; | 38 | std::unique_ptr<Ui::ConfigureCpu> ui; |
| 37 | 39 | ||
| @@ -43,4 +45,11 @@ private: | |||
| 43 | ConfigurationShared::CheckState cpuopt_unsafe_ignore_global_monitor; | 45 | ConfigurationShared::CheckState cpuopt_unsafe_ignore_global_monitor; |
| 44 | 46 | ||
| 45 | const Core::System& system; | 47 | const Core::System& system; |
| 48 | |||
| 49 | const ConfigurationShared::TranslationMap& translations; | ||
| 50 | const ConfigurationShared::ComboboxTranslationMap& combobox_translations; | ||
| 51 | |||
| 52 | std::forward_list<std::function<void(bool)>> apply_funcs{}; | ||
| 53 | |||
| 54 | QComboBox* accuracy_combobox; | ||
| 46 | }; | 55 | }; |
diff --git a/src/yuzu/configuration/configure_cpu.ui b/src/yuzu/configuration/configure_cpu.ui index 8ae569ee6..835788c1f 100644 --- a/src/yuzu/configuration/configure_cpu.ui +++ b/src/yuzu/configuration/configure_cpu.ui | |||
| @@ -27,38 +27,19 @@ | |||
| 27 | <layout class="QVBoxLayout"> | 27 | <layout class="QVBoxLayout"> |
| 28 | <item> | 28 | <item> |
| 29 | <widget class="QWidget" name="widget_accuracy" native="true"> | 29 | <widget class="QWidget" name="widget_accuracy" native="true"> |
| 30 | <layout class="QHBoxLayout" name="layout_accuracy"> | 30 | <layout class="QVBoxLayout" name="verticalLayout"> |
| 31 | <item> | 31 | <property name="leftMargin"> |
| 32 | <widget class="QLabel" name="label_accuracy"> | 32 | <number>0</number> |
| 33 | <property name="text"> | 33 | </property> |
| 34 | <string>Accuracy:</string> | 34 | <property name="topMargin"> |
| 35 | </property> | 35 | <number>0</number> |
| 36 | </widget> | 36 | </property> |
| 37 | </item> | 37 | <property name="rightMargin"> |
| 38 | <item> | 38 | <number>0</number> |
| 39 | <widget class="QComboBox" name="accuracy"> | 39 | </property> |
| 40 | <item> | 40 | <property name="bottomMargin"> |
| 41 | <property name="text"> | 41 | <number>0</number> |
| 42 | <string>Auto</string> | 42 | </property> |
| 43 | </property> | ||
| 44 | </item> | ||
| 45 | <item> | ||
| 46 | <property name="text"> | ||
| 47 | <string>Accurate</string> | ||
| 48 | </property> | ||
| 49 | </item> | ||
| 50 | <item> | ||
| 51 | <property name="text"> | ||
| 52 | <string>Unsafe</string> | ||
| 53 | </property> | ||
| 54 | </item> | ||
| 55 | <item> | ||
| 56 | <property name="text"> | ||
| 57 | <string>Paranoid (disables most optimizations)</string> | ||
| 58 | </property> | ||
| 59 | </item> | ||
| 60 | </widget> | ||
| 61 | </item> | ||
| 62 | </layout> | 43 | </layout> |
| 63 | </widget> | 44 | </widget> |
| 64 | </item> | 45 | </item> |
| @@ -96,75 +77,21 @@ | |||
| 96 | </widget> | 77 | </widget> |
| 97 | </item> | 78 | </item> |
| 98 | <item> | 79 | <item> |
| 99 | <widget class="QCheckBox" name="cpuopt_unsafe_unfuse_fma"> | 80 | <widget class="QWidget" name="unsafe_widget" native="true"> |
| 100 | <property name="toolTip"> | 81 | <layout class="QVBoxLayout" name="unsafe_layout"> |
| 101 | <string> | 82 | <property name="leftMargin"> |
| 102 | <div>This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support.</div> | 83 | <number>0</number> |
| 103 | </string> | 84 | </property> |
| 104 | </property> | 85 | <property name="topMargin"> |
| 105 | <property name="text"> | 86 | <number>0</number> |
| 106 | <string>Unfuse FMA (improve performance on CPUs without FMA)</string> | 87 | </property> |
| 107 | </property> | 88 | <property name="rightMargin"> |
| 108 | </widget> | 89 | <number>0</number> |
| 109 | </item> | 90 | </property> |
| 110 | <item> | 91 | <property name="bottomMargin"> |
| 111 | <widget class="QCheckBox" name="cpuopt_unsafe_reduce_fp_error"> | 92 | <number>0</number> |
| 112 | <property name="toolTip"> | 93 | </property> |
| 113 | <string> | 94 | </layout> |
| 114 | <div>This option improves the speed of some approximate floating-point functions by using less accurate native approximations.</div> | ||
| 115 | </string> | ||
| 116 | </property> | ||
| 117 | <property name="text"> | ||
| 118 | <string>Faster FRSQRTE and FRECPE</string> | ||
| 119 | </property> | ||
| 120 | </widget> | ||
| 121 | </item> | ||
| 122 | <item> | ||
| 123 | <widget class="QCheckBox" name="cpuopt_unsafe_ignore_standard_fpcr"> | ||
| 124 | <property name="toolTip"> | ||
| 125 | <string> | ||
| 126 | <div>This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes.</div> | ||
| 127 | </string> | ||
| 128 | </property> | ||
| 129 | <property name="text"> | ||
| 130 | <string>Faster ASIMD instructions (32 bits only)</string> | ||
| 131 | </property> | ||
| 132 | </widget> | ||
| 133 | </item> | ||
| 134 | <item> | ||
| 135 | <widget class="QCheckBox" name="cpuopt_unsafe_inaccurate_nan"> | ||
| 136 | <property name="toolTip"> | ||
| 137 | <string> | ||
| 138 | <div>This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions.</div> | ||
| 139 | </string> | ||
| 140 | </property> | ||
| 141 | <property name="text"> | ||
| 142 | <string>Inaccurate NaN handling</string> | ||
| 143 | </property> | ||
| 144 | </widget> | ||
| 145 | </item> | ||
| 146 | <item> | ||
| 147 | <widget class="QCheckBox" name="cpuopt_unsafe_fastmem_check"> | ||
| 148 | <property name="toolTip"> | ||
| 149 | <string> | ||
| 150 | <div>This option improves speed by eliminating a safety check before every memory read/write in guest. Disabling it may allow a game to read/write the emulator's memory.</div> | ||
| 151 | </string> | ||
| 152 | </property> | ||
| 153 | <property name="text"> | ||
| 154 | <string>Disable address space checks</string> | ||
| 155 | </property> | ||
| 156 | </widget> | ||
| 157 | </item> | ||
| 158 | <item> | ||
| 159 | <widget class="QCheckBox" name="cpuopt_unsafe_ignore_global_monitor"> | ||
| 160 | <property name="toolTip"> | ||
| 161 | <string> | ||
| 162 | <div>This option improves speed by relying only on the semantics of cmpxchg to ensure safety of exclusive access instructions. Please note this may result in deadlocks and other race conditions.</div> | ||
| 163 | </string> | ||
| 164 | </property> | ||
| 165 | <property name="text"> | ||
| 166 | <string>Ignore global monitor</string> | ||
| 167 | </property> | ||
| 168 | </widget> | 95 | </widget> |
| 169 | </item> | 96 | </item> |
| 170 | </layout> | 97 | </layout> |
diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp index 1a339a227..c7d132fc8 100644 --- a/src/yuzu/configuration/configure_dialog.cpp +++ b/src/yuzu/configuration/configure_dialog.cpp | |||
| @@ -37,7 +37,8 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry_, | |||
| 37 | combobox_translations{ConfigurationShared::ComboboxEnumeration(this)}, | 37 | combobox_translations{ConfigurationShared::ComboboxEnumeration(this)}, |
| 38 | audio_tab{std::make_unique<ConfigureAudio>(system_, nullptr, *translations, | 38 | audio_tab{std::make_unique<ConfigureAudio>(system_, nullptr, *translations, |
| 39 | *combobox_translations, this)}, | 39 | *combobox_translations, this)}, |
| 40 | cpu_tab{std::make_unique<ConfigureCpu>(system_, nullptr, this)}, | 40 | cpu_tab{std::make_unique<ConfigureCpu>(system_, nullptr, *translations, |
| 41 | *combobox_translations, this)}, | ||
| 41 | debug_tab_tab{std::make_unique<ConfigureDebugTab>(system_, this)}, | 42 | debug_tab_tab{std::make_unique<ConfigureDebugTab>(system_, this)}, |
| 42 | filesystem_tab{std::make_unique<ConfigureFilesystem>(this)}, | 43 | filesystem_tab{std::make_unique<ConfigureFilesystem>(this)}, |
| 43 | general_tab{std::make_unique<ConfigureGeneral>(system_, nullptr, *translations, | 44 | general_tab{std::make_unique<ConfigureGeneral>(system_, nullptr, *translations, |
diff --git a/src/yuzu/configuration/configure_per_game.cpp b/src/yuzu/configuration/configure_per_game.cpp index 845ffeeb8..5863beca0 100644 --- a/src/yuzu/configuration/configure_per_game.cpp +++ b/src/yuzu/configuration/configure_per_game.cpp | |||
| @@ -53,7 +53,8 @@ ConfigurePerGame::ConfigurePerGame(QWidget* parent, u64 title_id_, const std::st | |||
| 53 | addons_tab = std::make_unique<ConfigurePerGameAddons>(system_, this); | 53 | addons_tab = std::make_unique<ConfigurePerGameAddons>(system_, this); |
| 54 | audio_tab = std::make_unique<ConfigureAudio>(system_, tab_group, *translations, | 54 | audio_tab = std::make_unique<ConfigureAudio>(system_, tab_group, *translations, |
| 55 | *combobox_translations, this); | 55 | *combobox_translations, this); |
| 56 | cpu_tab = std::make_unique<ConfigureCpu>(system_, tab_group, this); | 56 | cpu_tab = std::make_unique<ConfigureCpu>(system_, tab_group, *translations, |
| 57 | *combobox_translations, this); | ||
| 57 | graphics_advanced_tab = std::make_unique<ConfigureGraphicsAdvanced>( | 58 | graphics_advanced_tab = std::make_unique<ConfigureGraphicsAdvanced>( |
| 58 | system_, tab_group, *translations, *combobox_translations, this); | 59 | system_, tab_group, *translations, *combobox_translations, this); |
| 59 | graphics_tab = std::make_unique<ConfigureGraphics>( | 60 | graphics_tab = std::make_unique<ConfigureGraphics>( |