forked from suyu/suyu
settings: Add settings for graphics backend
This commit is contained in:
parent
e651e54b85
commit
788d57d723
6 changed files with 48 additions and 3 deletions
|
@ -371,6 +371,11 @@ enum class SDMCSize : u64 {
|
||||||
S1TB = 0x10000000000ULL,
|
S1TB = 0x10000000000ULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class RendererBackend {
|
||||||
|
OpenGL = 0,
|
||||||
|
Vulkan = 1,
|
||||||
|
};
|
||||||
|
|
||||||
struct Values {
|
struct Values {
|
||||||
// System
|
// System
|
||||||
bool use_docked_mode;
|
bool use_docked_mode;
|
||||||
|
@ -419,6 +424,10 @@ struct Values {
|
||||||
SDMCSize sdmc_size;
|
SDMCSize sdmc_size;
|
||||||
|
|
||||||
// Renderer
|
// Renderer
|
||||||
|
RendererBackend renderer_backend;
|
||||||
|
bool renderer_debug;
|
||||||
|
int vulkan_device;
|
||||||
|
|
||||||
float resolution_factor;
|
float resolution_factor;
|
||||||
bool use_frame_limit;
|
bool use_frame_limit;
|
||||||
u16 frame_limit;
|
u16 frame_limit;
|
||||||
|
|
|
@ -46,6 +46,16 @@ static u64 GenerateTelemetryId() {
|
||||||
return telemetry_id;
|
return telemetry_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char* TranslateRenderer(Settings::RendererBackend backend) {
|
||||||
|
switch (backend) {
|
||||||
|
case Settings::RendererBackend::OpenGL:
|
||||||
|
return "OpenGL";
|
||||||
|
case Settings::RendererBackend::Vulkan:
|
||||||
|
return "Vulkan";
|
||||||
|
}
|
||||||
|
return "Unknown";
|
||||||
|
}
|
||||||
|
|
||||||
u64 GetTelemetryId() {
|
u64 GetTelemetryId() {
|
||||||
u64 telemetry_id{};
|
u64 telemetry_id{};
|
||||||
const std::string filename{FileUtil::GetUserPath(FileUtil::UserPath::ConfigDir) +
|
const std::string filename{FileUtil::GetUserPath(FileUtil::UserPath::ConfigDir) +
|
||||||
|
@ -169,7 +179,7 @@ void TelemetrySession::AddInitialInfo(Loader::AppLoader& app_loader) {
|
||||||
AddField(field_type, "Audio_SinkId", Settings::values.sink_id);
|
AddField(field_type, "Audio_SinkId", Settings::values.sink_id);
|
||||||
AddField(field_type, "Audio_EnableAudioStretching", Settings::values.enable_audio_stretching);
|
AddField(field_type, "Audio_EnableAudioStretching", Settings::values.enable_audio_stretching);
|
||||||
AddField(field_type, "Core_UseMultiCore", Settings::values.use_multi_core);
|
AddField(field_type, "Core_UseMultiCore", Settings::values.use_multi_core);
|
||||||
AddField(field_type, "Renderer_Backend", "OpenGL");
|
AddField(field_type, "Renderer_Backend", TranslateRenderer(Settings::values.renderer_backend));
|
||||||
AddField(field_type, "Renderer_ResolutionFactor", Settings::values.resolution_factor);
|
AddField(field_type, "Renderer_ResolutionFactor", Settings::values.resolution_factor);
|
||||||
AddField(field_type, "Renderer_UseFrameLimit", Settings::values.use_frame_limit);
|
AddField(field_type, "Renderer_UseFrameLimit", Settings::values.use_frame_limit);
|
||||||
AddField(field_type, "Renderer_FrameLimit", Settings::values.frame_limit);
|
AddField(field_type, "Renderer_FrameLimit", Settings::values.frame_limit);
|
||||||
|
|
|
@ -400,8 +400,10 @@ std::vector<const char*> VKDevice::LoadExtensions(const vk::DispatchLoaderDynami
|
||||||
VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME, true);
|
VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME, true);
|
||||||
Test(extension, ext_subgroup_size_control, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME,
|
Test(extension, ext_subgroup_size_control, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME,
|
||||||
false);
|
false);
|
||||||
Test(extension, nv_device_diagnostic_checkpoints,
|
if (Settings::values.renderer_debug) {
|
||||||
VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME, true);
|
Test(extension, nv_device_diagnostic_checkpoints,
|
||||||
|
VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (khr_shader_float16_int8) {
|
if (khr_shader_float16_int8) {
|
||||||
|
|
|
@ -624,6 +624,10 @@ void Config::ReadPathValues() {
|
||||||
void Config::ReadRendererValues() {
|
void Config::ReadRendererValues() {
|
||||||
qt_config->beginGroup(QStringLiteral("Renderer"));
|
qt_config->beginGroup(QStringLiteral("Renderer"));
|
||||||
|
|
||||||
|
Settings::values.renderer_backend =
|
||||||
|
static_cast<Settings::RendererBackend>(ReadSetting(QStringLiteral("backend"), 0).toInt());
|
||||||
|
Settings::values.renderer_debug = ReadSetting(QStringLiteral("debug"), false).toBool();
|
||||||
|
Settings::values.vulkan_device = ReadSetting(QStringLiteral("vulkan_device"), 0).toInt();
|
||||||
Settings::values.resolution_factor =
|
Settings::values.resolution_factor =
|
||||||
ReadSetting(QStringLiteral("resolution_factor"), 1.0).toFloat();
|
ReadSetting(QStringLiteral("resolution_factor"), 1.0).toFloat();
|
||||||
Settings::values.use_frame_limit =
|
Settings::values.use_frame_limit =
|
||||||
|
@ -1056,6 +1060,9 @@ void Config::SavePathValues() {
|
||||||
void Config::SaveRendererValues() {
|
void Config::SaveRendererValues() {
|
||||||
qt_config->beginGroup(QStringLiteral("Renderer"));
|
qt_config->beginGroup(QStringLiteral("Renderer"));
|
||||||
|
|
||||||
|
WriteSetting(QStringLiteral("backend"), static_cast<int>(Settings::values.renderer_backend), 0);
|
||||||
|
WriteSetting(QStringLiteral("debug"), Settings::values.renderer_debug, false);
|
||||||
|
WriteSetting(QStringLiteral("vulkan_device"), Settings::values.vulkan_device, 0);
|
||||||
WriteSetting(QStringLiteral("resolution_factor"),
|
WriteSetting(QStringLiteral("resolution_factor"),
|
||||||
static_cast<double>(Settings::values.resolution_factor), 1.0);
|
static_cast<double>(Settings::values.resolution_factor), 1.0);
|
||||||
WriteSetting(QStringLiteral("use_frame_limit"), Settings::values.use_frame_limit, true);
|
WriteSetting(QStringLiteral("use_frame_limit"), Settings::values.use_frame_limit, true);
|
||||||
|
|
|
@ -371,6 +371,12 @@ void Config::ReadValues() {
|
||||||
Settings::values.use_multi_core = sdl2_config->GetBoolean("Core", "use_multi_core", false);
|
Settings::values.use_multi_core = sdl2_config->GetBoolean("Core", "use_multi_core", false);
|
||||||
|
|
||||||
// Renderer
|
// Renderer
|
||||||
|
const int renderer_backend = sdl2_config->GetInteger(
|
||||||
|
"Renderer", "backend", static_cast<int>(Settings::RendererBackend::OpenGL));
|
||||||
|
Settings::values.renderer_backend = static_cast<Settings::RendererBackend>(renderer_backend);
|
||||||
|
Settings::values.renderer_debug = sdl2_config->GetBoolean("Renderer", "debug", false);
|
||||||
|
Settings::values.vulkan_device = sdl2_config->GetInteger("Renderer", "vulkan_device", 0);
|
||||||
|
|
||||||
Settings::values.resolution_factor =
|
Settings::values.resolution_factor =
|
||||||
static_cast<float>(sdl2_config->GetReal("Renderer", "resolution_factor", 1.0));
|
static_cast<float>(sdl2_config->GetReal("Renderer", "resolution_factor", 1.0));
|
||||||
Settings::values.use_frame_limit = sdl2_config->GetBoolean("Renderer", "use_frame_limit", true);
|
Settings::values.use_frame_limit = sdl2_config->GetBoolean("Renderer", "use_frame_limit", true);
|
||||||
|
|
|
@ -98,6 +98,17 @@ udp_pad_index=
|
||||||
use_multi_core=
|
use_multi_core=
|
||||||
|
|
||||||
[Renderer]
|
[Renderer]
|
||||||
|
# Which backend API to use.
|
||||||
|
# 0 (default): OpenGL, 1: Vulkan
|
||||||
|
backend =
|
||||||
|
|
||||||
|
# Enable graphics API debugging mode.
|
||||||
|
# 0 (default): Disabled, 1: Enabled
|
||||||
|
debug =
|
||||||
|
|
||||||
|
# Which Vulkan physical device to use (defaults to 0)
|
||||||
|
vulkan_device =
|
||||||
|
|
||||||
# Whether to use software or hardware rendering.
|
# Whether to use software or hardware rendering.
|
||||||
# 0: Software, 1 (default): Hardware
|
# 0: Software, 1 (default): Hardware
|
||||||
use_hw_renderer =
|
use_hw_renderer =
|
||||||
|
|
Loading…
Reference in a new issue