[settings, frontend] Reorganize graphics/CPU settings, saner defaults (#3233)

- Fast GPU now defaults to 256, removed 128 since it's useless.
- Completely reorganized graphics and CPU settings on both platforms.
  Also got rid of Eden's Veil
- Merged some "use ..." settings that weren't really necessary.
- Changed ExtendedDynamicState to be a combo box

Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3233
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Reviewed-by: DraVee <dravee@eden-emu.dev>
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
This commit is contained in:
crueter 2025-12-30 18:03:09 +01:00
parent 006f97f207
commit e4cbcec2f1
No known key found for this signature in database
GPG key ID: 425ACD2D4830EBC6
42 changed files with 472 additions and 755 deletions

View file

@ -34,8 +34,18 @@ ConfigureGraphicsAdvanced::~ConfigureGraphicsAdvanced() = default;
void ConfigureGraphicsAdvanced::SetConfiguration() {}
void ConfigureGraphicsAdvanced::Setup(const ConfigurationShared::Builder& builder) {
auto& layout = *ui->populate_target->layout();
std::map<u32, QWidget*> hold{}; // A map will sort the data for us
auto& normal_layout = *ui->normal_target->layout();
auto& hacks_layout = *ui->hacks_target->layout();
// A map will sort the data for us
std::map<u32, QWidget*> normal_hold{};
std::map<u32, QWidget*> hacks_hold{};
// These options are hacks and should probably be changed with caution.
// TODO(crueter) maybe make a separate category RendererHacks?
QList<u32> hacks = {
Settings::values.skip_cpu_inner_invalidation.Id(), Settings::values.async_presentation.Id(),
Settings::values.use_asynchronous_shaders.Id(), Settings::values.fast_gpu_time.Id()};
for (auto setting :
Settings::values.linkage.by_category[Settings::Category::RendererAdvanced]) {
@ -49,15 +59,26 @@ void ConfigureGraphicsAdvanced::Setup(const ConfigurationShared::Builder& builde
continue;
}
hold.emplace(setting->Id(), widget);
const auto id = setting->Id();
if (hacks.contains(id)) {
hacks_hold.emplace(id, widget);
} else {
normal_hold.emplace(id, widget);
}
// Keep track of enable_compute_pipelines so we can display it when needed
if (setting->Id() == Settings::values.enable_compute_pipelines.Id()) {
checkbox_enable_compute_pipelines = widget;
}
}
for (const auto& [id, widget] : hold) {
layout.addWidget(widget);
for (const auto& [id, widget] : normal_hold) {
normal_layout.addWidget(widget);
}
for (const auto& [id, widget] : hacks_hold) {
hacks_layout.addWidget(widget);
}
}

View file

@ -16,42 +16,75 @@
<property name="accessibleName">
<string>Advanced</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_1">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QGroupBox" name="groupBox_1">
<property name="title">
<string>Advanced Graphics Settings</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QWidget" name="populate_target" native="true">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
<widget class="QGroupBox" name="normal">
<property name="title">
<string>Advanced Graphics Settings</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QWidget" name="normal_target" native="true">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="hacks">
<property name="title">
<string>Hacks</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Changing these options from their default may cause issues. Novitii cavete!</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="hacks_target" native="true">
<layout class="QVBoxLayout" name="verticalLayout_7">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>

View file

@ -40,7 +40,7 @@ void ConfigureGraphicsExtensions::Setup(const ConfigurationShared::Builder& buil
for (auto setting :
Settings::values.linkage.by_category[Settings::Category::RendererExtensions]) {
ConfigurationShared::Widget* widget = [&]() {
if (setting->Id() == Settings::values.sample_shading_fraction.Id()) {
if (setting->Id() == Settings::values.sample_shading.Id()) {
// TODO(crueter): should support this natively perhaps?
return builder.BuildWidget(
setting, apply_funcs, ConfigurationShared::RequestType::Slider, true,
@ -60,14 +60,12 @@ void ConfigureGraphicsExtensions::Setup(const ConfigurationShared::Builder& buil
hold.emplace(setting->Id(), widget);
if (setting->Id() == Settings::values.dyna_state.Id()) {
widget->slider->setTickInterval(1);
widget->slider->setTickPosition(QSlider::TicksAbove);
#ifdef __APPLE__
if (setting->Id() == Settings::values.dyna_state.Id()) {
widget->setEnabled(false);
widget->setToolTip(tr("Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens."));
#endif
}
#endif
}
for (const auto& [id, widget] : hold) {