forked from suyu/suyu
yuzu: Add frontend settings for assembly shaders
Add settings for assembly shaders. Currently hidden to avoid users from accidentally enabled them.
This commit is contained in:
parent
65010607b7
commit
47a7c4f4fe
8 changed files with 29 additions and 0 deletions
|
@ -112,6 +112,7 @@ void LogSettings() {
|
||||||
LogSetting("Renderer_UseAsynchronousGpuEmulation",
|
LogSetting("Renderer_UseAsynchronousGpuEmulation",
|
||||||
Settings::values.use_asynchronous_gpu_emulation);
|
Settings::values.use_asynchronous_gpu_emulation);
|
||||||
LogSetting("Renderer_UseVsync", Settings::values.use_vsync);
|
LogSetting("Renderer_UseVsync", Settings::values.use_vsync);
|
||||||
|
LogSetting("Renderer_UseAssemblyShaders", Settings::values.use_assembly_shaders);
|
||||||
LogSetting("Renderer_AnisotropicFilteringLevel", Settings::values.max_anisotropy);
|
LogSetting("Renderer_AnisotropicFilteringLevel", Settings::values.max_anisotropy);
|
||||||
LogSetting("Audio_OutputEngine", Settings::values.sink_id);
|
LogSetting("Audio_OutputEngine", Settings::values.sink_id);
|
||||||
LogSetting("Audio_EnableAudioStretching", Settings::values.enable_audio_stretching);
|
LogSetting("Audio_EnableAudioStretching", Settings::values.enable_audio_stretching);
|
||||||
|
|
|
@ -446,6 +446,7 @@ struct Values {
|
||||||
GPUAccuracy gpu_accuracy;
|
GPUAccuracy gpu_accuracy;
|
||||||
bool use_asynchronous_gpu_emulation;
|
bool use_asynchronous_gpu_emulation;
|
||||||
bool use_vsync;
|
bool use_vsync;
|
||||||
|
bool use_assembly_shaders;
|
||||||
bool force_30fps_mode;
|
bool force_30fps_mode;
|
||||||
bool use_fast_gpu_time;
|
bool use_fast_gpu_time;
|
||||||
|
|
||||||
|
|
|
@ -201,6 +201,7 @@ void TelemetrySession::AddInitialInfo(Loader::AppLoader& app_loader) {
|
||||||
AddField(field_type, "Renderer_UseAsynchronousGpuEmulation",
|
AddField(field_type, "Renderer_UseAsynchronousGpuEmulation",
|
||||||
Settings::values.use_asynchronous_gpu_emulation);
|
Settings::values.use_asynchronous_gpu_emulation);
|
||||||
AddField(field_type, "Renderer_UseVsync", Settings::values.use_vsync);
|
AddField(field_type, "Renderer_UseVsync", Settings::values.use_vsync);
|
||||||
|
AddField(field_type, "Renderer_UseAssemblyShaders", Settings::values.use_assembly_shaders);
|
||||||
AddField(field_type, "System_UseDockedMode", Settings::values.use_docked_mode);
|
AddField(field_type, "System_UseDockedMode", Settings::values.use_docked_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -643,6 +643,8 @@ void Config::ReadRendererValues() {
|
||||||
Settings::values.use_asynchronous_gpu_emulation =
|
Settings::values.use_asynchronous_gpu_emulation =
|
||||||
ReadSetting(QStringLiteral("use_asynchronous_gpu_emulation"), false).toBool();
|
ReadSetting(QStringLiteral("use_asynchronous_gpu_emulation"), false).toBool();
|
||||||
Settings::values.use_vsync = ReadSetting(QStringLiteral("use_vsync"), true).toBool();
|
Settings::values.use_vsync = ReadSetting(QStringLiteral("use_vsync"), true).toBool();
|
||||||
|
Settings::values.use_assembly_shaders =
|
||||||
|
ReadSetting(QStringLiteral("use_assembly_shaders"), false).toBool();
|
||||||
Settings::values.use_fast_gpu_time =
|
Settings::values.use_fast_gpu_time =
|
||||||
ReadSetting(QStringLiteral("use_fast_gpu_time"), true).toBool();
|
ReadSetting(QStringLiteral("use_fast_gpu_time"), true).toBool();
|
||||||
Settings::values.force_30fps_mode =
|
Settings::values.force_30fps_mode =
|
||||||
|
@ -1090,6 +1092,8 @@ void Config::SaveRendererValues() {
|
||||||
WriteSetting(QStringLiteral("use_asynchronous_gpu_emulation"),
|
WriteSetting(QStringLiteral("use_asynchronous_gpu_emulation"),
|
||||||
Settings::values.use_asynchronous_gpu_emulation, false);
|
Settings::values.use_asynchronous_gpu_emulation, false);
|
||||||
WriteSetting(QStringLiteral("use_vsync"), Settings::values.use_vsync, true);
|
WriteSetting(QStringLiteral("use_vsync"), Settings::values.use_vsync, true);
|
||||||
|
WriteSetting(QStringLiteral("use_assembly_shaders"), Settings::values.use_assembly_shaders,
|
||||||
|
false);
|
||||||
WriteSetting(QStringLiteral("use_fast_gpu_time"), Settings::values.use_fast_gpu_time, true);
|
WriteSetting(QStringLiteral("use_fast_gpu_time"), Settings::values.use_fast_gpu_time, true);
|
||||||
WriteSetting(QStringLiteral("force_30fps_mode"), Settings::values.force_30fps_mode, false);
|
WriteSetting(QStringLiteral("force_30fps_mode"), Settings::values.force_30fps_mode, false);
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,9 @@ ConfigureGraphicsAdvanced::ConfigureGraphicsAdvanced(QWidget* parent)
|
||||||
|
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
// TODO: Remove this after assembly shaders are fully integrated
|
||||||
|
ui->use_assembly_shaders->setVisible(false);
|
||||||
|
|
||||||
SetConfiguration();
|
SetConfiguration();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +25,8 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
|
||||||
ui->gpu_accuracy->setCurrentIndex(static_cast<int>(Settings::values.gpu_accuracy));
|
ui->gpu_accuracy->setCurrentIndex(static_cast<int>(Settings::values.gpu_accuracy));
|
||||||
ui->use_vsync->setEnabled(runtime_lock);
|
ui->use_vsync->setEnabled(runtime_lock);
|
||||||
ui->use_vsync->setChecked(Settings::values.use_vsync);
|
ui->use_vsync->setChecked(Settings::values.use_vsync);
|
||||||
|
ui->use_assembly_shaders->setEnabled(runtime_lock);
|
||||||
|
ui->use_assembly_shaders->setChecked(Settings::values.use_assembly_shaders);
|
||||||
ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time);
|
ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time);
|
||||||
ui->force_30fps_mode->setEnabled(runtime_lock);
|
ui->force_30fps_mode->setEnabled(runtime_lock);
|
||||||
ui->force_30fps_mode->setChecked(Settings::values.force_30fps_mode);
|
ui->force_30fps_mode->setChecked(Settings::values.force_30fps_mode);
|
||||||
|
@ -33,6 +38,7 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() {
|
||||||
auto gpu_accuracy = static_cast<Settings::GPUAccuracy>(ui->gpu_accuracy->currentIndex());
|
auto gpu_accuracy = static_cast<Settings::GPUAccuracy>(ui->gpu_accuracy->currentIndex());
|
||||||
Settings::values.gpu_accuracy = gpu_accuracy;
|
Settings::values.gpu_accuracy = gpu_accuracy;
|
||||||
Settings::values.use_vsync = ui->use_vsync->isChecked();
|
Settings::values.use_vsync = ui->use_vsync->isChecked();
|
||||||
|
Settings::values.use_assembly_shaders = ui->use_assembly_shaders->isChecked();
|
||||||
Settings::values.use_fast_gpu_time = ui->use_fast_gpu_time->isChecked();
|
Settings::values.use_fast_gpu_time = ui->use_fast_gpu_time->isChecked();
|
||||||
Settings::values.force_30fps_mode = ui->force_30fps_mode->isChecked();
|
Settings::values.force_30fps_mode = ui->force_30fps_mode->isChecked();
|
||||||
Settings::values.max_anisotropy = ui->anisotropic_filtering_combobox->currentIndex();
|
Settings::values.max_anisotropy = ui->anisotropic_filtering_combobox->currentIndex();
|
||||||
|
|
|
@ -62,6 +62,16 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="use_assembly_shaders">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Enabling this reduces shader stutter. Enables OpenGL assembly shaders on supported Nvidia devices (NV_gpu_program5 is required). This feature is experimental.</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Use assembly shaders (experimental, Nvidia OpenGL only)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="force_30fps_mode">
|
<widget class="QCheckBox" name="force_30fps_mode">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|
|
@ -397,6 +397,8 @@ void Config::ReadValues() {
|
||||||
sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", false);
|
sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", false);
|
||||||
Settings::values.use_vsync =
|
Settings::values.use_vsync =
|
||||||
static_cast<u16>(sdl2_config->GetInteger("Renderer", "use_vsync", 1));
|
static_cast<u16>(sdl2_config->GetInteger("Renderer", "use_vsync", 1));
|
||||||
|
Settings::values.use_assembly_shaders =
|
||||||
|
sdl2_config->GetBoolean("Renderer", "use_assembly_shaders", false);
|
||||||
Settings::values.use_fast_gpu_time =
|
Settings::values.use_fast_gpu_time =
|
||||||
sdl2_config->GetBoolean("Renderer", "use_fast_gpu_time", true);
|
sdl2_config->GetBoolean("Renderer", "use_fast_gpu_time", true);
|
||||||
|
|
||||||
|
|
|
@ -134,6 +134,10 @@ max_anisotropy =
|
||||||
# 0 (default): Off, 1: On
|
# 0 (default): Off, 1: On
|
||||||
use_vsync =
|
use_vsync =
|
||||||
|
|
||||||
|
# Whether to use OpenGL assembly shaders or not. NV_gpu_program5 is required.
|
||||||
|
# 0 (default): Off, 1: On
|
||||||
|
use_assembly_shaders =
|
||||||
|
|
||||||
# Turns on the frame limiter, which will limit frames output to the target game speed
|
# Turns on the frame limiter, which will limit frames output to the target game speed
|
||||||
# 0: Off, 1: On (default)
|
# 0: Off, 1: On (default)
|
||||||
use_frame_limit =
|
use_frame_limit =
|
||||||
|
|
Loading…
Reference in a new issue