From 5cffa342884df531d911555f7b3db9d2f6d1d1f0 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Wed, 3 May 2023 20:42:33 -0400 Subject: settings,video_core: Consolidate ASTC decoding options Just puts them all neatly into one place. --- src/yuzu/configuration/configure_graphics.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index a4965524a..e70781357 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -194,14 +194,13 @@ void ConfigureGraphics::SetConfiguration() { ui->use_disk_shader_cache->setEnabled(runtime_lock); ui->nvdec_emulation_widget->setEnabled(runtime_lock); ui->resolution_combobox->setEnabled(runtime_lock); - ui->accelerate_astc->setEnabled(runtime_lock); + ui->astc_decode_mode_combobox->setEnabled(runtime_lock); ui->vsync_mode_layout->setEnabled(runtime_lock || Settings::values.renderer_backend.GetValue() == Settings::RendererBackend::Vulkan); ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache.GetValue()); ui->use_asynchronous_gpu_emulation->setChecked( Settings::values.use_asynchronous_gpu_emulation.GetValue()); - ui->accelerate_astc->setChecked(Settings::values.accelerate_astc.GetValue()); if (Settings::IsConfiguringGlobal()) { ui->api->setCurrentIndex(static_cast(Settings::values.renderer_backend.GetValue())); @@ -222,6 +221,11 @@ void ConfigureGraphics::SetConfiguration() { ConfigurationShared::SetHighlight(ui->api_widget, !Settings::values.renderer_backend.UsingGlobal()); + ConfigurationShared::SetPerGameSetting(ui->astc_decode_mode_combobox, + &Settings::values.accelerate_astc); + ConfigurationShared::SetHighlight(ui->astc_decode_mode_layout, + !Settings::values.accelerate_astc.UsingGlobal()); + ConfigurationShared::SetPerGameSetting(ui->nvdec_emulation, &Settings::values.nvdec_emulation); ConfigurationShared::SetHighlight(ui->nvdec_emulation_widget, @@ -337,8 +341,8 @@ void ConfigureGraphics::ApplyConfiguration() { ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_gpu_emulation, ui->use_asynchronous_gpu_emulation, use_asynchronous_gpu_emulation); - ConfigurationShared::ApplyPerGameSetting(&Settings::values.accelerate_astc, ui->accelerate_astc, - accelerate_astc); + ConfigurationShared::ApplyPerGameSetting(&Settings::values.accelerate_astc, + ui->astc_decode_mode_combobox); if (Settings::IsConfiguringGlobal()) { // Guard if during game and set to game-specific value @@ -555,7 +559,7 @@ void ConfigureGraphics::SetupPerGameUI() { ui->use_asynchronous_gpu_emulation->setEnabled( Settings::values.use_asynchronous_gpu_emulation.UsingGlobal()); ui->nvdec_emulation->setEnabled(Settings::values.nvdec_emulation.UsingGlobal()); - ui->accelerate_astc->setEnabled(Settings::values.accelerate_astc.UsingGlobal()); + ui->astc_decode_mode_combobox->setEnabled(Settings::values.accelerate_astc.UsingGlobal()); ui->use_disk_shader_cache->setEnabled(Settings::values.use_disk_shader_cache.UsingGlobal()); ui->bg_button->setEnabled(Settings::values.bg_red.UsingGlobal()); ui->fsr_slider_layout->setEnabled(Settings::values.fsr_sharpening_slider.UsingGlobal()); @@ -577,8 +581,6 @@ void ConfigureGraphics::SetupPerGameUI() { ConfigurationShared::SetColoredTristate( ui->use_disk_shader_cache, Settings::values.use_disk_shader_cache, use_disk_shader_cache); - ConfigurationShared::SetColoredTristate(ui->accelerate_astc, Settings::values.accelerate_astc, - accelerate_astc); ConfigurationShared::SetColoredTristate(ui->use_asynchronous_gpu_emulation, Settings::values.use_asynchronous_gpu_emulation, use_asynchronous_gpu_emulation); @@ -597,6 +599,9 @@ void ConfigureGraphics::SetupPerGameUI() { ConfigurationShared::SetColoredComboBox( ui->anti_aliasing_combobox, ui->anti_aliasing_label, static_cast(Settings::values.anti_aliasing.GetValue(true))); + ConfigurationShared::SetColoredComboBox( + ui->astc_decode_mode_combobox, ui->astc_decode_mode_label, + static_cast(Settings::values.accelerate_astc.GetValue(true))); ConfigurationShared::InsertGlobalItem( ui->api, static_cast(Settings::values.renderer_backend.GetValue(true))); ConfigurationShared::InsertGlobalItem( -- cgit v1.2.3 From d3b94d64d492407dcd43acf79cd1e94d57630109 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Fri, 5 May 2023 23:30:59 -0400 Subject: configuration: Add base class to tabs Tabs that largely configure SwitchableSetting's are now Tabs and grouped together. --- src/yuzu/configuration/configure_graphics.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index e70781357..a8c5b1d9f 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -70,12 +70,12 @@ static constexpr Settings::VSyncMode PresentModeToSetting(VkPresentModeKHR mode) } } -ConfigureGraphics::ConfigureGraphics(const Core::System& system_, - std::vector& records_, - const std::function& expose_compute_option_, - QWidget* parent) - : QWidget(parent), ui{std::make_unique()}, records{records_}, - expose_compute_option{expose_compute_option_}, system{system_} { +ConfigureGraphics::ConfigureGraphics( + const Core::System& system_, std::vector& records_, + const std::function& expose_compute_option_, + std::shared_ptr> group, QWidget* parent) + : ConfigurationShared::Tab(group, parent), ui{std::make_unique()}, + records{records_}, expose_compute_option{expose_compute_option_}, system{system_} { vulkan_device = Settings::values.vulkan_device.GetValue(); RetrieveVulkanDevices(); -- cgit v1.2.3 From f8435d676f0073dee4d2ea87c84767a53911fbe6 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Sun, 7 May 2023 12:03:40 -0400 Subject: configure_graphics: Partial runtime implementation --- src/yuzu/configuration/configure_graphics.cpp | 785 ++++++++++++++------------ 1 file changed, 418 insertions(+), 367 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index a8c5b1d9f..8128a4047 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -55,100 +55,123 @@ static constexpr VkPresentModeKHR VSyncSettingToMode(Settings::VSyncMode mode) { } } -static constexpr Settings::VSyncMode PresentModeToSetting(VkPresentModeKHR mode) { - switch (mode) { - case VK_PRESENT_MODE_IMMEDIATE_KHR: - return Settings::VSyncMode::Immediate; - case VK_PRESENT_MODE_MAILBOX_KHR: - return Settings::VSyncMode::Mailbox; - case VK_PRESENT_MODE_FIFO_KHR: - return Settings::VSyncMode::FIFO; - case VK_PRESENT_MODE_FIFO_RELAXED_KHR: - return Settings::VSyncMode::FIFORelaxed; - default: - return Settings::VSyncMode::FIFO; - } -} +// static constexpr Settings::VSyncMode PresentModeToSetting(VkPresentModeKHR mode) { +// switch (mode) { +// case VK_PRESENT_MODE_IMMEDIATE_KHR: +// return Settings::VSyncMode::Immediate; +// case VK_PRESENT_MODE_MAILBOX_KHR: +// return Settings::VSyncMode::Mailbox; +// case VK_PRESENT_MODE_FIFO_KHR: +// return Settings::VSyncMode::FIFO; +// case VK_PRESENT_MODE_FIFO_RELAXED_KHR: +// return Settings::VSyncMode::FIFORelaxed; +// default: +// return Settings::VSyncMode::FIFO; +// } +// } ConfigureGraphics::ConfigureGraphics( const Core::System& system_, std::vector& records_, const std::function& expose_compute_option_, - std::shared_ptr> group, QWidget* parent) + std::shared_ptr> group, + const ConfigurationShared::TranslationMap& translations_, QWidget* parent) : ConfigurationShared::Tab(group, parent), ui{std::make_unique()}, - records{records_}, expose_compute_option{expose_compute_option_}, system{system_} { + records{records_}, expose_compute_option{expose_compute_option_}, system{system_}, + translations{translations_} { vulkan_device = Settings::values.vulkan_device.GetValue(); RetrieveVulkanDevices(); ui->setupUi(this); + SetConfiguration(); + for (const auto& device : vulkan_devices) { - ui->device->addItem(device); + vulkan_device_combobox->addItem(device); } - ui->backend->addItem(QStringLiteral("GLSL")); - ui->backend->addItem(tr("GLASM (Assembly Shaders, NVIDIA Only)")); - ui->backend->addItem(tr("SPIR-V (Experimental, Mesa Only)")); + UpdateBackgroundColorButton(QColor::fromRgb(Settings::values.bg_red.GetValue(), + Settings::values.bg_green.GetValue(), + Settings::values.bg_blue.GetValue())); + UpdateAPILayout(); + PopulateVSyncModeSelection(); //< must happen after UpdateAPILayout + // SetFSRIndicatorText(ui->fsr_sharpening_slider->sliderPosition()); - SetupPerGameUI(); + // VSync setting needs to be determined after populating the VSync combobox + if (Settings::IsConfiguringGlobal()) { + const auto vsync_mode_setting = Settings::values.vsync_mode.GetValue(); + const auto vsync_mode = VSyncSettingToMode(vsync_mode_setting); + int index{}; + for (const auto mode : vsync_mode_combobox_enum_map) { + if (mode == vsync_mode) { + break; + } + index++; + } + if (static_cast(index) < vsync_mode_combobox_enum_map.size()) { + vsync_mode_combobox->setCurrentIndex(index); + } + } - SetConfiguration(); + SetupPerGameUI(); - connect(ui->api, qOverload(&QComboBox::currentIndexChanged), this, [this] { + connect(api_combobox, qOverload(&QComboBox::currentIndexChanged), this, [this] { UpdateAPILayout(); PopulateVSyncModeSelection(); if (!Settings::IsConfiguringGlobal()) { - ConfigurationShared::SetHighlight( - ui->api_widget, ui->api->currentIndex() != ConfigurationShared::USE_GLOBAL_INDEX); + ConfigurationShared::SetHighlight(ui->api_widget, + api_combobox->currentIndex() != + ConfigurationShared::USE_GLOBAL_INDEX); } }); - connect(ui->device, qOverload(&QComboBox::activated), this, [this](int device) { - UpdateDeviceSelection(device); - PopulateVSyncModeSelection(); - }); - connect(ui->backend, qOverload(&QComboBox::activated), this, + connect(vulkan_device_combobox, qOverload(&QComboBox::activated), this, + [this](int device) { + UpdateDeviceSelection(device); + PopulateVSyncModeSelection(); + }); + connect(shader_backend_combobox, qOverload(&QComboBox::activated), this, [this](int backend) { UpdateShaderBackendSelection(backend); }); - connect(ui->bg_button, &QPushButton::clicked, this, [this] { - const QColor new_bg_color = QColorDialog::getColor(bg_color); - if (!new_bg_color.isValid()) { - return; - } - UpdateBackgroundColorButton(new_bg_color); - }); + // connect(ui->bg_button, &QPushButton::clicked, this, [this] { + // const QColor new_bg_color = QColorDialog::getColor(bg_color); + // if (!new_bg_color.isValid()) { + // return; + // } + // UpdateBackgroundColorButton(new_bg_color); + // }); - ui->api->setEnabled(!UISettings::values.has_broken_vulkan && ui->api->isEnabled()); + api_combobox->setEnabled(!UISettings::values.has_broken_vulkan && api_combobox->isEnabled()); ui->api_widget->setEnabled( (!UISettings::values.has_broken_vulkan || Settings::IsConfiguringGlobal()) && ui->api_widget->isEnabled()); - ui->bg_label->setVisible(Settings::IsConfiguringGlobal()); - ui->bg_combobox->setVisible(!Settings::IsConfiguringGlobal()); + // ui->bg_label->setVisible(Settings::IsConfiguringGlobal()); + // ui->bg_combobox->setVisible(!Settings::IsConfiguringGlobal()); - connect(ui->fsr_sharpening_slider, &QSlider::valueChanged, this, - &ConfigureGraphics::SetFSRIndicatorText); - ui->fsr_sharpening_combobox->setVisible(!Settings::IsConfiguringGlobal()); - ui->fsr_sharpening_label->setVisible(Settings::IsConfiguringGlobal()); + // connect(ui->fsr_sharpening_slider, &QSlider::valueChanged, this, + // &ConfigureGraphics::SetFSRIndicatorText); + // ui->fsr_sharpening_combobox->setVisible(!Settings::IsConfiguringGlobal()); + // ui->fsr_sharpening_label->setVisible(Settings::IsConfiguringGlobal()); } void ConfigureGraphics::PopulateVSyncModeSelection() { const Settings::RendererBackend backend{GetCurrentGraphicsBackend()}; if (backend == Settings::RendererBackend::Null) { - ui->vsync_mode_combobox->setEnabled(false); + vsync_mode_combobox->setEnabled(false); return; } - ui->vsync_mode_combobox->setEnabled(true); + vsync_mode_combobox->setEnabled(true); const int current_index = //< current selected vsync mode from combobox - ui->vsync_mode_combobox->currentIndex(); + vsync_mode_combobox->currentIndex(); const auto current_mode = //< current selected vsync mode as a VkPresentModeKHR current_index == -1 ? VSyncSettingToMode(Settings::values.vsync_mode.GetValue()) : vsync_mode_combobox_enum_map[current_index]; int index{}; - const int device{ui->device->currentIndex()}; //< current selected Vulkan device + const int device{vulkan_device_combobox->currentIndex()}; //< current selected Vulkan device const auto& present_modes = //< relevant vector of present modes for the selected device or API backend == Settings::RendererBackend::Vulkan ? device_present_modes[device] : default_present_modes; - ui->vsync_mode_combobox->clear(); + vsync_mode_combobox->clear(); vsync_mode_combobox_enum_map.clear(); vsync_mode_combobox_enum_map.reserve(present_modes.size()); for (const auto present_mode : present_modes) { @@ -157,10 +180,10 @@ void ConfigureGraphics::PopulateVSyncModeSelection() { continue; } - ui->vsync_mode_combobox->insertItem(index, mode_name); + vsync_mode_combobox->insertItem(index, mode_name); vsync_mode_combobox_enum_map.push_back(present_mode); if (present_mode == current_mode) { - ui->vsync_mode_combobox->setCurrentIndex(index); + vsync_mode_combobox->setCurrentIndex(index); } index++; } @@ -188,114 +211,137 @@ ConfigureGraphics::~ConfigureGraphics() = default; void ConfigureGraphics::SetConfiguration() { const bool runtime_lock = !system.IsPoweredOn(); + QLayout& api_layout = *ui->api_widget->layout(); + QLayout& graphics_layout = *ui->graphics_widget->layout(); - ui->api_widget->setEnabled(runtime_lock); - ui->use_asynchronous_gpu_emulation->setEnabled(runtime_lock); - ui->use_disk_shader_cache->setEnabled(runtime_lock); - ui->nvdec_emulation_widget->setEnabled(runtime_lock); - ui->resolution_combobox->setEnabled(runtime_lock); - ui->astc_decode_mode_combobox->setEnabled(runtime_lock); - ui->vsync_mode_layout->setEnabled(runtime_lock || - Settings::values.renderer_backend.GetValue() == - Settings::RendererBackend::Vulkan); - ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache.GetValue()); - ui->use_asynchronous_gpu_emulation->setChecked( - Settings::values.use_asynchronous_gpu_emulation.GetValue()); + std::map hold_graphics; - if (Settings::IsConfiguringGlobal()) { - ui->api->setCurrentIndex(static_cast(Settings::values.renderer_backend.GetValue())); - ui->fullscreen_mode_combobox->setCurrentIndex( - static_cast(Settings::values.fullscreen_mode.GetValue())); - ui->nvdec_emulation->setCurrentIndex( - static_cast(Settings::values.nvdec_emulation.GetValue())); - ui->aspect_ratio_combobox->setCurrentIndex(Settings::values.aspect_ratio.GetValue()); - ui->resolution_combobox->setCurrentIndex( - static_cast(Settings::values.resolution_setup.GetValue())); - ui->scaling_filter_combobox->setCurrentIndex( - static_cast(Settings::values.scaling_filter.GetValue())); - ui->fsr_sharpening_slider->setValue(Settings::values.fsr_sharpening_slider.GetValue()); - ui->anti_aliasing_combobox->setCurrentIndex( - static_cast(Settings::values.anti_aliasing.GetValue())); - } else { - ConfigurationShared::SetPerGameSetting(ui->api, &Settings::values.renderer_backend); - ConfigurationShared::SetHighlight(ui->api_widget, - !Settings::values.renderer_backend.UsingGlobal()); - - ConfigurationShared::SetPerGameSetting(ui->astc_decode_mode_combobox, - &Settings::values.accelerate_astc); - ConfigurationShared::SetHighlight(ui->astc_decode_mode_layout, - !Settings::values.accelerate_astc.UsingGlobal()); - - ConfigurationShared::SetPerGameSetting(ui->nvdec_emulation, - &Settings::values.nvdec_emulation); - ConfigurationShared::SetHighlight(ui->nvdec_emulation_widget, - !Settings::values.nvdec_emulation.UsingGlobal()); - - ConfigurationShared::SetPerGameSetting(ui->fullscreen_mode_combobox, - &Settings::values.fullscreen_mode); - ConfigurationShared::SetHighlight(ui->fullscreen_mode_label, - !Settings::values.fullscreen_mode.UsingGlobal()); - - ConfigurationShared::SetPerGameSetting(ui->aspect_ratio_combobox, - &Settings::values.aspect_ratio); - ConfigurationShared::SetHighlight(ui->ar_label, - !Settings::values.aspect_ratio.UsingGlobal()); - - ConfigurationShared::SetPerGameSetting(ui->resolution_combobox, - &Settings::values.resolution_setup); - ConfigurationShared::SetHighlight(ui->resolution_label, - !Settings::values.resolution_setup.UsingGlobal()); - - ConfigurationShared::SetPerGameSetting(ui->scaling_filter_combobox, - &Settings::values.scaling_filter); - ConfigurationShared::SetHighlight(ui->scaling_filter_label, - !Settings::values.scaling_filter.UsingGlobal()); - - ConfigurationShared::SetPerGameSetting(ui->anti_aliasing_combobox, - &Settings::values.anti_aliasing); - ConfigurationShared::SetHighlight(ui->anti_aliasing_label, - !Settings::values.anti_aliasing.UsingGlobal()); - - ui->fsr_sharpening_combobox->setCurrentIndex( - Settings::values.fsr_sharpening_slider.UsingGlobal() ? 0 : 1); - ui->fsr_sharpening_slider->setEnabled( - !Settings::values.fsr_sharpening_slider.UsingGlobal()); - ui->fsr_sharpening_value->setEnabled(!Settings::values.fsr_sharpening_slider.UsingGlobal()); - ConfigurationShared::SetHighlight(ui->fsr_sharpening_layout, - !Settings::values.fsr_sharpening_slider.UsingGlobal()); - ui->fsr_sharpening_slider->setValue(Settings::values.fsr_sharpening_slider.GetValue()); - - ui->bg_combobox->setCurrentIndex(Settings::values.bg_red.UsingGlobal() ? 0 : 1); - ui->bg_button->setEnabled(!Settings::values.bg_red.UsingGlobal()); - ConfigurationShared::SetHighlight(ui->bg_layout, !Settings::values.bg_red.UsingGlobal()); - } - UpdateBackgroundColorButton(QColor::fromRgb(Settings::values.bg_red.GetValue(), - Settings::values.bg_green.GetValue(), - Settings::values.bg_blue.GetValue())); - UpdateAPILayout(); - PopulateVSyncModeSelection(); //< must happen after UpdateAPILayout - SetFSRIndicatorText(ui->fsr_sharpening_slider->sliderPosition()); + for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) { + const auto& setting_label = setting->GetLabel(); - // VSync setting needs to be determined after populating the VSync combobox - if (Settings::IsConfiguringGlobal()) { - const auto vsync_mode_setting = Settings::values.vsync_mode.GetValue(); - const auto vsync_mode = VSyncSettingToMode(vsync_mode_setting); - int index{}; - for (const auto mode : vsync_mode_combobox_enum_map) { - if (mode == vsync_mode) { - break; + auto [widget, extra] = [&]() { + if (setting_label == "vulkan_device") { + return ConfigurationShared::CreateWidget( + setting, translations, this, runtime_lock, apply_funcs, trackers, + ConfigurationShared::RequestType::ComboBox); } - index++; + return ConfigurationShared::CreateWidget(setting, translations, this, runtime_lock, + apply_funcs, trackers); + }(); + + if (widget == nullptr) { + continue; } - if (static_cast(index) < vsync_mode_combobox_enum_map.size()) { - ui->vsync_mode_combobox->setCurrentIndex(index); + + if (setting_label == "backend") { + api_layout.addWidget(widget); + api_combobox = reinterpret_cast(extra); + } else if (setting_label == "vulkan_device") { + api_layout.addWidget(widget); + vulkan_device_combobox = reinterpret_cast(extra); + vulkan_device_widget = widget; + } else if (setting_label == "shader_backend") { + api_layout.addWidget(widget); + shader_backend_combobox = reinterpret_cast(extra); + shader_backend_widget = widget; + } else { + hold_graphics.insert(std::pair(setting_label, widget)); } + + if (setting_label == "use_vsync") { + vsync_mode_combobox = reinterpret_cast(extra); + } + } + + for (const auto& [label, widget] : hold_graphics) { + graphics_layout.addWidget(widget); } + + // ui->api_widget->setEnabled(runtime_lock); + // ui->use_asynchronous_gpu_emulation->setEnabled(runtime_lock); + // ui->use_disk_shader_cache->setEnabled(runtime_lock); + // ui->nvdec_emulation_widget->setEnabled(runtime_lock); + // ui->resolution_combobox->setEnabled(runtime_lock); + // ui->astc_decode_mode_combobox->setEnabled(runtime_lock); + // ui->vsync_mode_layout->setEnabled(runtime_lock || + // Settings::values.renderer_backend.GetValue() == + // Settings::RendererBackend::Vulkan); + // ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache.GetValue()); + // ui->use_asynchronous_gpu_emulation->setChecked( + // Settings::values.use_asynchronous_gpu_emulation.GetValue()); + + // if (Settings::IsConfiguringGlobal()) { + // api_combobox->setCurrentIndex(static_cast(Settings::values.renderer_backend.GetValue())); + // ui->fullscreen_mode_combobox->setCurrentIndex( + // static_cast(Settings::values.fullscreen_mode.GetValue())); + // ui->nvdec_emulation->setCurrentIndex( + // static_cast(Settings::values.nvdec_emulation.GetValue())); + // ui->aspect_ratio_combobox->setCurrentIndex(Settings::values.aspect_ratio.GetValue()); + // ui->resolution_combobox->setCurrentIndex( + // static_cast(Settings::values.resolution_setup.GetValue())); + // ui->scaling_filter_combobox->setCurrentIndex( + // static_cast(Settings::values.scaling_filter.GetValue())); + // ui->fsr_sharpening_slider->setValue(Settings::values.fsr_sharpening_slider.GetValue()); + // ui->anti_aliasing_combobox->setCurrentIndex( + // static_cast(Settings::values.anti_aliasing.GetValue())); + // } else { + // ConfigurationShared::SetPerGameSetting(api_combobox, &Settings::values.renderer_backend); + // ConfigurationShared::SetHighlight(ui->api_widget, + // !Settings::values.renderer_backend.UsingGlobal()); + + // ConfigurationShared::SetPerGameSetting(ui->astc_decode_mode_combobox, + // &Settings::values.accelerate_astc); + // ConfigurationShared::SetHighlight(ui->astc_decode_mode_layout, + // !Settings::values.accelerate_astc.UsingGlobal()); + + // ConfigurationShared::SetPerGameSetting(ui->nvdec_emulation, + // &Settings::values.nvdec_emulation); + // ConfigurationShared::SetHighlight(ui->nvdec_emulation_widget, + // !Settings::values.nvdec_emulation.UsingGlobal()); + + // ConfigurationShared::SetPerGameSetting(ui->fullscreen_mode_combobox, + // &Settings::values.fullscreen_mode); + // ConfigurationShared::SetHighlight(ui->fullscreen_mode_label, + // !Settings::values.fullscreen_mode.UsingGlobal()); + + // ConfigurationShared::SetPerGameSetting(ui->aspect_ratio_combobox, + // &Settings::values.aspect_ratio); + // ConfigurationShared::SetHighlight(ui->ar_label, + // !Settings::values.aspect_ratio.UsingGlobal()); + + // ConfigurationShared::SetPerGameSetting(ui->resolution_combobox, + // &Settings::values.resolution_setup); + // ConfigurationShared::SetHighlight(ui->resolution_label, + // !Settings::values.resolution_setup.UsingGlobal()); + + // ConfigurationShared::SetPerGameSetting(ui->scaling_filter_combobox, + // &Settings::values.scaling_filter); + // ConfigurationShared::SetHighlight(ui->scaling_filter_label, + // !Settings::values.scaling_filter.UsingGlobal()); + + // ConfigurationShared::SetPerGameSetting(ui->anti_aliasing_combobox, + // &Settings::values.anti_aliasing); + // ConfigurationShared::SetHighlight(ui->anti_aliasing_label, + // !Settings::values.anti_aliasing.UsingGlobal()); + + // ui->fsr_sharpening_combobox->setCurrentIndex( + // Settings::values.fsr_sharpening_slider.UsingGlobal() ? 0 : 1); + // ui->fsr_sharpening_slider->setEnabled( + // !Settings::values.fsr_sharpening_slider.UsingGlobal()); + // ui->fsr_sharpening_value->setEnabled(!Settings::values.fsr_sharpening_slider.UsingGlobal()); + // ConfigurationShared::SetHighlight(ui->fsr_sharpening_layout, + // !Settings::values.fsr_sharpening_slider.UsingGlobal()); + // ui->fsr_sharpening_slider->setValue(Settings::values.fsr_sharpening_slider.GetValue()); + + // ui->bg_combobox->setCurrentIndex(Settings::values.bg_red.UsingGlobal() ? 0 : 1); + // ui->bg_button->setEnabled(!Settings::values.bg_red.UsingGlobal()); + // ConfigurationShared::SetHighlight(ui->bg_layout, !Settings::values.bg_red.UsingGlobal()); + // } } void ConfigureGraphics::SetFSRIndicatorText(int percentage) { - ui->fsr_sharpening_value->setText( - tr("%1%", "FSR sharpening percentage (e.g. 50%)").arg(100 - (percentage / 2))); + // ui->fsr_sharpening_value->setText( + // tr("%1%", "FSR sharpening percentage (e.g. 50%)").arg(100 - (percentage / 2))); } const QString ConfigureGraphics::TranslateVSyncMode(VkPresentModeKHR mode, @@ -320,131 +366,134 @@ const QString ConfigureGraphics::TranslateVSyncMode(VkPresentModeKHR mode, } void ConfigureGraphics::ApplyConfiguration() { - const auto resolution_setup = static_cast( - ui->resolution_combobox->currentIndex() - - ((Settings::IsConfiguringGlobal()) ? 0 : ConfigurationShared::USE_GLOBAL_OFFSET)); - - const auto scaling_filter = static_cast( - ui->scaling_filter_combobox->currentIndex() - - ((Settings::IsConfiguringGlobal()) ? 0 : ConfigurationShared::USE_GLOBAL_OFFSET)); - - const auto anti_aliasing = static_cast( - ui->anti_aliasing_combobox->currentIndex() - - ((Settings::IsConfiguringGlobal()) ? 0 : ConfigurationShared::USE_GLOBAL_OFFSET)); - - ConfigurationShared::ApplyPerGameSetting(&Settings::values.fullscreen_mode, - ui->fullscreen_mode_combobox); - ConfigurationShared::ApplyPerGameSetting(&Settings::values.aspect_ratio, - ui->aspect_ratio_combobox); - ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_disk_shader_cache, - ui->use_disk_shader_cache, use_disk_shader_cache); - ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_gpu_emulation, - ui->use_asynchronous_gpu_emulation, - use_asynchronous_gpu_emulation); - ConfigurationShared::ApplyPerGameSetting(&Settings::values.accelerate_astc, - ui->astc_decode_mode_combobox); - - if (Settings::IsConfiguringGlobal()) { - // Guard if during game and set to game-specific value - if (Settings::values.renderer_backend.UsingGlobal()) { - Settings::values.renderer_backend.SetValue(GetCurrentGraphicsBackend()); - } - if (Settings::values.nvdec_emulation.UsingGlobal()) { - Settings::values.nvdec_emulation.SetValue(GetCurrentNvdecEmulation()); - } - if (Settings::values.shader_backend.UsingGlobal()) { - Settings::values.shader_backend.SetValue(shader_backend); - } - if (Settings::values.vulkan_device.UsingGlobal()) { - Settings::values.vulkan_device.SetValue(vulkan_device); - } - if (Settings::values.bg_red.UsingGlobal()) { - Settings::values.bg_red.SetValue(static_cast(bg_color.red())); - Settings::values.bg_green.SetValue(static_cast(bg_color.green())); - Settings::values.bg_blue.SetValue(static_cast(bg_color.blue())); - } - if (Settings::values.resolution_setup.UsingGlobal()) { - Settings::values.resolution_setup.SetValue(resolution_setup); - } - if (Settings::values.scaling_filter.UsingGlobal()) { - Settings::values.scaling_filter.SetValue(scaling_filter); - } - if (Settings::values.anti_aliasing.UsingGlobal()) { - Settings::values.anti_aliasing.SetValue(anti_aliasing); - } - Settings::values.fsr_sharpening_slider.SetValue(ui->fsr_sharpening_slider->value()); - - const auto mode = vsync_mode_combobox_enum_map[ui->vsync_mode_combobox->currentIndex()]; - const auto vsync_mode = PresentModeToSetting(mode); - Settings::values.vsync_mode.SetValue(vsync_mode); - } else { - if (ui->resolution_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { - Settings::values.resolution_setup.SetGlobal(true); - } else { - Settings::values.resolution_setup.SetGlobal(false); - Settings::values.resolution_setup.SetValue(resolution_setup); - } - if (ui->scaling_filter_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { - Settings::values.scaling_filter.SetGlobal(true); - } else { - Settings::values.scaling_filter.SetGlobal(false); - Settings::values.scaling_filter.SetValue(scaling_filter); - } - if (ui->anti_aliasing_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { - Settings::values.anti_aliasing.SetGlobal(true); - } else { - Settings::values.anti_aliasing.SetGlobal(false); - Settings::values.anti_aliasing.SetValue(anti_aliasing); - } - if (ui->api->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { - Settings::values.renderer_backend.SetGlobal(true); - Settings::values.shader_backend.SetGlobal(true); - Settings::values.vulkan_device.SetGlobal(true); - } else { - Settings::values.renderer_backend.SetGlobal(false); - Settings::values.renderer_backend.SetValue(GetCurrentGraphicsBackend()); - switch (GetCurrentGraphicsBackend()) { - case Settings::RendererBackend::OpenGL: - case Settings::RendererBackend::Null: - Settings::values.shader_backend.SetGlobal(false); - Settings::values.vulkan_device.SetGlobal(true); - Settings::values.shader_backend.SetValue(shader_backend); - break; - case Settings::RendererBackend::Vulkan: - Settings::values.shader_backend.SetGlobal(true); - Settings::values.vulkan_device.SetGlobal(false); - Settings::values.vulkan_device.SetValue(vulkan_device); - break; - } - } - - if (ui->nvdec_emulation->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { - Settings::values.nvdec_emulation.SetGlobal(true); - } else { - Settings::values.nvdec_emulation.SetGlobal(false); - Settings::values.nvdec_emulation.SetValue(GetCurrentNvdecEmulation()); - } - - if (ui->bg_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { - Settings::values.bg_red.SetGlobal(true); - Settings::values.bg_green.SetGlobal(true); - Settings::values.bg_blue.SetGlobal(true); - } else { - Settings::values.bg_red.SetGlobal(false); - Settings::values.bg_green.SetGlobal(false); - Settings::values.bg_blue.SetGlobal(false); - Settings::values.bg_red.SetValue(static_cast(bg_color.red())); - Settings::values.bg_green.SetValue(static_cast(bg_color.green())); - Settings::values.bg_blue.SetValue(static_cast(bg_color.blue())); - } - - if (ui->fsr_sharpening_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { - Settings::values.fsr_sharpening_slider.SetGlobal(true); - } else { - Settings::values.fsr_sharpening_slider.SetGlobal(false); - Settings::values.fsr_sharpening_slider.SetValue(ui->fsr_sharpening_slider->value()); - } - } + // const auto resolution_setup = static_cast( + // ui->resolution_combobox->currentIndex() - + // ((Settings::IsConfiguringGlobal()) ? 0 : ConfigurationShared::USE_GLOBAL_OFFSET)); + + // const auto scaling_filter = static_cast( + // ui->scaling_filter_combobox->currentIndex() - + // ((Settings::IsConfiguringGlobal()) ? 0 : ConfigurationShared::USE_GLOBAL_OFFSET)); + + // const auto anti_aliasing = static_cast( + // ui->anti_aliasing_combobox->currentIndex() - + // ((Settings::IsConfiguringGlobal()) ? 0 : ConfigurationShared::USE_GLOBAL_OFFSET)); + + // ConfigurationShared::ApplyPerGameSetting(&Settings::values.fullscreen_mode, + // ui->fullscreen_mode_combobox); + // ConfigurationShared::ApplyPerGameSetting(&Settings::values.aspect_ratio, + // ui->aspect_ratio_combobox); + // ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_disk_shader_cache, + // ui->use_disk_shader_cache, use_disk_shader_cache); + // ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_gpu_emulation, + // ui->use_asynchronous_gpu_emulation, + // use_asynchronous_gpu_emulation); + // ConfigurationShared::ApplyPerGameSetting(&Settings::values.accelerate_astc, + // ui->astc_decode_mode_combobox); + + // if (Settings::IsConfiguringGlobal()) { + // // Guard if during game and set to game-specific value + // if (Settings::values.renderer_backend.UsingGlobal()) { + // Settings::values.renderer_backend.SetValue(GetCurrentGraphicsBackend()); + // } + // if (Settings::values.nvdec_emulation.UsingGlobal()) { + // Settings::values.nvdec_emulation.SetValue(GetCurrentNvdecEmulation()); + // } + // if (Settings::values.shader_backend.UsingGlobal()) { + // Settings::values.shader_backend.SetValue(shader_backend); + // } + // if (Settings::values.vulkan_device.UsingGlobal()) { + // Settings::values.vulkan_device.SetValue(vulkan_device); + // } + // if (Settings::values.bg_red.UsingGlobal()) { + // Settings::values.bg_red.SetValue(static_cast(bg_color.red())); + // Settings::values.bg_green.SetValue(static_cast(bg_color.green())); + // Settings::values.bg_blue.SetValue(static_cast(bg_color.blue())); + // } + // if (Settings::values.resolution_setup.UsingGlobal()) { + // Settings::values.resolution_setup.SetValue(resolution_setup); + // } + // if (Settings::values.scaling_filter.UsingGlobal()) { + // Settings::values.scaling_filter.SetValue(scaling_filter); + // } + // if (Settings::values.anti_aliasing.UsingGlobal()) { + // Settings::values.anti_aliasing.SetValue(anti_aliasing); + // } + // Settings::values.fsr_sharpening_slider.SetValue(ui->fsr_sharpening_slider->value()); + + // const auto mode = vsync_mode_combobox_enum_map[vsync_mode_combobox->currentIndex()]; + // const auto vsync_mode = PresentModeToSetting(mode); + // Settings::values.vsync_mode.SetValue(vsync_mode); + // } else { + // if (ui->resolution_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { + // Settings::values.resolution_setup.SetGlobal(true); + // } else { + // Settings::values.resolution_setup.SetGlobal(false); + // Settings::values.resolution_setup.SetValue(resolution_setup); + // } + // if (ui->scaling_filter_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) + // { + // Settings::values.scaling_filter.SetGlobal(true); + // } else { + // Settings::values.scaling_filter.SetGlobal(false); + // Settings::values.scaling_filter.SetValue(scaling_filter); + // } + // if (ui->anti_aliasing_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) + // { + // Settings::values.anti_aliasing.SetGlobal(true); + // } else { + // Settings::values.anti_aliasing.SetGlobal(false); + // Settings::values.anti_aliasing.SetValue(anti_aliasing); + // } + // if (api_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { + // Settings::values.renderer_backend.SetGlobal(true); + // Settings::values.shader_backend.SetGlobal(true); + // Settings::values.vulkan_device.SetGlobal(true); + // } else { + // Settings::values.renderer_backend.SetGlobal(false); + // Settings::values.renderer_backend.SetValue(GetCurrentGraphicsBackend()); + // switch (GetCurrentGraphicsBackend()) { + // case Settings::RendererBackend::OpenGL: + // case Settings::RendererBackend::Null: + // Settings::values.shader_backend.SetGlobal(false); + // Settings::values.vulkan_device.SetGlobal(true); + // Settings::values.shader_backend.SetValue(shader_backend); + // break; + // case Settings::RendererBackend::Vulkan: + // Settings::values.shader_backend.SetGlobal(true); + // Settings::values.vulkan_device.SetGlobal(false); + // Settings::values.vulkan_device.SetValue(vulkan_device); + // break; + // } + // } + + // if (ui->nvdec_emulation->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { + // Settings::values.nvdec_emulation.SetGlobal(true); + // } else { + // Settings::values.nvdec_emulation.SetGlobal(false); + // Settings::values.nvdec_emulation.SetValue(GetCurrentNvdecEmulation()); + // } + + // if (ui->bg_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { + // Settings::values.bg_red.SetGlobal(true); + // Settings::values.bg_green.SetGlobal(true); + // Settings::values.bg_blue.SetGlobal(true); + // } else { + // Settings::values.bg_red.SetGlobal(false); + // Settings::values.bg_green.SetGlobal(false); + // Settings::values.bg_blue.SetGlobal(false); + // Settings::values.bg_red.SetValue(static_cast(bg_color.red())); + // Settings::values.bg_green.SetValue(static_cast(bg_color.green())); + // Settings::values.bg_blue.SetValue(static_cast(bg_color.blue())); + // } + + // if (ui->fsr_sharpening_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) + // { + // Settings::values.fsr_sharpening_slider.SetGlobal(true); + // } else { + // Settings::values.fsr_sharpening_slider.SetGlobal(false); + // Settings::values.fsr_sharpening_slider.SetValue(ui->fsr_sharpening_slider->value()); + // } + // } } void ConfigureGraphics::changeEvent(QEvent* event) { @@ -462,43 +511,43 @@ void ConfigureGraphics::RetranslateUI() { void ConfigureGraphics::UpdateBackgroundColorButton(QColor color) { bg_color = color; - QPixmap pixmap(ui->bg_button->size()); - pixmap.fill(bg_color); + // QPixmap pixmap(ui->bg_button->size()); + // pixmap.fill(bg_color); - const QIcon color_icon(pixmap); - ui->bg_button->setIcon(color_icon); + // const QIcon color_icon(pixmap); + // ui->bg_button->setIcon(color_icon); } void ConfigureGraphics::UpdateAPILayout() { if (!Settings::IsConfiguringGlobal() && - ui->api->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { + api_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { vulkan_device = Settings::values.vulkan_device.GetValue(true); shader_backend = Settings::values.shader_backend.GetValue(true); - ui->device_widget->setEnabled(false); - ui->backend_widget->setEnabled(false); + vulkan_device_widget->setEnabled(false); + shader_backend_widget->setEnabled(false); } else { vulkan_device = Settings::values.vulkan_device.GetValue(); shader_backend = Settings::values.shader_backend.GetValue(); - ui->device_widget->setEnabled(true); - ui->backend_widget->setEnabled(true); + vulkan_device_widget->setEnabled(true); + shader_backend_widget->setEnabled(true); } switch (GetCurrentGraphicsBackend()) { case Settings::RendererBackend::OpenGL: - ui->backend->setCurrentIndex(static_cast(shader_backend)); - ui->device_widget->setVisible(false); - ui->backend_widget->setVisible(true); + shader_backend_combobox->setCurrentIndex(static_cast(shader_backend)); + vulkan_device_widget->setVisible(false); + shader_backend_widget->setVisible(true); break; case Settings::RendererBackend::Vulkan: - if (static_cast(vulkan_device) < ui->device->count()) { - ui->device->setCurrentIndex(vulkan_device); + if (static_cast(vulkan_device) < vulkan_device_combobox->count()) { + vulkan_device_combobox->setCurrentIndex(vulkan_device); } - ui->device_widget->setVisible(true); - ui->backend_widget->setVisible(false); + vulkan_device_widget->setVisible(true); + shader_backend_widget->setVisible(false); break; case Settings::RendererBackend::Null: - ui->device_widget->setVisible(false); - ui->backend_widget->setVisible(false); + vulkan_device_widget->setVisible(false); + shader_backend_widget->setVisible(false); break; } } @@ -520,92 +569,94 @@ void ConfigureGraphics::RetrieveVulkanDevices() { Settings::RendererBackend ConfigureGraphics::GetCurrentGraphicsBackend() const { if (Settings::IsConfiguringGlobal()) { - return static_cast(ui->api->currentIndex()); + return static_cast(api_combobox->currentIndex()); } - if (ui->api->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { + if (api_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { Settings::values.renderer_backend.SetGlobal(true); return Settings::values.renderer_backend.GetValue(); } Settings::values.renderer_backend.SetGlobal(false); - return static_cast(ui->api->currentIndex() - + return static_cast(api_combobox->currentIndex() - ConfigurationShared::USE_GLOBAL_OFFSET); } Settings::NvdecEmulation ConfigureGraphics::GetCurrentNvdecEmulation() const { - if (Settings::IsConfiguringGlobal()) { - return static_cast(ui->nvdec_emulation->currentIndex()); - } - - if (ui->nvdec_emulation->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { - Settings::values.nvdec_emulation.SetGlobal(true); - return Settings::values.nvdec_emulation.GetValue(); - } - Settings::values.nvdec_emulation.SetGlobal(false); - return static_cast(ui->nvdec_emulation->currentIndex() - - ConfigurationShared::USE_GLOBAL_OFFSET); + return Settings::NvdecEmulation::CPU; + // if (Settings::IsConfiguringGlobal()) { + // return static_cast(ui->nvdec_emulation->currentIndex()); + // } + + // if (ui->nvdec_emulation->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { + // Settings::values.nvdec_emulation.SetGlobal(true); + // return Settings::values.nvdec_emulation.GetValue(); + // } + // Settings::values.nvdec_emulation.SetGlobal(false); + // return static_cast(ui->nvdec_emulation->currentIndex() - + // ConfigurationShared::USE_GLOBAL_OFFSET); } void ConfigureGraphics::SetupPerGameUI() { - if (Settings::IsConfiguringGlobal()) { - ui->api->setEnabled(Settings::values.renderer_backend.UsingGlobal()); - ui->device->setEnabled(Settings::values.renderer_backend.UsingGlobal()); - ui->fullscreen_mode_combobox->setEnabled(Settings::values.fullscreen_mode.UsingGlobal()); - ui->aspect_ratio_combobox->setEnabled(Settings::values.aspect_ratio.UsingGlobal()); - ui->resolution_combobox->setEnabled(Settings::values.resolution_setup.UsingGlobal()); - ui->scaling_filter_combobox->setEnabled(Settings::values.scaling_filter.UsingGlobal()); - ui->fsr_sharpening_slider->setEnabled(Settings::values.fsr_sharpening_slider.UsingGlobal()); - ui->anti_aliasing_combobox->setEnabled(Settings::values.anti_aliasing.UsingGlobal()); - ui->use_asynchronous_gpu_emulation->setEnabled( - Settings::values.use_asynchronous_gpu_emulation.UsingGlobal()); - ui->nvdec_emulation->setEnabled(Settings::values.nvdec_emulation.UsingGlobal()); - ui->astc_decode_mode_combobox->setEnabled(Settings::values.accelerate_astc.UsingGlobal()); - ui->use_disk_shader_cache->setEnabled(Settings::values.use_disk_shader_cache.UsingGlobal()); - ui->bg_button->setEnabled(Settings::values.bg_red.UsingGlobal()); - ui->fsr_slider_layout->setEnabled(Settings::values.fsr_sharpening_slider.UsingGlobal()); - - return; - } - - connect(ui->bg_combobox, qOverload(&QComboBox::activated), this, [this](int index) { - ui->bg_button->setEnabled(index == 1); - ConfigurationShared::SetHighlight(ui->bg_layout, index == 1); - }); - - connect(ui->fsr_sharpening_combobox, qOverload(&QComboBox::activated), this, - [this](int index) { - ui->fsr_sharpening_slider->setEnabled(index == 1); - ui->fsr_sharpening_value->setEnabled(index == 1); - ConfigurationShared::SetHighlight(ui->fsr_sharpening_layout, index == 1); - }); - - ConfigurationShared::SetColoredTristate( - ui->use_disk_shader_cache, Settings::values.use_disk_shader_cache, use_disk_shader_cache); - ConfigurationShared::SetColoredTristate(ui->use_asynchronous_gpu_emulation, - Settings::values.use_asynchronous_gpu_emulation, - use_asynchronous_gpu_emulation); - - ConfigurationShared::SetColoredComboBox(ui->aspect_ratio_combobox, ui->ar_label, - Settings::values.aspect_ratio.GetValue(true)); - ConfigurationShared::SetColoredComboBox( - ui->fullscreen_mode_combobox, ui->fullscreen_mode_label, - static_cast(Settings::values.fullscreen_mode.GetValue(true))); - ConfigurationShared::SetColoredComboBox( - ui->resolution_combobox, ui->resolution_label, - static_cast(Settings::values.resolution_setup.GetValue(true))); - ConfigurationShared::SetColoredComboBox( - ui->scaling_filter_combobox, ui->scaling_filter_label, - static_cast(Settings::values.scaling_filter.GetValue(true))); - ConfigurationShared::SetColoredComboBox( - ui->anti_aliasing_combobox, ui->anti_aliasing_label, - static_cast(Settings::values.anti_aliasing.GetValue(true))); - ConfigurationShared::SetColoredComboBox( - ui->astc_decode_mode_combobox, ui->astc_decode_mode_label, - static_cast(Settings::values.accelerate_astc.GetValue(true))); - ConfigurationShared::InsertGlobalItem( - ui->api, static_cast(Settings::values.renderer_backend.GetValue(true))); - ConfigurationShared::InsertGlobalItem( - ui->nvdec_emulation, static_cast(Settings::values.nvdec_emulation.GetValue(true))); - - ui->vsync_mode_layout->setVisible(false); + // if (Settings::IsConfiguringGlobal()) { + // api_combobox->setEnabled(Settings::values.renderer_backend.UsingGlobal()); + // vulkan_device_combobox->setEnabled(Settings::values.renderer_backend.UsingGlobal()); + // ui->fullscreen_mode_combobox->setEnabled(Settings::values.fullscreen_mode.UsingGlobal()); + // ui->aspect_ratio_combobox->setEnabled(Settings::values.aspect_ratio.UsingGlobal()); + // ui->resolution_combobox->setEnabled(Settings::values.resolution_setup.UsingGlobal()); + // ui->scaling_filter_combobox->setEnabled(Settings::values.scaling_filter.UsingGlobal()); + // ui->fsr_sharpening_slider->setEnabled(Settings::values.fsr_sharpening_slider.UsingGlobal()); + // ui->anti_aliasing_combobox->setEnabled(Settings::values.anti_aliasing.UsingGlobal()); + // ui->use_asynchronous_gpu_emulation->setEnabled( + // Settings::values.use_asynchronous_gpu_emulation.UsingGlobal()); + // ui->nvdec_emulation->setEnabled(Settings::values.nvdec_emulation.UsingGlobal()); + // ui->astc_decode_mode_combobox->setEnabled(Settings::values.accelerate_astc.UsingGlobal()); + // ui->use_disk_shader_cache->setEnabled(Settings::values.use_disk_shader_cache.UsingGlobal()); + // ui->bg_button->setEnabled(Settings::values.bg_red.UsingGlobal()); + // ui->fsr_slider_layout->setEnabled(Settings::values.fsr_sharpening_slider.UsingGlobal()); + + // return; + // } + + // connect(ui->bg_combobox, qOverload(&QComboBox::activated), this, [this](int index) { + // ui->bg_button->setEnabled(index == 1); + // ConfigurationShared::SetHighlight(ui->bg_layout, index == 1); + // }); + + // connect(ui->fsr_sharpening_combobox, qOverload(&QComboBox::activated), this, + // [this](int index) { + // ui->fsr_sharpening_slider->setEnabled(index == 1); + // ui->fsr_sharpening_value->setEnabled(index == 1); + // ConfigurationShared::SetHighlight(ui->fsr_sharpening_layout, index == 1); + // }); + + // ConfigurationShared::SetColoredTristate( + // ui->use_disk_shader_cache, Settings::values.use_disk_shader_cache, + // use_disk_shader_cache); + // ConfigurationShared::SetColoredTristate(ui->use_asynchronous_gpu_emulation, + // Settings::values.use_asynchronous_gpu_emulation, + // use_asynchronous_gpu_emulation); + + // ConfigurationShared::SetColoredComboBox(ui->aspect_ratio_combobox, ui->ar_label, + // Settings::values.aspect_ratio.GetValue(true)); + // ConfigurationShared::SetColoredComboBox( + // ui->fullscreen_mode_combobox, ui->fullscreen_mode_label, + // static_cast(Settings::values.fullscreen_mode.GetValue(true))); + // ConfigurationShared::SetColoredComboBox( + // ui->resolution_combobox, ui->resolution_label, + // static_cast(Settings::values.resolution_setup.GetValue(true))); + // ConfigurationShared::SetColoredComboBox( + // ui->scaling_filter_combobox, ui->scaling_filter_label, + // static_cast(Settings::values.scaling_filter.GetValue(true))); + // ConfigurationShared::SetColoredComboBox( + // ui->anti_aliasing_combobox, ui->anti_aliasing_label, + // static_cast(Settings::values.anti_aliasing.GetValue(true))); + // ConfigurationShared::SetColoredComboBox( + // ui->astc_decode_mode_combobox, ui->astc_decode_mode_label, + // static_cast(Settings::values.accelerate_astc.GetValue(true))); + // ConfigurationShared::InsertGlobalItem( + // api_combobox, static_cast(Settings::values.renderer_backend.GetValue(true))); + // ConfigurationShared::InsertGlobalItem( + // ui->nvdec_emulation, static_cast(Settings::values.nvdec_emulation.GetValue(true))); + + // ui->vsync_mode_layout->setVisible(false); } -- cgit v1.2.3 From cfb63c68dbdc2c8add45cddb2cedf371059af6c4 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Sun, 7 May 2023 13:28:52 -0400 Subject: shared_translation: Finish using int ids --- src/yuzu/configuration/configure_graphics.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 8128a4047..d8e95b9b1 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -214,13 +214,13 @@ void ConfigureGraphics::SetConfiguration() { QLayout& api_layout = *ui->api_widget->layout(); QLayout& graphics_layout = *ui->graphics_widget->layout(); - std::map hold_graphics; + std::map> hold_graphics; for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) { const auto& setting_label = setting->GetLabel(); auto [widget, extra] = [&]() { - if (setting_label == "vulkan_device") { + if (setting->Id() == Settings::values.vulkan_device.Id()) { return ConfigurationShared::CreateWidget( setting, translations, this, runtime_lock, apply_funcs, trackers, ConfigurationShared::RequestType::ComboBox); @@ -233,28 +233,29 @@ void ConfigureGraphics::SetConfiguration() { continue; } - if (setting_label == "backend") { + if (setting->Id() == Settings::values.vulkan_device.Id()) { api_layout.addWidget(widget); api_combobox = reinterpret_cast(extra); - } else if (setting_label == "vulkan_device") { + } else if (setting->Id() == Settings::values.vulkan_device.Id()) { api_layout.addWidget(widget); vulkan_device_combobox = reinterpret_cast(extra); vulkan_device_widget = widget; - } else if (setting_label == "shader_backend") { + } else if (setting->Id() == Settings::values.shader_backend.Id()) { api_layout.addWidget(widget); shader_backend_combobox = reinterpret_cast(extra); shader_backend_widget = widget; - } else { - hold_graphics.insert(std::pair(setting_label, widget)); - } - - if (setting_label == "use_vsync") { + } else if (setting->Id() == Settings::values.vsync_mode.Id()) { vsync_mode_combobox = reinterpret_cast(extra); + hold_graphics[setting->IsEnum()][setting_label] = widget; + } else { + hold_graphics[setting->IsEnum()][setting_label] = widget; } } - for (const auto& [label, widget] : hold_graphics) { - graphics_layout.addWidget(widget); + for (const auto& [_, settings] : hold_graphics) { + for (const auto& [label, widget] : settings) { + graphics_layout.addWidget(widget); + } } // ui->api_widget->setEnabled(runtime_lock); -- cgit v1.2.3 From 9a844bbf0cb14c9de33225ded27a78852e044df6 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Mon, 8 May 2023 10:04:44 -0400 Subject: configure_graphics: More complete reimplementation --- src/yuzu/configuration/configure_graphics.cpp | 350 +++----------------------- 1 file changed, 36 insertions(+), 314 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index d8e95b9b1..37a10ac87 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -55,20 +55,20 @@ static constexpr VkPresentModeKHR VSyncSettingToMode(Settings::VSyncMode mode) { } } -// static constexpr Settings::VSyncMode PresentModeToSetting(VkPresentModeKHR mode) { -// switch (mode) { -// case VK_PRESENT_MODE_IMMEDIATE_KHR: -// return Settings::VSyncMode::Immediate; -// case VK_PRESENT_MODE_MAILBOX_KHR: -// return Settings::VSyncMode::Mailbox; -// case VK_PRESENT_MODE_FIFO_KHR: -// return Settings::VSyncMode::FIFO; -// case VK_PRESENT_MODE_FIFO_RELAXED_KHR: -// return Settings::VSyncMode::FIFORelaxed; -// default: -// return Settings::VSyncMode::FIFO; -// } -// } +static constexpr Settings::VSyncMode PresentModeToSetting(VkPresentModeKHR mode) { + switch (mode) { + case VK_PRESENT_MODE_IMMEDIATE_KHR: + return Settings::VSyncMode::Immediate; + case VK_PRESENT_MODE_MAILBOX_KHR: + return Settings::VSyncMode::Mailbox; + case VK_PRESENT_MODE_FIFO_KHR: + return Settings::VSyncMode::FIFO; + case VK_PRESENT_MODE_FIFO_RELAXED_KHR: + return Settings::VSyncMode::FIFORelaxed; + default: + return Settings::VSyncMode::FIFO; + } +} ConfigureGraphics::ConfigureGraphics( const Core::System& system_, std::vector& records_, @@ -112,16 +112,9 @@ ConfigureGraphics::ConfigureGraphics( } } - SetupPerGameUI(); - connect(api_combobox, qOverload(&QComboBox::currentIndexChanged), this, [this] { UpdateAPILayout(); PopulateVSyncModeSelection(); - if (!Settings::IsConfiguringGlobal()) { - ConfigurationShared::SetHighlight(ui->api_widget, - api_combobox->currentIndex() != - ConfigurationShared::USE_GLOBAL_INDEX); - } }); connect(vulkan_device_combobox, qOverload(&QComboBox::activated), this, [this](int device) { @@ -215,18 +208,22 @@ void ConfigureGraphics::SetConfiguration() { QLayout& graphics_layout = *ui->graphics_widget->layout(); std::map> hold_graphics; + std::forward_list hold_api; for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) { const auto& setting_label = setting->GetLabel(); auto [widget, extra] = [&]() { - if (setting->Id() == Settings::values.vulkan_device.Id()) { + if (setting->Id() == Settings::values.vulkan_device.Id() || + setting->Id() == Settings::values.shader_backend.Id() || + setting->Id() == Settings::values.vsync_mode.Id()) { return ConfigurationShared::CreateWidget( setting, translations, this, runtime_lock, apply_funcs, trackers, - ConfigurationShared::RequestType::ComboBox); + ConfigurationShared::RequestType::ComboBox, false); + } else { + return ConfigurationShared::CreateWidget(setting, translations, this, runtime_lock, + apply_funcs, trackers); } - return ConfigurationShared::CreateWidget(setting, translations, this, runtime_lock, - apply_funcs, trackers); }(); if (widget == nullptr) { @@ -237,11 +234,11 @@ void ConfigureGraphics::SetConfiguration() { api_layout.addWidget(widget); api_combobox = reinterpret_cast(extra); } else if (setting->Id() == Settings::values.vulkan_device.Id()) { - api_layout.addWidget(widget); + hold_api.push_front(widget); vulkan_device_combobox = reinterpret_cast(extra); vulkan_device_widget = widget; } else if (setting->Id() == Settings::values.shader_backend.Id()) { - api_layout.addWidget(widget); + hold_api.push_front(widget); shader_backend_combobox = reinterpret_cast(extra); shader_backend_widget = widget; } else if (setting->Id() == Settings::values.vsync_mode.Id()) { @@ -258,86 +255,9 @@ void ConfigureGraphics::SetConfiguration() { } } - // ui->api_widget->setEnabled(runtime_lock); - // ui->use_asynchronous_gpu_emulation->setEnabled(runtime_lock); - // ui->use_disk_shader_cache->setEnabled(runtime_lock); - // ui->nvdec_emulation_widget->setEnabled(runtime_lock); - // ui->resolution_combobox->setEnabled(runtime_lock); - // ui->astc_decode_mode_combobox->setEnabled(runtime_lock); - // ui->vsync_mode_layout->setEnabled(runtime_lock || - // Settings::values.renderer_backend.GetValue() == - // Settings::RendererBackend::Vulkan); - // ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache.GetValue()); - // ui->use_asynchronous_gpu_emulation->setChecked( - // Settings::values.use_asynchronous_gpu_emulation.GetValue()); - - // if (Settings::IsConfiguringGlobal()) { - // api_combobox->setCurrentIndex(static_cast(Settings::values.renderer_backend.GetValue())); - // ui->fullscreen_mode_combobox->setCurrentIndex( - // static_cast(Settings::values.fullscreen_mode.GetValue())); - // ui->nvdec_emulation->setCurrentIndex( - // static_cast(Settings::values.nvdec_emulation.GetValue())); - // ui->aspect_ratio_combobox->setCurrentIndex(Settings::values.aspect_ratio.GetValue()); - // ui->resolution_combobox->setCurrentIndex( - // static_cast(Settings::values.resolution_setup.GetValue())); - // ui->scaling_filter_combobox->setCurrentIndex( - // static_cast(Settings::values.scaling_filter.GetValue())); - // ui->fsr_sharpening_slider->setValue(Settings::values.fsr_sharpening_slider.GetValue()); - // ui->anti_aliasing_combobox->setCurrentIndex( - // static_cast(Settings::values.anti_aliasing.GetValue())); - // } else { - // ConfigurationShared::SetPerGameSetting(api_combobox, &Settings::values.renderer_backend); - // ConfigurationShared::SetHighlight(ui->api_widget, - // !Settings::values.renderer_backend.UsingGlobal()); - - // ConfigurationShared::SetPerGameSetting(ui->astc_decode_mode_combobox, - // &Settings::values.accelerate_astc); - // ConfigurationShared::SetHighlight(ui->astc_decode_mode_layout, - // !Settings::values.accelerate_astc.UsingGlobal()); - - // ConfigurationShared::SetPerGameSetting(ui->nvdec_emulation, - // &Settings::values.nvdec_emulation); - // ConfigurationShared::SetHighlight(ui->nvdec_emulation_widget, - // !Settings::values.nvdec_emulation.UsingGlobal()); - - // ConfigurationShared::SetPerGameSetting(ui->fullscreen_mode_combobox, - // &Settings::values.fullscreen_mode); - // ConfigurationShared::SetHighlight(ui->fullscreen_mode_label, - // !Settings::values.fullscreen_mode.UsingGlobal()); - - // ConfigurationShared::SetPerGameSetting(ui->aspect_ratio_combobox, - // &Settings::values.aspect_ratio); - // ConfigurationShared::SetHighlight(ui->ar_label, - // !Settings::values.aspect_ratio.UsingGlobal()); - - // ConfigurationShared::SetPerGameSetting(ui->resolution_combobox, - // &Settings::values.resolution_setup); - // ConfigurationShared::SetHighlight(ui->resolution_label, - // !Settings::values.resolution_setup.UsingGlobal()); - - // ConfigurationShared::SetPerGameSetting(ui->scaling_filter_combobox, - // &Settings::values.scaling_filter); - // ConfigurationShared::SetHighlight(ui->scaling_filter_label, - // !Settings::values.scaling_filter.UsingGlobal()); - - // ConfigurationShared::SetPerGameSetting(ui->anti_aliasing_combobox, - // &Settings::values.anti_aliasing); - // ConfigurationShared::SetHighlight(ui->anti_aliasing_label, - // !Settings::values.anti_aliasing.UsingGlobal()); - - // ui->fsr_sharpening_combobox->setCurrentIndex( - // Settings::values.fsr_sharpening_slider.UsingGlobal() ? 0 : 1); - // ui->fsr_sharpening_slider->setEnabled( - // !Settings::values.fsr_sharpening_slider.UsingGlobal()); - // ui->fsr_sharpening_value->setEnabled(!Settings::values.fsr_sharpening_slider.UsingGlobal()); - // ConfigurationShared::SetHighlight(ui->fsr_sharpening_layout, - // !Settings::values.fsr_sharpening_slider.UsingGlobal()); - // ui->fsr_sharpening_slider->setValue(Settings::values.fsr_sharpening_slider.GetValue()); - - // ui->bg_combobox->setCurrentIndex(Settings::values.bg_red.UsingGlobal() ? 0 : 1); - // ui->bg_button->setEnabled(!Settings::values.bg_red.UsingGlobal()); - // ConfigurationShared::SetHighlight(ui->bg_layout, !Settings::values.bg_red.UsingGlobal()); - // } + for (auto widget : hold_api) { + api_layout.addWidget(widget); + } } void ConfigureGraphics::SetFSRIndicatorText(int percentage) { @@ -367,134 +287,16 @@ const QString ConfigureGraphics::TranslateVSyncMode(VkPresentModeKHR mode, } void ConfigureGraphics::ApplyConfiguration() { - // const auto resolution_setup = static_cast( - // ui->resolution_combobox->currentIndex() - - // ((Settings::IsConfiguringGlobal()) ? 0 : ConfigurationShared::USE_GLOBAL_OFFSET)); - - // const auto scaling_filter = static_cast( - // ui->scaling_filter_combobox->currentIndex() - - // ((Settings::IsConfiguringGlobal()) ? 0 : ConfigurationShared::USE_GLOBAL_OFFSET)); - - // const auto anti_aliasing = static_cast( - // ui->anti_aliasing_combobox->currentIndex() - - // ((Settings::IsConfiguringGlobal()) ? 0 : ConfigurationShared::USE_GLOBAL_OFFSET)); - - // ConfigurationShared::ApplyPerGameSetting(&Settings::values.fullscreen_mode, - // ui->fullscreen_mode_combobox); - // ConfigurationShared::ApplyPerGameSetting(&Settings::values.aspect_ratio, - // ui->aspect_ratio_combobox); - // ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_disk_shader_cache, - // ui->use_disk_shader_cache, use_disk_shader_cache); - // ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_gpu_emulation, - // ui->use_asynchronous_gpu_emulation, - // use_asynchronous_gpu_emulation); - // ConfigurationShared::ApplyPerGameSetting(&Settings::values.accelerate_astc, - // ui->astc_decode_mode_combobox); - - // if (Settings::IsConfiguringGlobal()) { - // // Guard if during game and set to game-specific value - // if (Settings::values.renderer_backend.UsingGlobal()) { - // Settings::values.renderer_backend.SetValue(GetCurrentGraphicsBackend()); - // } - // if (Settings::values.nvdec_emulation.UsingGlobal()) { - // Settings::values.nvdec_emulation.SetValue(GetCurrentNvdecEmulation()); - // } - // if (Settings::values.shader_backend.UsingGlobal()) { - // Settings::values.shader_backend.SetValue(shader_backend); - // } - // if (Settings::values.vulkan_device.UsingGlobal()) { - // Settings::values.vulkan_device.SetValue(vulkan_device); - // } - // if (Settings::values.bg_red.UsingGlobal()) { - // Settings::values.bg_red.SetValue(static_cast(bg_color.red())); - // Settings::values.bg_green.SetValue(static_cast(bg_color.green())); - // Settings::values.bg_blue.SetValue(static_cast(bg_color.blue())); - // } - // if (Settings::values.resolution_setup.UsingGlobal()) { - // Settings::values.resolution_setup.SetValue(resolution_setup); - // } - // if (Settings::values.scaling_filter.UsingGlobal()) { - // Settings::values.scaling_filter.SetValue(scaling_filter); - // } - // if (Settings::values.anti_aliasing.UsingGlobal()) { - // Settings::values.anti_aliasing.SetValue(anti_aliasing); - // } - // Settings::values.fsr_sharpening_slider.SetValue(ui->fsr_sharpening_slider->value()); - - // const auto mode = vsync_mode_combobox_enum_map[vsync_mode_combobox->currentIndex()]; - // const auto vsync_mode = PresentModeToSetting(mode); - // Settings::values.vsync_mode.SetValue(vsync_mode); - // } else { - // if (ui->resolution_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { - // Settings::values.resolution_setup.SetGlobal(true); - // } else { - // Settings::values.resolution_setup.SetGlobal(false); - // Settings::values.resolution_setup.SetValue(resolution_setup); - // } - // if (ui->scaling_filter_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) - // { - // Settings::values.scaling_filter.SetGlobal(true); - // } else { - // Settings::values.scaling_filter.SetGlobal(false); - // Settings::values.scaling_filter.SetValue(scaling_filter); - // } - // if (ui->anti_aliasing_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) - // { - // Settings::values.anti_aliasing.SetGlobal(true); - // } else { - // Settings::values.anti_aliasing.SetGlobal(false); - // Settings::values.anti_aliasing.SetValue(anti_aliasing); - // } - // if (api_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { - // Settings::values.renderer_backend.SetGlobal(true); - // Settings::values.shader_backend.SetGlobal(true); - // Settings::values.vulkan_device.SetGlobal(true); - // } else { - // Settings::values.renderer_backend.SetGlobal(false); - // Settings::values.renderer_backend.SetValue(GetCurrentGraphicsBackend()); - // switch (GetCurrentGraphicsBackend()) { - // case Settings::RendererBackend::OpenGL: - // case Settings::RendererBackend::Null: - // Settings::values.shader_backend.SetGlobal(false); - // Settings::values.vulkan_device.SetGlobal(true); - // Settings::values.shader_backend.SetValue(shader_backend); - // break; - // case Settings::RendererBackend::Vulkan: - // Settings::values.shader_backend.SetGlobal(true); - // Settings::values.vulkan_device.SetGlobal(false); - // Settings::values.vulkan_device.SetValue(vulkan_device); - // break; - // } - // } - - // if (ui->nvdec_emulation->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { - // Settings::values.nvdec_emulation.SetGlobal(true); - // } else { - // Settings::values.nvdec_emulation.SetGlobal(false); - // Settings::values.nvdec_emulation.SetValue(GetCurrentNvdecEmulation()); - // } - - // if (ui->bg_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { - // Settings::values.bg_red.SetGlobal(true); - // Settings::values.bg_green.SetGlobal(true); - // Settings::values.bg_blue.SetGlobal(true); - // } else { - // Settings::values.bg_red.SetGlobal(false); - // Settings::values.bg_green.SetGlobal(false); - // Settings::values.bg_blue.SetGlobal(false); - // Settings::values.bg_red.SetValue(static_cast(bg_color.red())); - // Settings::values.bg_green.SetValue(static_cast(bg_color.green())); - // Settings::values.bg_blue.SetValue(static_cast(bg_color.blue())); - // } + const bool powered_on = system.IsPoweredOn(); + for (const auto& func : apply_funcs) { + func(powered_on); + } - // if (ui->fsr_sharpening_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) - // { - // Settings::values.fsr_sharpening_slider.SetGlobal(true); - // } else { - // Settings::values.fsr_sharpening_slider.SetGlobal(false); - // Settings::values.fsr_sharpening_slider.SetValue(ui->fsr_sharpening_slider->value()); - // } - // } + if (Settings::IsConfiguringGlobal()) { + const auto mode = vsync_mode_combobox_enum_map[vsync_mode_combobox->currentIndex()]; + const auto vsync_mode = PresentModeToSetting(mode); + Settings::values.vsync_mode.SetValue(vsync_mode); + } } void ConfigureGraphics::changeEvent(QEvent* event) { @@ -581,83 +383,3 @@ Settings::RendererBackend ConfigureGraphics::GetCurrentGraphicsBackend() const { return static_cast(api_combobox->currentIndex() - ConfigurationShared::USE_GLOBAL_OFFSET); } - -Settings::NvdecEmulation ConfigureGraphics::GetCurrentNvdecEmulation() const { - return Settings::NvdecEmulation::CPU; - // if (Settings::IsConfiguringGlobal()) { - // return static_cast(ui->nvdec_emulation->currentIndex()); - // } - - // if (ui->nvdec_emulation->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { - // Settings::values.nvdec_emulation.SetGlobal(true); - // return Settings::values.nvdec_emulation.GetValue(); - // } - // Settings::values.nvdec_emulation.SetGlobal(false); - // return static_cast(ui->nvdec_emulation->currentIndex() - - // ConfigurationShared::USE_GLOBAL_OFFSET); -} - -void ConfigureGraphics::SetupPerGameUI() { - // if (Settings::IsConfiguringGlobal()) { - // api_combobox->setEnabled(Settings::values.renderer_backend.UsingGlobal()); - // vulkan_device_combobox->setEnabled(Settings::values.renderer_backend.UsingGlobal()); - // ui->fullscreen_mode_combobox->setEnabled(Settings::values.fullscreen_mode.UsingGlobal()); - // ui->aspect_ratio_combobox->setEnabled(Settings::values.aspect_ratio.UsingGlobal()); - // ui->resolution_combobox->setEnabled(Settings::values.resolution_setup.UsingGlobal()); - // ui->scaling_filter_combobox->setEnabled(Settings::values.scaling_filter.UsingGlobal()); - // ui->fsr_sharpening_slider->setEnabled(Settings::values.fsr_sharpening_slider.UsingGlobal()); - // ui->anti_aliasing_combobox->setEnabled(Settings::values.anti_aliasing.UsingGlobal()); - // ui->use_asynchronous_gpu_emulation->setEnabled( - // Settings::values.use_asynchronous_gpu_emulation.UsingGlobal()); - // ui->nvdec_emulation->setEnabled(Settings::values.nvdec_emulation.UsingGlobal()); - // ui->astc_decode_mode_combobox->setEnabled(Settings::values.accelerate_astc.UsingGlobal()); - // ui->use_disk_shader_cache->setEnabled(Settings::values.use_disk_shader_cache.UsingGlobal()); - // ui->bg_button->setEnabled(Settings::values.bg_red.UsingGlobal()); - // ui->fsr_slider_layout->setEnabled(Settings::values.fsr_sharpening_slider.UsingGlobal()); - - // return; - // } - - // connect(ui->bg_combobox, qOverload(&QComboBox::activated), this, [this](int index) { - // ui->bg_button->setEnabled(index == 1); - // ConfigurationShared::SetHighlight(ui->bg_layout, index == 1); - // }); - - // connect(ui->fsr_sharpening_combobox, qOverload(&QComboBox::activated), this, - // [this](int index) { - // ui->fsr_sharpening_slider->setEnabled(index == 1); - // ui->fsr_sharpening_value->setEnabled(index == 1); - // ConfigurationShared::SetHighlight(ui->fsr_sharpening_layout, index == 1); - // }); - - // ConfigurationShared::SetColoredTristate( - // ui->use_disk_shader_cache, Settings::values.use_disk_shader_cache, - // use_disk_shader_cache); - // ConfigurationShared::SetColoredTristate(ui->use_asynchronous_gpu_emulation, - // Settings::values.use_asynchronous_gpu_emulation, - // use_asynchronous_gpu_emulation); - - // ConfigurationShared::SetColoredComboBox(ui->aspect_ratio_combobox, ui->ar_label, - // Settings::values.aspect_ratio.GetValue(true)); - // ConfigurationShared::SetColoredComboBox( - // ui->fullscreen_mode_combobox, ui->fullscreen_mode_label, - // static_cast(Settings::values.fullscreen_mode.GetValue(true))); - // ConfigurationShared::SetColoredComboBox( - // ui->resolution_combobox, ui->resolution_label, - // static_cast(Settings::values.resolution_setup.GetValue(true))); - // ConfigurationShared::SetColoredComboBox( - // ui->scaling_filter_combobox, ui->scaling_filter_label, - // static_cast(Settings::values.scaling_filter.GetValue(true))); - // ConfigurationShared::SetColoredComboBox( - // ui->anti_aliasing_combobox, ui->anti_aliasing_label, - // static_cast(Settings::values.anti_aliasing.GetValue(true))); - // ConfigurationShared::SetColoredComboBox( - // ui->astc_decode_mode_combobox, ui->astc_decode_mode_label, - // static_cast(Settings::values.accelerate_astc.GetValue(true))); - // ConfigurationShared::InsertGlobalItem( - // api_combobox, static_cast(Settings::values.renderer_backend.GetValue(true))); - // ConfigurationShared::InsertGlobalItem( - // ui->nvdec_emulation, static_cast(Settings::values.nvdec_emulation.GetValue(true))); - - // ui->vsync_mode_layout->setVisible(false); -} -- cgit v1.2.3 From 39a1ffbb91a026fd3842f55ebca222db50afea41 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Mon, 8 May 2023 14:11:45 -0400 Subject: configuration: Use buttons instead of highlights Only for updated configs at the moment --- src/yuzu/configuration/configure_graphics.cpp | 71 ++++++++++++++++++++------- 1 file changed, 53 insertions(+), 18 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 37a10ac87..1145b6c43 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -20,8 +20,11 @@ #include #include #include +#include +#include #include #include +#include #include #include "common/common_types.h" @@ -112,7 +115,7 @@ ConfigureGraphics::ConfigureGraphics( } } - connect(api_combobox, qOverload(&QComboBox::currentIndexChanged), this, [this] { + connect(api_combobox, qOverload(&QComboBox::activated), this, [this] { UpdateAPILayout(); PopulateVSyncModeSelection(); }); @@ -146,6 +149,10 @@ ConfigureGraphics::ConfigureGraphics( } void ConfigureGraphics::PopulateVSyncModeSelection() { + if (!Settings::IsConfiguringGlobal()) { + return; + } + const Settings::RendererBackend backend{GetCurrentGraphicsBackend()}; if (backend == Settings::RendererBackend::Null) { vsync_mode_combobox->setEnabled(false); @@ -204,7 +211,12 @@ ConfigureGraphics::~ConfigureGraphics() = default; void ConfigureGraphics::SetConfiguration() { const bool runtime_lock = !system.IsPoweredOn(); - QLayout& api_layout = *ui->api_widget->layout(); + QLayout* api_layout = ui->api_widget->layout(); + QWidget* api_grid_widget = new QWidget(this); + QVBoxLayout* api_grid_layout = new QVBoxLayout(api_grid_widget); + api_grid_layout->setContentsMargins(0, 0, 0, 0); + api_layout->addWidget(api_grid_widget); + QLayout& graphics_layout = *ui->graphics_widget->layout(); std::map> hold_graphics; @@ -213,7 +225,7 @@ void ConfigureGraphics::SetConfiguration() { for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) { const auto& setting_label = setting->GetLabel(); - auto [widget, extra] = [&]() { + auto [widget, extra, button] = [&]() { if (setting->Id() == Settings::values.vulkan_device.Id() || setting->Id() == Settings::values.shader_backend.Id() || setting->Id() == Settings::values.vsync_mode.Id()) { @@ -230,8 +242,20 @@ void ConfigureGraphics::SetConfiguration() { continue; } - if (setting->Id() == Settings::values.vulkan_device.Id()) { - api_layout.addWidget(widget); + if (setting->Id() == Settings::values.renderer_backend.Id()) { + api_grid_layout->addWidget(widget); + api_combobox = reinterpret_cast(extra); + api_restore_global_button = button; + + if (!Settings::IsConfiguringGlobal()) { + QObject::connect(api_restore_global_button, &QAbstractButton::clicked, + [=](bool) { UpdateAPILayout(); }); + + widget->layout()->removeWidget(api_restore_global_button); + api_layout->addWidget(api_restore_global_button); + } + } else if (setting->Id() == Settings::values.vulkan_device.Id()) { + api_layout->addWidget(widget); api_combobox = reinterpret_cast(extra); } else if (setting->Id() == Settings::values.vulkan_device.Id()) { hold_api.push_front(widget); @@ -256,7 +280,7 @@ void ConfigureGraphics::SetConfiguration() { } for (auto widget : hold_api) { - api_layout.addWidget(widget); + api_grid_layout->addWidget(widget); } } @@ -297,6 +321,25 @@ void ConfigureGraphics::ApplyConfiguration() { const auto vsync_mode = PresentModeToSetting(mode); Settings::values.vsync_mode.SetValue(vsync_mode); } + + Settings::values.shader_backend.SetGlobal(true); + Settings::values.vulkan_device.SetGlobal(true); + if (!Settings::IsConfiguringGlobal() && api_restore_global_button->isEnabled()) { + auto backend = static_cast(api_combobox->currentIndex()); + switch (backend) { + case Settings::RendererBackend::OpenGL: + Settings::values.shader_backend.SetGlobal(false); + Settings::values.shader_backend.SetValue( + static_cast(shader_backend_combobox->currentIndex())); + break; + case Settings::RendererBackend::Vulkan: + Settings::values.vulkan_device.SetGlobal(false); + Settings::values.vulkan_device.SetValue(vulkan_device_combobox->currentIndex()); + break; + case Settings::RendererBackend::Null: + break; + } + } } void ConfigureGraphics::changeEvent(QEvent* event) { @@ -322,8 +365,7 @@ void ConfigureGraphics::UpdateBackgroundColorButton(QColor color) { } void ConfigureGraphics::UpdateAPILayout() { - if (!Settings::IsConfiguringGlobal() && - api_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { + if (!Settings::IsConfiguringGlobal() && !api_restore_global_button->isEnabled()) { vulkan_device = Settings::values.vulkan_device.GetValue(true); shader_backend = Settings::values.shader_backend.GetValue(true); vulkan_device_widget->setEnabled(false); @@ -371,15 +413,8 @@ void ConfigureGraphics::RetrieveVulkanDevices() { } Settings::RendererBackend ConfigureGraphics::GetCurrentGraphicsBackend() const { - if (Settings::IsConfiguringGlobal()) { - return static_cast(api_combobox->currentIndex()); - } - - if (api_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { - Settings::values.renderer_backend.SetGlobal(true); - return Settings::values.renderer_backend.GetValue(); + if (!Settings::IsConfiguringGlobal() && !api_restore_global_button->isEnabled()) { + return Settings::values.renderer_backend.GetValue(true); } - Settings::values.renderer_backend.SetGlobal(false); - return static_cast(api_combobox->currentIndex() - - ConfigurationShared::USE_GLOBAL_OFFSET); + return static_cast(api_combobox->currentIndex()); } -- cgit v1.2.3 From d35577d3ed0bfc56ddf85a2e8b163d9d02bec809 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Mon, 8 May 2023 17:33:10 -0400 Subject: configuration: Implement slider --- src/yuzu/configuration/configure_graphics.cpp | 31 +++++++++++---------------- 1 file changed, 13 insertions(+), 18 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 1145b6c43..d3ca7e8cc 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -97,7 +97,6 @@ ConfigureGraphics::ConfigureGraphics( Settings::values.bg_blue.GetValue())); UpdateAPILayout(); PopulateVSyncModeSelection(); //< must happen after UpdateAPILayout - // SetFSRIndicatorText(ui->fsr_sharpening_slider->sliderPosition()); // VSync setting needs to be determined after populating the VSync combobox if (Settings::IsConfiguringGlobal()) { @@ -134,18 +133,13 @@ ConfigureGraphics::ConfigureGraphics( // } // UpdateBackgroundColorButton(new_bg_color); // }); + // ui->bg_label->setVisible(Settings::IsConfiguringGlobal()); + // ui->bg_combobox->setVisible(!Settings::IsConfiguringGlobal()); api_combobox->setEnabled(!UISettings::values.has_broken_vulkan && api_combobox->isEnabled()); ui->api_widget->setEnabled( (!UISettings::values.has_broken_vulkan || Settings::IsConfiguringGlobal()) && ui->api_widget->isEnabled()); - // ui->bg_label->setVisible(Settings::IsConfiguringGlobal()); - // ui->bg_combobox->setVisible(!Settings::IsConfiguringGlobal()); - - // connect(ui->fsr_sharpening_slider, &QSlider::valueChanged, this, - // &ConfigureGraphics::SetFSRIndicatorText); - // ui->fsr_sharpening_combobox->setVisible(!Settings::IsConfiguringGlobal()); - // ui->fsr_sharpening_label->setVisible(Settings::IsConfiguringGlobal()); } void ConfigureGraphics::PopulateVSyncModeSelection() { @@ -230,11 +224,19 @@ void ConfigureGraphics::SetConfiguration() { setting->Id() == Settings::values.shader_backend.Id() || setting->Id() == Settings::values.vsync_mode.Id()) { return ConfigurationShared::CreateWidget( - setting, translations, this, runtime_lock, apply_funcs, trackers, + setting, translations, this, runtime_lock, apply_funcs, ConfigurationShared::RequestType::ComboBox, false); + } else if (setting->Id() == Settings::values.fsr_sharpening_slider.Id()) { + return ConfigurationShared::CreateWidget( + setting, translations, this, runtime_lock, apply_funcs, + ConfigurationShared::RequestType::ReverseSlider, true, 0.5f); + } else if (setting->Id() == Settings::values.use_speed_limit.Id()) { + return ConfigurationShared::CreateWidget( + setting, translations, this, runtime_lock, apply_funcs, + ConfigurationShared::RequestType::LineEdit, true, 1.0f, setting->ToString()); } else { return ConfigurationShared::CreateWidget(setting, translations, this, runtime_lock, - apply_funcs, trackers); + apply_funcs); } }(); @@ -251,12 +253,10 @@ void ConfigureGraphics::SetConfiguration() { QObject::connect(api_restore_global_button, &QAbstractButton::clicked, [=](bool) { UpdateAPILayout(); }); + // Detach API's restore button and place it where we want widget->layout()->removeWidget(api_restore_global_button); api_layout->addWidget(api_restore_global_button); } - } else if (setting->Id() == Settings::values.vulkan_device.Id()) { - api_layout->addWidget(widget); - api_combobox = reinterpret_cast(extra); } else if (setting->Id() == Settings::values.vulkan_device.Id()) { hold_api.push_front(widget); vulkan_device_combobox = reinterpret_cast(extra); @@ -284,11 +284,6 @@ void ConfigureGraphics::SetConfiguration() { } } -void ConfigureGraphics::SetFSRIndicatorText(int percentage) { - // ui->fsr_sharpening_value->setText( - // tr("%1%", "FSR sharpening percentage (e.g. 50%)").arg(100 - (percentage / 2))); -} - const QString ConfigureGraphics::TranslateVSyncMode(VkPresentModeKHR mode, Settings::RendererBackend backend) const { switch (mode) { -- cgit v1.2.3 From f66d617107e45f8213643f2bbaa5f58878c3d3a6 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Mon, 8 May 2023 22:37:03 -0400 Subject: configuration: Move CreateWidget to a class We were passing so many objects between the function and the caller that it needed to be redesigned. --- src/yuzu/configuration/configure_graphics.cpp | 55 +++++++++++++++++++-------- 1 file changed, 40 insertions(+), 15 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index d3ca7e8cc..093e33625 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -35,6 +36,7 @@ #include "ui_configure_graphics.h" #include "yuzu/configuration/configuration_shared.h" #include "yuzu/configuration/configure_graphics.h" +#include "yuzu/configuration/shared_widget.h" #include "yuzu/qt_common.h" #include "yuzu/uisettings.h" #include "yuzu/vk_device_info.h" @@ -219,35 +221,38 @@ void ConfigureGraphics::SetConfiguration() { for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) { const auto& setting_label = setting->GetLabel(); - auto [widget, extra, button] = [&]() { + ConfigurationShared::Widget* widget = [&]() { if (setting->Id() == Settings::values.vulkan_device.Id() || setting->Id() == Settings::values.shader_backend.Id() || setting->Id() == Settings::values.vsync_mode.Id()) { - return ConfigurationShared::CreateWidget( + return new ConfigurationShared::Widget( setting, translations, this, runtime_lock, apply_funcs, ConfigurationShared::RequestType::ComboBox, false); } else if (setting->Id() == Settings::values.fsr_sharpening_slider.Id()) { - return ConfigurationShared::CreateWidget( + return new ConfigurationShared::Widget( setting, translations, this, runtime_lock, apply_funcs, ConfigurationShared::RequestType::ReverseSlider, true, 0.5f); } else if (setting->Id() == Settings::values.use_speed_limit.Id()) { - return ConfigurationShared::CreateWidget( + return new ConfigurationShared::Widget( setting, translations, this, runtime_lock, apply_funcs, - ConfigurationShared::RequestType::LineEdit, true, 1.0f, setting->ToString()); + ConfigurationShared::RequestType::LineEdit, true, 1.0f, + Settings::values.speed_limit.ToString()); } else { - return ConfigurationShared::CreateWidget(setting, translations, this, runtime_lock, - apply_funcs); + return new ConfigurationShared::Widget(setting, translations, this, runtime_lock, + apply_funcs); } }(); - if (widget == nullptr) { + if (!widget->Valid()) { + LOG_DEBUG(Frontend, "Deleted widget for \"{}\"", setting->GetLabel()); + delete widget; continue; } if (setting->Id() == Settings::values.renderer_backend.Id()) { api_grid_layout->addWidget(widget); - api_combobox = reinterpret_cast(extra); - api_restore_global_button = button; + api_combobox = widget->combobox; + api_restore_global_button = widget->restore_button; if (!Settings::IsConfiguringGlobal()) { QObject::connect(api_restore_global_button, &QAbstractButton::clicked, @@ -259,14 +264,33 @@ void ConfigureGraphics::SetConfiguration() { } } else if (setting->Id() == Settings::values.vulkan_device.Id()) { hold_api.push_front(widget); - vulkan_device_combobox = reinterpret_cast(extra); + vulkan_device_combobox = widget->combobox; vulkan_device_widget = widget; } else if (setting->Id() == Settings::values.shader_backend.Id()) { hold_api.push_front(widget); - shader_backend_combobox = reinterpret_cast(extra); + shader_backend_combobox = widget->combobox; shader_backend_widget = widget; + } else if (setting->Id() == Settings::values.use_speed_limit.Id()) { + apply_funcs.push_front([setting, widget](bool powered_on) { + if (!setting->RuntimeModfiable() && powered_on) { + return; + } + + u16 value = QVariant(widget->line_edit->text()).value(); + auto& speed_limit = Settings::values.speed_limit; + if (Settings::IsConfiguringGlobal()) { + speed_limit.SetValue(value); + } else { + bool using_global = !widget->restore_button->isVisible(); + speed_limit.SetGlobal(using_global); + if (!using_global) { + speed_limit.SetValue(value); + } + } + }); + hold_graphics[setting->IsEnum()][setting_label] = widget; } else if (setting->Id() == Settings::values.vsync_mode.Id()) { - vsync_mode_combobox = reinterpret_cast(extra); + vsync_mode_combobox = widget->combobox; hold_graphics[setting->IsEnum()][setting_label] = widget; } else { hold_graphics[setting->IsEnum()][setting_label] = widget; @@ -360,6 +384,7 @@ void ConfigureGraphics::UpdateBackgroundColorButton(QColor color) { } void ConfigureGraphics::UpdateAPILayout() { + bool runtime_lock = !system.IsPoweredOn(); if (!Settings::IsConfiguringGlobal() && !api_restore_global_button->isEnabled()) { vulkan_device = Settings::values.vulkan_device.GetValue(true); shader_backend = Settings::values.shader_backend.GetValue(true); @@ -368,8 +393,8 @@ void ConfigureGraphics::UpdateAPILayout() { } else { vulkan_device = Settings::values.vulkan_device.GetValue(); shader_backend = Settings::values.shader_backend.GetValue(); - vulkan_device_widget->setEnabled(true); - shader_backend_widget->setEnabled(true); + vulkan_device_widget->setEnabled(runtime_lock); + shader_backend_widget->setEnabled(runtime_lock); } switch (GetCurrentGraphicsBackend()) { -- cgit v1.2.3 From 640e7db60e768da34c11c14afd0821e4f43e86de Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Mon, 8 May 2023 23:55:34 -0400 Subject: configure_graphics: Remove redundant log --- src/yuzu/configuration/configure_graphics.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 093e33625..0b21f80f5 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -244,7 +244,6 @@ void ConfigureGraphics::SetConfiguration() { }(); if (!widget->Valid()) { - LOG_DEBUG(Frontend, "Deleted widget for \"{}\"", setting->GetLabel()); delete widget; continue; } -- cgit v1.2.3 From 23f874ae60eebae5451722cd89101e76e1e14065 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Tue, 9 May 2023 15:10:22 -0400 Subject: configure_graphics: Reimplement bg_color To specialized a setting to be worth adding to the shared_widget imo, so add it roughly like before. --- src/yuzu/configuration/configure_graphics.cpp | 74 +++++++++++++++++++++------ 1 file changed, 59 insertions(+), 15 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 0b21f80f5..4c6d69703 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -88,7 +88,7 @@ ConfigureGraphics::ConfigureGraphics( ui->setupUi(this); - SetConfiguration(); + Setup(); for (const auto& device : vulkan_devices) { vulkan_device_combobox->addItem(device); @@ -128,20 +128,22 @@ ConfigureGraphics::ConfigureGraphics( connect(shader_backend_combobox, qOverload(&QComboBox::activated), this, [this](int backend) { UpdateShaderBackendSelection(backend); }); - // connect(ui->bg_button, &QPushButton::clicked, this, [this] { - // const QColor new_bg_color = QColorDialog::getColor(bg_color); - // if (!new_bg_color.isValid()) { - // return; - // } - // UpdateBackgroundColorButton(new_bg_color); - // }); - // ui->bg_label->setVisible(Settings::IsConfiguringGlobal()); - // ui->bg_combobox->setVisible(!Settings::IsConfiguringGlobal()); + connect(ui->bg_button, &QPushButton::clicked, this, [this] { + const QColor new_bg_color = QColorDialog::getColor(bg_color); + if (!new_bg_color.isValid()) { + return; + } + UpdateBackgroundColorButton(new_bg_color); + }); api_combobox->setEnabled(!UISettings::values.has_broken_vulkan && api_combobox->isEnabled()); ui->api_widget->setEnabled( (!UISettings::values.has_broken_vulkan || Settings::IsConfiguringGlobal()) && ui->api_widget->isEnabled()); + + if (Settings::IsConfiguringGlobal()) { + ui->bg_widget->setEnabled(Settings::values.bg_red.UsingGlobal()); + } } void ConfigureGraphics::PopulateVSyncModeSelection() { @@ -205,7 +207,9 @@ void ConfigureGraphics::UpdateShaderBackendSelection(int backend) { ConfigureGraphics::~ConfigureGraphics() = default; -void ConfigureGraphics::SetConfiguration() { +void ConfigureGraphics::SetConfiguration() {} + +void ConfigureGraphics::Setup() { const bool runtime_lock = !system.IsPoweredOn(); QLayout* api_layout = ui->api_widget->layout(); QWidget* api_grid_widget = new QWidget(this); @@ -305,6 +309,46 @@ void ConfigureGraphics::SetConfiguration() { for (auto widget : hold_api) { api_grid_layout->addWidget(widget); } + + if (Settings::IsConfiguringGlobal()) { + apply_funcs.push_front([this](bool powered_on) { + Settings::values.bg_red.SetValue(static_cast(bg_color.red())); + Settings::values.bg_green.SetValue(static_cast(bg_color.green())); + Settings::values.bg_blue.SetValue(static_cast(bg_color.blue())); + }); + } else { + QPushButton* bg_restore_button = ConfigurationShared::Widget::CreateRestoreGlobalButton( + Settings::values.bg_red, ui->bg_widget); + ui->bg_widget->layout()->addWidget(bg_restore_button); + + QObject::connect(bg_restore_button, &QAbstractButton::clicked, + [bg_restore_button, this](bool) { + const int r = Settings::values.bg_red.GetValue(true); + const int g = Settings::values.bg_green.GetValue(true); + const int b = Settings::values.bg_blue.GetValue(true); + UpdateBackgroundColorButton(QColor::fromRgb(r, g, b)); + + bg_restore_button->setVisible(false); + bg_restore_button->setEnabled(false); + }); + + QObject::connect(ui->bg_button, &QAbstractButton::clicked, [bg_restore_button](bool) { + bg_restore_button->setVisible(true); + bg_restore_button->setEnabled(true); + }); + + apply_funcs.push_front([bg_restore_button, this](bool powered_on) { + const bool using_global = !bg_restore_button->isEnabled(); + Settings::values.bg_red.SetGlobal(using_global); + Settings::values.bg_green.SetGlobal(using_global); + Settings::values.bg_blue.SetGlobal(using_global); + if (!using_global) { + Settings::values.bg_red.SetValue(static_cast(bg_color.red())); + Settings::values.bg_green.SetValue(static_cast(bg_color.green())); + Settings::values.bg_blue.SetValue(static_cast(bg_color.blue())); + } + }); + } } const QString ConfigureGraphics::TranslateVSyncMode(VkPresentModeKHR mode, @@ -375,11 +419,11 @@ void ConfigureGraphics::RetranslateUI() { void ConfigureGraphics::UpdateBackgroundColorButton(QColor color) { bg_color = color; - // QPixmap pixmap(ui->bg_button->size()); - // pixmap.fill(bg_color); + QPixmap pixmap(ui->bg_button->size()); + pixmap.fill(bg_color); - // const QIcon color_icon(pixmap); - // ui->bg_button->setIcon(color_icon); + const QIcon color_icon(pixmap); + ui->bg_button->setIcon(color_icon); } void ConfigureGraphics::UpdateAPILayout() { -- cgit v1.2.3 From 97674bc88821b202aa7309208b71f2ab042fc5aa Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Tue, 9 May 2023 15:46:07 -0400 Subject: shared_widget: Support checkbox + spinbox --- src/yuzu/configuration/configure_graphics.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 4c6d69703..5132c4796 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -240,7 +240,7 @@ void ConfigureGraphics::Setup() { return new ConfigurationShared::Widget( setting, translations, this, runtime_lock, apply_funcs, ConfigurationShared::RequestType::LineEdit, true, 1.0f, - Settings::values.speed_limit.ToString()); + &Settings::values.speed_limit, QString::fromStdString("%")); } else { return new ConfigurationShared::Widget(setting, translations, this, runtime_lock, apply_funcs); -- cgit v1.2.3 From df2bd251faa39b9f368110f0fb7f92f7eea4d8d2 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Tue, 9 May 2023 15:46:23 -0400 Subject: graphics: Set speed limit to spinbox --- src/yuzu/configuration/configure_graphics.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 5132c4796..d1ec2bae3 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -239,8 +239,8 @@ void ConfigureGraphics::Setup() { } else if (setting->Id() == Settings::values.use_speed_limit.Id()) { return new ConfigurationShared::Widget( setting, translations, this, runtime_lock, apply_funcs, - ConfigurationShared::RequestType::LineEdit, true, 1.0f, - &Settings::values.speed_limit, QString::fromStdString("%")); + ConfigurationShared::RequestType::SpinBox, true, 1.0f, + &Settings::values.speed_limit, QStringLiteral("%")); } else { return new ConfigurationShared::Widget(setting, translations, this, runtime_lock, apply_funcs); -- cgit v1.2.3 From b11a2a206fa2945c954f0b432937bfd468c43fea Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Tue, 9 May 2023 16:36:09 -0400 Subject: shared_widget: Internalize extra setting configuration --- src/yuzu/configuration/configure_graphics.cpp | 19 ------------------- 1 file changed, 19 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index d1ec2bae3..ae3cf269f 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -273,25 +273,6 @@ void ConfigureGraphics::Setup() { hold_api.push_front(widget); shader_backend_combobox = widget->combobox; shader_backend_widget = widget; - } else if (setting->Id() == Settings::values.use_speed_limit.Id()) { - apply_funcs.push_front([setting, widget](bool powered_on) { - if (!setting->RuntimeModfiable() && powered_on) { - return; - } - - u16 value = QVariant(widget->line_edit->text()).value(); - auto& speed_limit = Settings::values.speed_limit; - if (Settings::IsConfiguringGlobal()) { - speed_limit.SetValue(value); - } else { - bool using_global = !widget->restore_button->isVisible(); - speed_limit.SetGlobal(using_global); - if (!using_global) { - speed_limit.SetValue(value); - } - } - }); - hold_graphics[setting->IsEnum()][setting_label] = widget; } else if (setting->Id() == Settings::values.vsync_mode.Id()) { vsync_mode_combobox = widget->combobox; hold_graphics[setting->IsEnum()][setting_label] = widget; -- cgit v1.2.3 From 8e151460265f04c7bf4a981b5f97f252a0444c27 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Wed, 10 May 2023 17:57:25 -0400 Subject: configure_system: Implement with for loop --- src/yuzu/configuration/configure_graphics.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index ae3cf269f..977aed42d 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -240,7 +240,7 @@ void ConfigureGraphics::Setup() { return new ConfigurationShared::Widget( setting, translations, this, runtime_lock, apply_funcs, ConfigurationShared::RequestType::SpinBox, true, 1.0f, - &Settings::values.speed_limit, QStringLiteral("%")); + &Settings::values.speed_limit, "%"); } else { return new ConfigurationShared::Widget(setting, translations, this, runtime_lock, apply_funcs); -- cgit v1.2.3 From 4ff8255e4a985e69046e453a9bd38adf80346548 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Fri, 9 Jun 2023 16:53:26 -0400 Subject: shared_widget: Refactor helpers Makes checkbox creation an option as opposed to a label. --- src/yuzu/configuration/configure_graphics.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 977aed42d..2354323b8 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -165,6 +165,11 @@ void ConfigureGraphics::PopulateVSyncModeSelection() { : vsync_mode_combobox_enum_map[current_index]; int index{}; const int device{vulkan_device_combobox->currentIndex()}; //< current selected Vulkan device + if (device == -1) { + // Invalid device + return; + } + const auto& present_modes = //< relevant vector of present modes for the selected device or API backend == Settings::RendererBackend::Vulkan ? device_present_modes[device] : default_present_modes; @@ -236,11 +241,11 @@ void ConfigureGraphics::Setup() { return new ConfigurationShared::Widget( setting, translations, this, runtime_lock, apply_funcs, ConfigurationShared::RequestType::ReverseSlider, true, 0.5f); - } else if (setting->Id() == Settings::values.use_speed_limit.Id()) { + } else if (setting->Id() == Settings::values.speed_limit.Id()) { return new ConfigurationShared::Widget( setting, translations, this, runtime_lock, apply_funcs, ConfigurationShared::RequestType::SpinBox, true, 1.0f, - &Settings::values.speed_limit, "%"); + &Settings::values.use_speed_limit, "%"); } else { return new ConfigurationShared::Widget(setting, translations, this, runtime_lock, apply_funcs); -- cgit v1.2.3 From 432f68ad29df7a368ba375d75d667c954e9c80b9 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Thu, 18 May 2023 17:54:22 -0400 Subject: 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 --- src/yuzu/configuration/configure_graphics.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 2354323b8..45a4db430 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -240,12 +240,14 @@ void ConfigureGraphics::Setup() { } else if (setting->Id() == Settings::values.fsr_sharpening_slider.Id()) { return new ConfigurationShared::Widget( setting, translations, this, runtime_lock, apply_funcs, - ConfigurationShared::RequestType::ReverseSlider, true, 0.5f); + ConfigurationShared::RequestType::ReverseSlider, true, 0.5f, nullptr, + tr("%1%", "FSR sharpening percentage (e.g. 50%)")); } else if (setting->Id() == Settings::values.speed_limit.Id()) { return new ConfigurationShared::Widget( setting, translations, this, runtime_lock, apply_funcs, ConfigurationShared::RequestType::SpinBox, true, 1.0f, - &Settings::values.use_speed_limit, "%"); + &Settings::values.use_speed_limit, + tr("%", "Limit speed percentage (e.g. 50%)")); } else { return new ConfigurationShared::Widget(setting, translations, this, runtime_lock, apply_funcs); @@ -304,7 +306,7 @@ void ConfigureGraphics::Setup() { }); } else { QPushButton* bg_restore_button = ConfigurationShared::Widget::CreateRestoreGlobalButton( - Settings::values.bg_red, ui->bg_widget); + Settings::values.bg_red.UsingGlobal(), ui->bg_widget); ui->bg_widget->layout()->addWidget(bg_restore_button); QObject::connect(bg_restore_button, &QAbstractButton::clicked, -- cgit v1.2.3 From c5a3642cb62b4676d0c8b98949daec20e7c02e6b Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Thu, 18 May 2023 22:17:36 -0400 Subject: configuration: Use a mapping of setting value to name Makes comboboxes always correspond to the value of the setting they're modifying. --- src/yuzu/configuration/configure_graphics.cpp | 45 +++++++++++++++++++-------- 1 file changed, 32 insertions(+), 13 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 45a4db430..a4dac659f 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -79,10 +79,12 @@ ConfigureGraphics::ConfigureGraphics( const Core::System& system_, std::vector& records_, const std::function& expose_compute_option_, std::shared_ptr> group, - const ConfigurationShared::TranslationMap& translations_, QWidget* parent) + const ConfigurationShared::TranslationMap& translations_, + const ConfigurationShared::ComboboxTranslationMap& combobox_translations_, QWidget* parent) : ConfigurationShared::Tab(group, parent), ui{std::make_unique()}, records{records_}, expose_compute_option{expose_compute_option_}, system{system_}, - translations{translations_} { + translations{translations_}, combobox_translations{combobox_translations_}, + shader_mapping{combobox_translations.at(typeid(Settings::ShaderBackend))} { vulkan_device = Settings::values.vulkan_device.GetValue(); RetrieveVulkanDevices(); @@ -235,22 +237,22 @@ void ConfigureGraphics::Setup() { setting->Id() == Settings::values.shader_backend.Id() || setting->Id() == Settings::values.vsync_mode.Id()) { return new ConfigurationShared::Widget( - setting, translations, this, runtime_lock, apply_funcs, + setting, translations, combobox_translations, this, runtime_lock, apply_funcs, ConfigurationShared::RequestType::ComboBox, false); } else if (setting->Id() == Settings::values.fsr_sharpening_slider.Id()) { return new ConfigurationShared::Widget( - setting, translations, this, runtime_lock, apply_funcs, + setting, translations, combobox_translations, this, runtime_lock, apply_funcs, ConfigurationShared::RequestType::ReverseSlider, true, 0.5f, nullptr, tr("%1%", "FSR sharpening percentage (e.g. 50%)")); } else if (setting->Id() == Settings::values.speed_limit.Id()) { return new ConfigurationShared::Widget( - setting, translations, this, runtime_lock, apply_funcs, + setting, translations, combobox_translations, this, runtime_lock, apply_funcs, ConfigurationShared::RequestType::SpinBox, true, 1.0f, &Settings::values.use_speed_limit, tr("%", "Limit speed percentage (e.g. 50%)")); } else { - return new ConfigurationShared::Widget(setting, translations, this, runtime_lock, - apply_funcs); + return new ConfigurationShared::Widget(setting, translations, combobox_translations, + this, runtime_lock, apply_funcs); } }(); @@ -360,6 +362,15 @@ const QString ConfigureGraphics::TranslateVSyncMode(VkPresentModeKHR mode, } } +int ConfigureGraphics::FindIndex(std::type_index enumeration, int value) const { + for (u32 i = 0; i < combobox_translations.at(enumeration).size(); i++) { + if (combobox_translations.at(enumeration)[i].first == static_cast(value)) { + return i; + } + } + return -1; +} + void ConfigureGraphics::ApplyConfiguration() { const bool powered_on = system.IsPoweredOn(); for (const auto& func : apply_funcs) { @@ -374,13 +385,17 @@ void ConfigureGraphics::ApplyConfiguration() { Settings::values.shader_backend.SetGlobal(true); Settings::values.vulkan_device.SetGlobal(true); - if (!Settings::IsConfiguringGlobal() && api_restore_global_button->isEnabled()) { - auto backend = static_cast(api_combobox->currentIndex()); + if (Settings::IsConfiguringGlobal() || + (!Settings::IsConfiguringGlobal() && api_restore_global_button->isEnabled())) { + auto backend = static_cast( + combobox_translations + .at(typeid(Settings::RendererBackend))[api_combobox->currentIndex()] + .first); switch (backend) { case Settings::RendererBackend::OpenGL: Settings::values.shader_backend.SetGlobal(false); - Settings::values.shader_backend.SetValue( - static_cast(shader_backend_combobox->currentIndex())); + Settings::values.shader_backend.SetValue(static_cast( + shader_mapping[shader_backend_combobox->currentIndex()].first)); break; case Settings::RendererBackend::Vulkan: Settings::values.vulkan_device.SetGlobal(false); @@ -430,7 +445,8 @@ void ConfigureGraphics::UpdateAPILayout() { switch (GetCurrentGraphicsBackend()) { case Settings::RendererBackend::OpenGL: - shader_backend_combobox->setCurrentIndex(static_cast(shader_backend)); + shader_backend_combobox->setCurrentIndex( + FindIndex(typeid(Settings::ShaderBackend), static_cast(shader_backend))); vulkan_device_widget->setVisible(false); shader_backend_widget->setVisible(true); break; @@ -467,5 +483,8 @@ Settings::RendererBackend ConfigureGraphics::GetCurrentGraphicsBackend() const { if (!Settings::IsConfiguringGlobal() && !api_restore_global_button->isEnabled()) { return Settings::values.renderer_backend.GetValue(true); } - return static_cast(api_combobox->currentIndex()); + return static_cast( + combobox_translations.at(typeid(Settings::RendererBackend)) + .at(api_combobox->currentIndex()) + .first); } -- cgit v1.2.3 From 9e3c94bb3dd1a9065977930a985be43f6052044c Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Tue, 6 Jun 2023 22:30:02 -0400 Subject: configuration: Use IDs to sort holds --- src/yuzu/configuration/configure_graphics.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index a4dac659f..59702603a 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -226,12 +226,10 @@ void ConfigureGraphics::Setup() { QLayout& graphics_layout = *ui->graphics_widget->layout(); - std::map> hold_graphics; + std::map hold_graphics; std::forward_list hold_api; for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) { - const auto& setting_label = setting->GetLabel(); - ConfigurationShared::Widget* widget = [&]() { if (setting->Id() == Settings::values.vulkan_device.Id() || setting->Id() == Settings::values.shader_backend.Id() || @@ -284,16 +282,14 @@ void ConfigureGraphics::Setup() { shader_backend_widget = widget; } else if (setting->Id() == Settings::values.vsync_mode.Id()) { vsync_mode_combobox = widget->combobox; - hold_graphics[setting->IsEnum()][setting_label] = widget; + hold_graphics.emplace(setting->Id(), widget); } else { - hold_graphics[setting->IsEnum()][setting_label] = widget; + hold_graphics.emplace(setting->Id(), widget); } } - for (const auto& [_, settings] : hold_graphics) { - for (const auto& [label, widget] : settings) { - graphics_layout.addWidget(widget); - } + for (const auto& [id, widget] : hold_graphics) { + graphics_layout.addWidget(widget); } for (auto widget : hold_api) { -- cgit v1.2.3 From d146dd9d123a999e40307a93403239b81b04bffc Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Wed, 7 Jun 2023 01:52:23 -0400 Subject: settings,general: Rename non-confirming enums --- src/yuzu/configuration/configure_graphics.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 59702603a..1e26267a0 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -51,9 +51,9 @@ static constexpr VkPresentModeKHR VSyncSettingToMode(Settings::VSyncMode mode) { return VK_PRESENT_MODE_IMMEDIATE_KHR; case Settings::VSyncMode::Mailbox: return VK_PRESENT_MODE_MAILBOX_KHR; - case Settings::VSyncMode::FIFO: + case Settings::VSyncMode::Fifo: return VK_PRESENT_MODE_FIFO_KHR; - case Settings::VSyncMode::FIFORelaxed: + case Settings::VSyncMode::FifoRelaxed: return VK_PRESENT_MODE_FIFO_RELAXED_KHR; default: return VK_PRESENT_MODE_FIFO_KHR; @@ -67,11 +67,11 @@ static constexpr Settings::VSyncMode PresentModeToSetting(VkPresentModeKHR mode) case VK_PRESENT_MODE_MAILBOX_KHR: return Settings::VSyncMode::Mailbox; case VK_PRESENT_MODE_FIFO_KHR: - return Settings::VSyncMode::FIFO; + return Settings::VSyncMode::Fifo; case VK_PRESENT_MODE_FIFO_RELAXED_KHR: - return Settings::VSyncMode::FIFORelaxed; + return Settings::VSyncMode::FifoRelaxed; default: - return Settings::VSyncMode::FIFO; + return Settings::VSyncMode::Fifo; } } -- cgit v1.2.3 From 81e9cf09349119cb84c5f52e2d7b64f0fe2482b8 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Fri, 9 Jun 2023 17:40:25 -0400 Subject: configuration: Document odd widget cases Explain why we need to do things differently at times, to serve as a reference. --- src/yuzu/configuration/configure_graphics.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 1e26267a0..c053da0cd 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -231,6 +231,7 @@ void ConfigureGraphics::Setup() { for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) { ConfigurationShared::Widget* widget = [&]() { + // Set managed to false on these and set up the comboboxes ourselves if (setting->Id() == Settings::values.vulkan_device.Id() || setting->Id() == Settings::values.shader_backend.Id() || setting->Id() == Settings::values.vsync_mode.Id()) { @@ -238,11 +239,13 @@ void ConfigureGraphics::Setup() { setting, translations, combobox_translations, this, runtime_lock, apply_funcs, ConfigurationShared::RequestType::ComboBox, false); } else if (setting->Id() == Settings::values.fsr_sharpening_slider.Id()) { + // FSR needs a reversed slider return new ConfigurationShared::Widget( setting, translations, combobox_translations, this, runtime_lock, apply_funcs, ConfigurationShared::RequestType::ReverseSlider, true, 0.5f, nullptr, tr("%1%", "FSR sharpening percentage (e.g. 50%)")); } else if (setting->Id() == Settings::values.speed_limit.Id()) { + // speed_limit needs a checkbox to set use_speed_limit, as well as a spinbox return new ConfigurationShared::Widget( setting, translations, combobox_translations, this, runtime_lock, apply_funcs, ConfigurationShared::RequestType::SpinBox, true, 1.0f, @@ -269,18 +272,23 @@ void ConfigureGraphics::Setup() { [=](bool) { UpdateAPILayout(); }); // Detach API's restore button and place it where we want + // Lets us put it on the side, and it will automatically scale if there's a second + // combobox (shader_backend, vulkan_device) widget->layout()->removeWidget(api_restore_global_button); api_layout->addWidget(api_restore_global_button); } } else if (setting->Id() == Settings::values.vulkan_device.Id()) { + // Keep track of vulkan_device's combobox so we can populate it hold_api.push_front(widget); vulkan_device_combobox = widget->combobox; vulkan_device_widget = widget; } else if (setting->Id() == Settings::values.shader_backend.Id()) { + // Keep track of shader_backend's combobox so we can populate it hold_api.push_front(widget); shader_backend_combobox = widget->combobox; shader_backend_widget = widget; } else if (setting->Id() == Settings::values.vsync_mode.Id()) { + // Keep track of vsync_mode's combobox so we can populate it vsync_mode_combobox = widget->combobox; hold_graphics.emplace(setting->Id(), widget); } else { @@ -296,6 +304,8 @@ void ConfigureGraphics::Setup() { api_grid_layout->addWidget(widget); } + // Background color is too specific to build into the new system, so we manage it here + // (3 settings, all collected into a single widget with a QColor to manage on top) if (Settings::IsConfiguringGlobal()) { apply_funcs.push_front([this](bool powered_on) { Settings::values.bg_red.SetValue(static_cast(bg_color.red())); -- cgit v1.2.3 From 0193add060ecc591ca27d029916823911df5d503 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Sat, 10 Jun 2023 00:44:03 -0400 Subject: general: Add typeinfo where needed Using typeid without including typeinfo first produces an ill-formed program. --- src/yuzu/configuration/configure_graphics.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index c053da0cd..4d638a11b 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include -- cgit v1.2.3 From 79024bb9554ba676a654ff76335008e37181be1c Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Sat, 10 Jun 2023 16:40:38 -0400 Subject: FIXME configuration: Avoid unnecessary allocations ConfigurationShared::Widget needs to be created with a builder. This would avoid some duplicated code. --- src/yuzu/configuration/configure_graphics.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 4d638a11b..9afab6d91 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -231,6 +231,10 @@ void ConfigureGraphics::Setup() { std::forward_list hold_api; for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) { + if (!Settings::IsConfiguringGlobal() && !setting->Switchable()) { + continue; + } + ConfigurationShared::Widget* widget = [&]() { // Set managed to false on these and set up the comboboxes ourselves if (setting->Id() == Settings::values.vulkan_device.Id() || @@ -273,8 +277,8 @@ void ConfigureGraphics::Setup() { [=](bool) { UpdateAPILayout(); }); // Detach API's restore button and place it where we want - // Lets us put it on the side, and it will automatically scale if there's a second - // combobox (shader_backend, vulkan_device) + // Lets us put it on the side, and it will automatically scale if there's a + // second combobox (shader_backend, vulkan_device) widget->layout()->removeWidget(api_restore_global_button); api_layout->addWidget(api_restore_global_button); } -- cgit v1.2.3 From 512fb3abff5e4bf94c9d1a8f46980833f846642a Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Mon, 12 Jun 2023 17:05:45 -0400 Subject: configure_graphics: Fix vulkan_device bug --- src/yuzu/configuration/configure_graphics.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 9afab6d91..44d1603d0 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -394,8 +394,6 @@ void ConfigureGraphics::ApplyConfiguration() { Settings::values.vsync_mode.SetValue(vsync_mode); } - Settings::values.shader_backend.SetGlobal(true); - Settings::values.vulkan_device.SetGlobal(true); if (Settings::IsConfiguringGlobal() || (!Settings::IsConfiguringGlobal() && api_restore_global_button->isEnabled())) { auto backend = static_cast( @@ -404,12 +402,12 @@ void ConfigureGraphics::ApplyConfiguration() { .first); switch (backend) { case Settings::RendererBackend::OpenGL: - Settings::values.shader_backend.SetGlobal(false); + Settings::values.shader_backend.SetGlobal(Settings::IsConfiguringGlobal()); Settings::values.shader_backend.SetValue(static_cast( shader_mapping[shader_backend_combobox->currentIndex()].first)); break; case Settings::RendererBackend::Vulkan: - Settings::values.vulkan_device.SetGlobal(false); + Settings::values.vulkan_device.SetGlobal(Settings::IsConfiguringGlobal()); Settings::values.vulkan_device.SetValue(vulkan_device_combobox->currentIndex()); break; case Settings::RendererBackend::Null: -- cgit v1.2.3 From a7ee9d999f612dcf5e9fcf68b410a3b49039d8ed Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Thu, 15 Jun 2023 16:45:42 -0400 Subject: configuration: Use shorter constructor as needed Reduces some confusion hopefully, since some parameters specified were not specific to the setting in question. --- src/yuzu/configuration/configure_graphics.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 44d1603d0..cf1333cc8 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -253,8 +253,7 @@ void ConfigureGraphics::Setup() { // speed_limit needs a checkbox to set use_speed_limit, as well as a spinbox return new ConfigurationShared::Widget( setting, translations, combobox_translations, this, runtime_lock, apply_funcs, - ConfigurationShared::RequestType::SpinBox, true, 1.0f, - &Settings::values.use_speed_limit, + &Settings::values.use_speed_limit, ConfigurationShared::RequestType::SpinBox, tr("%", "Limit speed percentage (e.g. 50%)")); } else { return new ConfigurationShared::Widget(setting, translations, combobox_translations, -- cgit v1.2.3 From 57a00e01d69eaf413d162899c32dd1e04aa3e157 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Thu, 15 Jun 2023 17:17:50 -0400 Subject: configure_graphcs: Fix setting shader/device in custom config --- src/yuzu/configuration/configure_graphics.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index cf1333cc8..673921649 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -267,6 +267,7 @@ void ConfigureGraphics::Setup() { } if (setting->Id() == Settings::values.renderer_backend.Id()) { + // Add the renderer combobox now so it's at the top api_grid_layout->addWidget(widget); api_combobox = widget->combobox; api_restore_global_button = widget->restore_button; @@ -393,6 +394,8 @@ void ConfigureGraphics::ApplyConfiguration() { Settings::values.vsync_mode.SetValue(vsync_mode); } + Settings::values.vulkan_device.SetGlobal(true); + Settings::values.shader_backend.SetGlobal(true); if (Settings::IsConfiguringGlobal() || (!Settings::IsConfiguringGlobal() && api_restore_global_button->isEnabled())) { auto backend = static_cast( -- cgit v1.2.3 From 916c6cd1a0baab21cf2c029179290d73fd8dab89 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Thu, 15 Jun 2023 17:45:33 -0400 Subject: configure_graphics: Simplify UpdateAPILayout Reduces branching/swictch cases for simplicity/code size --- src/yuzu/configuration/configure_graphics.cpp | 43 ++++++++++----------------- 1 file changed, 16 insertions(+), 27 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 673921649..62d74d12b 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -33,6 +33,7 @@ #include "common/dynamic_library.h" #include "common/logging/log.h" #include "common/settings.h" +#include "common/settings_enums.h" #include "core/core.h" #include "ui_configure_graphics.h" #include "yuzu/configuration/configuration_shared.h" @@ -442,36 +443,24 @@ void ConfigureGraphics::UpdateBackgroundColorButton(QColor color) { void ConfigureGraphics::UpdateAPILayout() { bool runtime_lock = !system.IsPoweredOn(); - if (!Settings::IsConfiguringGlobal() && !api_restore_global_button->isEnabled()) { - vulkan_device = Settings::values.vulkan_device.GetValue(true); - shader_backend = Settings::values.shader_backend.GetValue(true); - vulkan_device_widget->setEnabled(false); - shader_backend_widget->setEnabled(false); - } else { - vulkan_device = Settings::values.vulkan_device.GetValue(); - shader_backend = Settings::values.shader_backend.GetValue(); - vulkan_device_widget->setEnabled(runtime_lock); - shader_backend_widget->setEnabled(runtime_lock); - } + bool need_global = !(Settings::IsConfiguringGlobal() || api_restore_global_button->isEnabled()); + vulkan_device = Settings::values.vulkan_device.GetValue(need_global); + shader_backend = Settings::values.shader_backend.GetValue(need_global); + vulkan_device_widget->setEnabled(!need_global && runtime_lock); + shader_backend_widget->setEnabled(!need_global && runtime_lock); + + const auto current_backend = GetCurrentGraphicsBackend(); + const bool is_opengl = current_backend == Settings::RendererBackend::OpenGL; + const bool is_vulkan = current_backend == Settings::RendererBackend::Vulkan; + + vulkan_device_widget->setVisible(is_vulkan); + shader_backend_widget->setVisible(is_opengl); - switch (GetCurrentGraphicsBackend()) { - case Settings::RendererBackend::OpenGL: + if (is_opengl) { shader_backend_combobox->setCurrentIndex( FindIndex(typeid(Settings::ShaderBackend), static_cast(shader_backend))); - vulkan_device_widget->setVisible(false); - shader_backend_widget->setVisible(true); - break; - case Settings::RendererBackend::Vulkan: - if (static_cast(vulkan_device) < vulkan_device_combobox->count()) { - vulkan_device_combobox->setCurrentIndex(vulkan_device); - } - vulkan_device_widget->setVisible(true); - shader_backend_widget->setVisible(false); - break; - case Settings::RendererBackend::Null: - vulkan_device_widget->setVisible(false); - shader_backend_widget->setVisible(false); - break; + } else if (is_vulkan && static_cast(vulkan_device) < vulkan_device_combobox->count()) { + vulkan_device_combobox->setCurrentIndex(vulkan_device); } } -- cgit v1.2.3 From ee32b177823b9b8499c9fd188a571884f00cf655 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Sun, 18 Jun 2023 03:52:41 -0400 Subject: common,yuzu-qt: GCC warning silences Fixes -Wshadow, -Wdeprecated, and catch by copy rather than by ref. --- src/yuzu/configuration/configure_graphics.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 62d74d12b..5537118ef 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -80,10 +80,10 @@ static constexpr Settings::VSyncMode PresentModeToSetting(VkPresentModeKHR mode) ConfigureGraphics::ConfigureGraphics( const Core::System& system_, std::vector& records_, const std::function& expose_compute_option_, - std::shared_ptr> group, + std::shared_ptr> group_, const ConfigurationShared::TranslationMap& translations_, const ConfigurationShared::ComboboxTranslationMap& combobox_translations_, QWidget* parent) - : ConfigurationShared::Tab(group, parent), ui{std::make_unique()}, + : ConfigurationShared::Tab(group_, parent), ui{std::make_unique()}, records{records_}, expose_compute_option{expose_compute_option_}, system{system_}, translations{translations_}, combobox_translations{combobox_translations_}, shader_mapping{combobox_translations.at(typeid(Settings::ShaderBackend))} { @@ -275,7 +275,7 @@ void ConfigureGraphics::Setup() { if (!Settings::IsConfiguringGlobal()) { QObject::connect(api_restore_global_button, &QAbstractButton::clicked, - [=](bool) { UpdateAPILayout(); }); + [this](bool) { UpdateAPILayout(); }); // Detach API's restore button and place it where we want // Lets us put it on the side, and it will automatically scale if there's a -- cgit v1.2.3 From 81a96bafe210c218efed4e3f1138510bb8a0748c Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Mon, 19 Jun 2023 16:41:25 -0400 Subject: configuration: Move speed_limit to core --- src/yuzu/configuration/configure_graphics.cpp | 6 ------ 1 file changed, 6 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 5537118ef..2f041cba6 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -250,12 +250,6 @@ void ConfigureGraphics::Setup() { setting, translations, combobox_translations, this, runtime_lock, apply_funcs, ConfigurationShared::RequestType::ReverseSlider, true, 0.5f, nullptr, tr("%1%", "FSR sharpening percentage (e.g. 50%)")); - } else if (setting->Id() == Settings::values.speed_limit.Id()) { - // speed_limit needs a checkbox to set use_speed_limit, as well as a spinbox - return new ConfigurationShared::Widget( - setting, translations, combobox_translations, this, runtime_lock, apply_funcs, - &Settings::values.use_speed_limit, ConfigurationShared::RequestType::SpinBox, - tr("%", "Limit speed percentage (e.g. 50%)")); } else { return new ConfigurationShared::Widget(setting, translations, combobox_translations, this, runtime_lock, apply_funcs); -- cgit v1.2.3 From ad645c29a44bd117cad90bda56e1f4d6296f2666 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Wed, 21 Jun 2023 01:42:42 -0400 Subject: configuration: Use a builder to create widgets This gets rid of some repeated code and sets us up to send more information to the new widget. --- src/yuzu/configuration/configure_graphics.cpp | 32 +++++++++++---------------- 1 file changed, 13 insertions(+), 19 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 2f041cba6..18872fa69 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -81,18 +81,17 @@ ConfigureGraphics::ConfigureGraphics( const Core::System& system_, std::vector& records_, const std::function& expose_compute_option_, std::shared_ptr> group_, - const ConfigurationShared::TranslationMap& translations_, - const ConfigurationShared::ComboboxTranslationMap& combobox_translations_, QWidget* parent) + const ConfigurationShared::Builder& builder, QWidget* parent) : ConfigurationShared::Tab(group_, parent), ui{std::make_unique()}, records{records_}, expose_compute_option{expose_compute_option_}, system{system_}, - translations{translations_}, combobox_translations{combobox_translations_}, + combobox_translations{builder.ComboboxTranslations()}, shader_mapping{combobox_translations.at(typeid(Settings::ShaderBackend))} { vulkan_device = Settings::values.vulkan_device.GetValue(); RetrieveVulkanDevices(); ui->setupUi(this); - Setup(); + Setup(builder); for (const auto& device : vulkan_devices) { vulkan_device_combobox->addItem(device); @@ -218,8 +217,7 @@ ConfigureGraphics::~ConfigureGraphics() = default; void ConfigureGraphics::SetConfiguration() {} -void ConfigureGraphics::Setup() { - const bool runtime_lock = !system.IsPoweredOn(); +void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) { QLayout* api_layout = ui->api_widget->layout(); QWidget* api_grid_widget = new QWidget(this); QVBoxLayout* api_grid_layout = new QVBoxLayout(api_grid_widget); @@ -232,30 +230,26 @@ void ConfigureGraphics::Setup() { std::forward_list hold_api; for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) { - if (!Settings::IsConfiguringGlobal() && !setting->Switchable()) { - continue; - } - ConfigurationShared::Widget* widget = [&]() { // Set managed to false on these and set up the comboboxes ourselves if (setting->Id() == Settings::values.vulkan_device.Id() || setting->Id() == Settings::values.shader_backend.Id() || setting->Id() == Settings::values.vsync_mode.Id()) { - return new ConfigurationShared::Widget( - setting, translations, combobox_translations, this, runtime_lock, apply_funcs, - ConfigurationShared::RequestType::ComboBox, false); + return builder.BuildWidget(setting, apply_funcs, + ConfigurationShared::RequestType::ComboBox, false); } else if (setting->Id() == Settings::values.fsr_sharpening_slider.Id()) { // FSR needs a reversed slider - return new ConfigurationShared::Widget( - setting, translations, combobox_translations, this, runtime_lock, apply_funcs, - ConfigurationShared::RequestType::ReverseSlider, true, 0.5f, nullptr, - tr("%1%", "FSR sharpening percentage (e.g. 50%)")); + return builder.BuildWidget( + setting, apply_funcs, ConfigurationShared::RequestType::ReverseSlider, true, + 0.5f, nullptr, tr("%1%", "FSR sharpening percentage (e.g. 50%)")); } else { - return new ConfigurationShared::Widget(setting, translations, combobox_translations, - this, runtime_lock, apply_funcs); + return builder.BuildWidget(setting, apply_funcs); } }(); + if (widget == nullptr) { + continue; + } if (!widget->Valid()) { delete widget; continue; -- cgit v1.2.3 From 21723879e7631b2d81d3c3ff14f93c834bc1cdd8 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Wed, 21 Jun 2023 03:29:20 -0400 Subject: configuration: Use specialization of settings Reduces some ugliness in frontend code. --- src/yuzu/configuration/configure_graphics.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 18872fa69..74449e6d4 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -231,13 +231,7 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) { for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) { ConfigurationShared::Widget* widget = [&]() { - // Set managed to false on these and set up the comboboxes ourselves - if (setting->Id() == Settings::values.vulkan_device.Id() || - setting->Id() == Settings::values.shader_backend.Id() || - setting->Id() == Settings::values.vsync_mode.Id()) { - return builder.BuildWidget(setting, apply_funcs, - ConfigurationShared::RequestType::ComboBox, false); - } else if (setting->Id() == Settings::values.fsr_sharpening_slider.Id()) { + if (setting->Id() == Settings::values.fsr_sharpening_slider.Id()) { // FSR needs a reversed slider return builder.BuildWidget( setting, apply_funcs, ConfigurationShared::RequestType::ReverseSlider, true, -- cgit v1.2.3 From 926f3e3d3e6ff57633d2d44085f02754ffe1c988 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Wed, 21 Jun 2023 05:04:21 -0400 Subject: settings,configuration: Add a default suffix --- src/yuzu/configuration/configure_graphics.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 74449e6d4..7263af13f 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -232,10 +232,10 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) { for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) { ConfigurationShared::Widget* widget = [&]() { if (setting->Id() == Settings::values.fsr_sharpening_slider.Id()) { - // FSR needs a reversed slider + // FSR needs a reversed slider and a 0.5 multiplier return builder.BuildWidget( setting, apply_funcs, ConfigurationShared::RequestType::ReverseSlider, true, - 0.5f, nullptr, tr("%1%", "FSR sharpening percentage (e.g. 50%)")); + 0.5f, nullptr, tr("%", "FSR sharpening percentage (e.g. 50%)")); } else { return builder.BuildWidget(setting, apply_funcs); } -- cgit v1.2.3 From ca8509d205d20d034c548489d729f65656da611d Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Wed, 21 Jun 2023 21:41:15 -0400 Subject: configuration: Use enum index --- src/yuzu/configuration/configure_graphics.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 7263af13f..31e87ccf5 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -85,7 +85,8 @@ ConfigureGraphics::ConfigureGraphics( : ConfigurationShared::Tab(group_, parent), ui{std::make_unique()}, records{records_}, expose_compute_option{expose_compute_option_}, system{system_}, combobox_translations{builder.ComboboxTranslations()}, - shader_mapping{combobox_translations.at(typeid(Settings::ShaderBackend))} { + shader_mapping{ + combobox_translations.at(Settings::EnumMetadata::Index())} { vulkan_device = Settings::values.vulkan_device.GetValue(); RetrieveVulkanDevices(); @@ -356,7 +357,7 @@ const QString ConfigureGraphics::TranslateVSyncMode(VkPresentModeKHR mode, } } -int ConfigureGraphics::FindIndex(std::type_index enumeration, int value) const { +int ConfigureGraphics::FindIndex(u32 enumeration, int value) const { for (u32 i = 0; i < combobox_translations.at(enumeration).size(); i++) { if (combobox_translations.at(enumeration)[i].first == static_cast(value)) { return i; @@ -383,7 +384,8 @@ void ConfigureGraphics::ApplyConfiguration() { (!Settings::IsConfiguringGlobal() && api_restore_global_button->isEnabled())) { auto backend = static_cast( combobox_translations - .at(typeid(Settings::RendererBackend))[api_combobox->currentIndex()] + .at(Settings::EnumMetadata< + Settings::RendererBackend>::Index())[api_combobox->currentIndex()] .first); switch (backend) { case Settings::RendererBackend::OpenGL: @@ -440,7 +442,8 @@ void ConfigureGraphics::UpdateAPILayout() { if (is_opengl) { shader_backend_combobox->setCurrentIndex( - FindIndex(typeid(Settings::ShaderBackend), static_cast(shader_backend))); + FindIndex(Settings::EnumMetadata::Index(), + static_cast(shader_backend))); } else if (is_vulkan && static_cast(vulkan_device) < vulkan_device_combobox->count()) { vulkan_device_combobox->setCurrentIndex(vulkan_device); } @@ -466,7 +469,7 @@ Settings::RendererBackend ConfigureGraphics::GetCurrentGraphicsBackend() const { return Settings::values.renderer_backend.GetValue(true); } return static_cast( - combobox_translations.at(typeid(Settings::RendererBackend)) + combobox_translations.at(Settings::EnumMetadata::Index()) .at(api_combobox->currentIndex()) .first); } -- cgit v1.2.3 From 17b9c1e1715a16bebcdd92c02ce7f7e503212462 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Fri, 21 Jul 2023 23:09:09 -0400 Subject: common,qt-config: Remove usage of forward_list --- src/yuzu/configuration/configure_graphics.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 31e87ccf5..a6f711597 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -77,11 +77,11 @@ static constexpr Settings::VSyncMode PresentModeToSetting(VkPresentModeKHR mode) } } -ConfigureGraphics::ConfigureGraphics( - const Core::System& system_, std::vector& records_, - const std::function& expose_compute_option_, - std::shared_ptr> group_, - const ConfigurationShared::Builder& builder, QWidget* parent) +ConfigureGraphics::ConfigureGraphics(const Core::System& system_, + std::vector& records_, + const std::function& expose_compute_option_, + std::shared_ptr> group_, + const ConfigurationShared::Builder& builder, QWidget* parent) : ConfigurationShared::Tab(group_, parent), ui{std::make_unique()}, records{records_}, expose_compute_option{expose_compute_option_}, system{system_}, combobox_translations{builder.ComboboxTranslations()}, @@ -228,7 +228,7 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) { QLayout& graphics_layout = *ui->graphics_widget->layout(); std::map hold_graphics; - std::forward_list hold_api; + std::vector hold_api; for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) { ConfigurationShared::Widget* widget = [&]() { @@ -268,12 +268,12 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) { } } else if (setting->Id() == Settings::values.vulkan_device.Id()) { // Keep track of vulkan_device's combobox so we can populate it - hold_api.push_front(widget); + hold_api.push_back(widget); vulkan_device_combobox = widget->combobox; vulkan_device_widget = widget; } else if (setting->Id() == Settings::values.shader_backend.Id()) { // Keep track of shader_backend's combobox so we can populate it - hold_api.push_front(widget); + hold_api.push_back(widget); shader_backend_combobox = widget->combobox; shader_backend_widget = widget; } else if (setting->Id() == Settings::values.vsync_mode.Id()) { @@ -296,7 +296,7 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) { // Background color is too specific to build into the new system, so we manage it here // (3 settings, all collected into a single widget with a QColor to manage on top) if (Settings::IsConfiguringGlobal()) { - apply_funcs.push_front([this](bool powered_on) { + apply_funcs.push_back([this](bool powered_on) { Settings::values.bg_red.SetValue(static_cast(bg_color.red())); Settings::values.bg_green.SetValue(static_cast(bg_color.green())); Settings::values.bg_blue.SetValue(static_cast(bg_color.blue())); @@ -322,7 +322,7 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) { bg_restore_button->setEnabled(true); }); - apply_funcs.push_front([bg_restore_button, this](bool powered_on) { + apply_funcs.push_back([bg_restore_button, this](bool powered_on) { const bool using_global = !bg_restore_button->isEnabled(); Settings::values.bg_red.SetGlobal(using_global); Settings::values.bg_green.SetGlobal(using_global); -- cgit v1.2.3 From 1d4f813c6ab59ffe41ccd9be27786aeab344a1f4 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Fri, 21 Jul 2023 23:25:22 -0400 Subject: qt/configuration: Use deleteLater --- src/yuzu/configuration/configure_graphics.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/yuzu/configuration/configure_graphics.cpp') diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index a6f711597..a94fbc89a 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -246,7 +246,7 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) { continue; } if (!widget->Valid()) { - delete widget; + widget->deleteLater(); continue; } -- cgit v1.2.3