Compare commits

...

1 Commits

Author SHA1 Message Date
Morph
ae56625fda Log anisotropic filtering and gpu accuracy as readable strings
Log them as readable strings instead of their respective combobox indices.

- Move Anisotropy enum to settings.h
- nit Extreme(very slow) -> Extreme (very slow) in gpu accuracy combobox
2020-05-09 14:48:53 -04:00
9 changed files with 65 additions and 28 deletions

View File

@@ -92,11 +92,12 @@ void LogSettings() {
LogSetting("Renderer_UseFrameLimit", Settings::values.use_frame_limit);
LogSetting("Renderer_FrameLimit", Settings::values.frame_limit);
LogSetting("Renderer_UseDiskShaderCache", Settings::values.use_disk_shader_cache);
LogSetting("Renderer_GPUAccuracyLevel", Settings::values.gpu_accuracy);
LogSetting("Renderer_GPUAccuracyLevel", GPUAccuracyLevelToChar(Settings::values.gpu_accuracy));
LogSetting("Renderer_UseAsynchronousGpuEmulation",
Settings::values.use_asynchronous_gpu_emulation);
LogSetting("Renderer_UseVsync", Settings::values.use_vsync);
LogSetting("Renderer_AnisotropicFilteringLevel", Settings::values.max_anisotropy);
LogSetting("Renderer_AnisotropicFilteringLevel",
AnisotropicFilteringLevelToChar(Settings::values.max_anisotropy));
LogSetting("Audio_OutputEngine", Settings::values.sink_id);
LogSetting("Audio_EnableAudioStretching", Settings::values.enable_audio_stretching);
LogSetting("Audio_OutputDevice", Settings::values.audio_device_id);
@@ -110,6 +111,33 @@ void LogSettings() {
LogSetting("Services_BCATBoxcatLocal", Settings::values.bcat_boxcat_local);
}
const char* GPUAccuracyLevelToChar(GPUAccuracy gpu_accuracy) {
switch (gpu_accuracy) {
case GPUAccuracy::Normal:
return "Normal";
case GPUAccuracy::High:
return "High";
case GPUAccuracy::Extreme:
return "Extreme";
}
return "Unknown";
}
const char* AnisotropicFilteringLevelToChar(Anisotropy anisotropy) {
switch (anisotropy) {
case Anisotropy::Default:
return "Default";
case Anisotropy::Filter2x:
return "2x";
case Anisotropy::Filter4x:
return "4x";
case Anisotropy::Filter8x:
return "8x";
case Anisotropy::Filter16x:
return "16x";
}
}
bool IsGPULevelExtreme() {
return values.gpu_accuracy == GPUAccuracy::Extreme;
}

View File

@@ -382,6 +382,14 @@ enum class GPUAccuracy : u32 {
Extreme = 2,
};
enum class Anisotropy {
Default = 0,
Filter2x = 1,
Filter4x = 2,
Filter8x = 3,
Filter16x = 4,
};
struct Values {
// System
bool use_docked_mode;
@@ -438,7 +446,7 @@ struct Values {
float resolution_factor;
int aspect_ratio;
int max_anisotropy;
Anisotropy max_anisotropy;
bool use_frame_limit;
u16 frame_limit;
bool use_disk_shader_cache;
@@ -487,6 +495,10 @@ struct Values {
std::map<u64, std::vector<std::string>> disabled_addons;
} extern values;
const char* GPUAccuracyLevelToChar(GPUAccuracy gpu_accuracy);
const char* AnisotropicFilteringLevelToChar(Anisotropy anisotropy);
bool IsGPULevelExtreme();
bool IsGPULevelHigh();

View File

@@ -48,17 +48,17 @@ constexpr std::array<float, 256> SRGB_CONVERSION_LUT = {
};
unsigned SettingsMinimumAnisotropy() noexcept {
switch (static_cast<Anisotropy>(Settings::values.max_anisotropy)) {
switch (Settings::values.max_anisotropy) {
default:
case Anisotropy::Default:
case Settings::Anisotropy::Default:
return 1U;
case Anisotropy::Filter2x:
case Settings::Anisotropy::Filter2x:
return 2U;
case Anisotropy::Filter4x:
case Settings::Anisotropy::Filter4x:
return 4U;
case Anisotropy::Filter8x:
case Settings::Anisotropy::Filter8x:
return 8U;
case Anisotropy::Filter16x:
case Settings::Anisotropy::Filter16x:
return 16U;
}
}

View File

@@ -309,14 +309,6 @@ enum class TextureMipmapFilter : u32 {
Linear = 3,
};
enum class Anisotropy {
Default,
Filter2x,
Filter4x,
Filter8x,
Filter16x,
};
struct TSCEntry {
union {
struct {

View File

@@ -632,7 +632,8 @@ void Config::ReadRendererValues() {
Settings::values.resolution_factor =
ReadSetting(QStringLiteral("resolution_factor"), 1.0).toFloat();
Settings::values.aspect_ratio = ReadSetting(QStringLiteral("aspect_ratio"), 0).toInt();
Settings::values.max_anisotropy = ReadSetting(QStringLiteral("max_anisotropy"), 0).toInt();
const int max_anisotropy = ReadSetting(QStringLiteral("max_anisotropy"), 0).toInt();
Settings::values.max_anisotropy = static_cast<Settings::Anisotropy>(max_anisotropy);
Settings::values.use_frame_limit =
ReadSetting(QStringLiteral("use_frame_limit"), true).toBool();
Settings::values.frame_limit = ReadSetting(QStringLiteral("frame_limit"), 100).toInt();
@@ -1078,7 +1079,8 @@ void Config::SaveRendererValues() {
WriteSetting(QStringLiteral("resolution_factor"),
static_cast<double>(Settings::values.resolution_factor), 1.0);
WriteSetting(QStringLiteral("aspect_ratio"), Settings::values.aspect_ratio, 0);
WriteSetting(QStringLiteral("max_anisotropy"), Settings::values.max_anisotropy, 0);
WriteSetting(QStringLiteral("max_anisotropy"),
static_cast<int>(Settings::values.max_anisotropy), 0);
WriteSetting(QStringLiteral("use_frame_limit"), Settings::values.use_frame_limit, true);
WriteSetting(QStringLiteral("frame_limit"), Settings::values.frame_limit, 100);
WriteSetting(QStringLiteral("use_disk_shader_cache"), Settings::values.use_disk_shader_cache,

View File

@@ -25,17 +25,18 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time);
ui->force_30fps_mode->setEnabled(runtime_lock);
ui->force_30fps_mode->setChecked(Settings::values.force_30fps_mode);
ui->anisotropic_filtering_combobox->setEnabled(runtime_lock);
ui->anisotropic_filtering_combobox->setCurrentIndex(Settings::values.max_anisotropy);
ui->anisotropic_filtering->setEnabled(runtime_lock);
ui->anisotropic_filtering->setCurrentIndex(static_cast<int>(Settings::values.max_anisotropy));
}
void ConfigureGraphicsAdvanced::ApplyConfiguration() {
auto gpu_accuracy = static_cast<Settings::GPUAccuracy>(ui->gpu_accuracy->currentIndex());
Settings::values.gpu_accuracy = gpu_accuracy;
Settings::values.gpu_accuracy =
static_cast<Settings::GPUAccuracy>(ui->gpu_accuracy->currentIndex());
Settings::values.use_vsync = ui->use_vsync->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.max_anisotropy = ui->anisotropic_filtering_combobox->currentIndex();
Settings::values.max_anisotropy =
static_cast<Settings::Anisotropy>(ui->anisotropic_filtering->currentIndex());
}
void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) {

View File

@@ -45,7 +45,7 @@
</item>
<item>
<property name="text">
<string notr="true">Extreme(very slow)</string>
<string notr="true">Extreme (very slow)</string>
</property>
</item>
</widget>
@@ -86,7 +86,7 @@
</widget>
</item>
<item>
<widget class="QComboBox" name="anisotropic_filtering_combobox">
<widget class="QComboBox" name="anisotropic_filtering">
<item>
<property name="text">
<string>Default</string>

View File

@@ -381,8 +381,9 @@ void Config::ReadValues() {
static_cast<float>(sdl2_config->GetReal("Renderer", "resolution_factor", 1.0));
Settings::values.aspect_ratio =
static_cast<int>(sdl2_config->GetInteger("Renderer", "aspect_ratio", 0));
Settings::values.max_anisotropy =
const int max_anisotropy =
static_cast<int>(sdl2_config->GetInteger("Renderer", "max_anisotropy", 0));
Settings::values.max_anisotropy = static_cast<Settings::Anisotropy>(max_anisotropy);
Settings::values.use_frame_limit = sdl2_config->GetBoolean("Renderer", "use_frame_limit", true);
Settings::values.frame_limit =
static_cast<u16>(sdl2_config->GetInteger("Renderer", "frame_limit", 100));

View File

@@ -120,8 +120,9 @@ void Config::ReadValues() {
static_cast<float>(sdl2_config->GetReal("Renderer", "resolution_factor", 1.0));
Settings::values.aspect_ratio =
static_cast<int>(sdl2_config->GetInteger("Renderer", "aspect_ratio", 0));
Settings::values.max_anisotropy =
const int max_anisotropy =
static_cast<int>(sdl2_config->GetInteger("Renderer", "max_anisotropy", 0));
Settings::values.max_anisotropy = static_cast<Settings::Anisotropy>(max_anisotropy);
Settings::values.use_frame_limit = false;
Settings::values.frame_limit = 100;
Settings::values.use_disk_shader_cache =