From b3f002f68f0a51fda441ad78434e54ac60567238 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Sun, 5 Sep 2021 23:07:57 +0300 Subject: [PATCH] Add enums for zcull precision control --- rpcs3/Emu/system_config_types.h | 8 ++++++++ rpcs3/rpcs3qt/settings_dialog.cpp | 22 ++++++++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/rpcs3/Emu/system_config_types.h b/rpcs3/Emu/system_config_types.h index 6a8c87f772..32f0717beb 100644 --- a/rpcs3/Emu/system_config_types.h +++ b/rpcs3/Emu/system_config_types.h @@ -216,3 +216,11 @@ enum class perf_graph_detail_level show_one_percent_avg, show_all }; + +enum class zcull_precision_level +{ + precise, + approximate, + relaxed, + undefined +}; diff --git a/rpcs3/rpcs3qt/settings_dialog.cpp b/rpcs3/rpcs3qt/settings_dialog.cpp index 2c8337da52..f40de22c10 100644 --- a/rpcs3/rpcs3qt/settings_dialog.cpp +++ b/rpcs3/rpcs3qt/settings_dialog.cpp @@ -1040,30 +1040,36 @@ settings_dialog::settings_dialog(std::shared_ptr gui_settings, std SubscribeTooltip(ui->gb_vulkansched, tooltips.settings.vulkan_async_scheduler); // Custom control that simplifies operation of two independent variables. Can probably be done better but this works. - ui->zcullPrecisionMode->addItems({tr("Precise (Default)"), tr("Approximate (Fast)"), tr("Relaxed (Fastest)")}); + ui->zcullPrecisionMode->addItem(tr("Precise (Default)"), static_cast(zcull_precision_level::precise)); + ui->zcullPrecisionMode->addItem(tr("Approximate (Fast)"), static_cast(zcull_precision_level::approximate)); + ui->zcullPrecisionMode->addItem(tr("Relaxed (Fastest)"), static_cast(zcull_precision_level::relaxed)); + if (m_emu_settings->GetSetting(emu_settings_type::RelaxedZCULL) == "true") { - ui->zcullPrecisionMode->setCurrentIndex(2); + ui->zcullPrecisionMode->setCurrentIndex( + ui->zcullPrecisionMode->findData(static_cast(zcull_precision_level::relaxed))); } else if (m_emu_settings->GetSetting(emu_settings_type::PreciseZCULL) == "true") { - ui->zcullPrecisionMode->setCurrentIndex(0); + ui->zcullPrecisionMode->setCurrentIndex( + ui->zcullPrecisionMode->findData(static_cast(zcull_precision_level::precise))); } else { - ui->zcullPrecisionMode->setCurrentIndex(1); + ui->zcullPrecisionMode->setCurrentIndex( + ui->zcullPrecisionMode->findData(static_cast(zcull_precision_level::approximate))); } connect(ui->zcullPrecisionMode, QOverload::of(&QComboBox::currentIndexChanged), [this](int index) { bool relaxed = false, precise = false; - switch (index) + switch (static_cast(ui->zcullPrecisionMode->itemData(index).toInt())) { - case 0: + case zcull_precision_level::precise: precise = true; break; - case 1: + case zcull_precision_level::approximate: break; - case 2: + case zcull_precision_level::relaxed: relaxed = true; break; default: fmt::throw_exception("Unexpected selection");