2017-06-15 23:43:01 +00:00
|
|
|
// Copyright 2017 Dolphin Emulator Project
|
|
|
|
// Licensed under GPLv2+
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
2018-07-06 22:40:15 +00:00
|
|
|
#include "DolphinQt/Config/Graphics/AdvancedWidget.h"
|
2017-06-15 23:43:01 +00:00
|
|
|
|
|
|
|
#include <QCheckBox>
|
|
|
|
#include <QGridLayout>
|
|
|
|
#include <QGroupBox>
|
2019-07-17 18:15:25 +00:00
|
|
|
#include <QLabel>
|
|
|
|
#include <QSpinBox>
|
2017-06-15 23:43:01 +00:00
|
|
|
#include <QVBoxLayout>
|
|
|
|
|
|
|
|
#include "Core/Config/GraphicsSettings.h"
|
2018-05-04 19:33:24 +00:00
|
|
|
#include "Core/Config/SYSCONFSettings.h"
|
2017-06-15 23:43:01 +00:00
|
|
|
#include "Core/ConfigManager.h"
|
2017-09-04 18:12:13 +00:00
|
|
|
#include "Core/Core.h"
|
2018-05-04 19:33:24 +00:00
|
|
|
|
2018-07-06 22:40:15 +00:00
|
|
|
#include "DolphinQt/Config/Graphics/GraphicsBool.h"
|
|
|
|
#include "DolphinQt/Config/Graphics/GraphicsChoice.h"
|
2019-07-17 18:15:25 +00:00
|
|
|
#include "DolphinQt/Config/Graphics/GraphicsInteger.h"
|
2018-07-06 22:40:15 +00:00
|
|
|
#include "DolphinQt/Config/Graphics/GraphicsWindow.h"
|
|
|
|
#include "DolphinQt/Settings.h"
|
2018-05-28 01:48:04 +00:00
|
|
|
|
2017-06-15 23:43:01 +00:00
|
|
|
#include "VideoCommon/VideoConfig.h"
|
|
|
|
|
|
|
|
AdvancedWidget::AdvancedWidget(GraphicsWindow* parent) : GraphicsWidget(parent)
|
|
|
|
{
|
|
|
|
CreateWidgets();
|
|
|
|
LoadSettings();
|
|
|
|
ConnectWidgets();
|
|
|
|
AddDescriptions();
|
|
|
|
|
|
|
|
connect(parent, &GraphicsWindow::BackendChanged, this, &AdvancedWidget::OnBackendChanged);
|
2017-09-04 18:12:13 +00:00
|
|
|
connect(&Settings::Instance(), &Settings::EmulationStateChanged, this,
|
|
|
|
[=](Core::State state) { OnEmulationStateChanged(state != Core::State::Uninitialized); });
|
2017-06-15 23:43:01 +00:00
|
|
|
|
|
|
|
OnBackendChanged();
|
2018-07-13 10:38:21 +00:00
|
|
|
OnEmulationStateChanged(Core::GetState() != Core::State::Uninitialized);
|
2017-06-15 23:43:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void AdvancedWidget::CreateWidgets()
|
|
|
|
{
|
|
|
|
auto* main_layout = new QVBoxLayout;
|
|
|
|
|
|
|
|
// Debugging
|
|
|
|
auto* debugging_box = new QGroupBox(tr("Debugging"));
|
|
|
|
auto* debugging_layout = new QGridLayout();
|
|
|
|
debugging_box->setLayout(debugging_layout);
|
|
|
|
|
|
|
|
m_enable_wireframe = new GraphicsBool(tr("Enable Wireframe"), Config::GFX_ENABLE_WIREFRAME);
|
|
|
|
m_show_statistics = new GraphicsBool(tr("Show Statistics"), Config::GFX_OVERLAY_STATS);
|
|
|
|
m_enable_format_overlay =
|
|
|
|
new GraphicsBool(tr("Texture Format Overlay"), Config::GFX_TEXFMT_OVERLAY_ENABLE);
|
|
|
|
m_enable_api_validation =
|
|
|
|
new GraphicsBool(tr("Enable API Validation Layers"), Config::GFX_ENABLE_VALIDATION_LAYER);
|
|
|
|
|
|
|
|
debugging_layout->addWidget(m_enable_wireframe, 0, 0);
|
|
|
|
debugging_layout->addWidget(m_show_statistics, 0, 1);
|
|
|
|
debugging_layout->addWidget(m_enable_format_overlay, 1, 0);
|
|
|
|
debugging_layout->addWidget(m_enable_api_validation, 1, 1);
|
|
|
|
|
|
|
|
// Utility
|
|
|
|
auto* utility_box = new QGroupBox(tr("Utility"));
|
|
|
|
auto* utility_layout = new QGridLayout();
|
|
|
|
utility_box->setLayout(utility_layout);
|
|
|
|
|
|
|
|
m_load_custom_textures = new GraphicsBool(tr("Load Custom Textures"), Config::GFX_HIRES_TEXTURES);
|
|
|
|
m_prefetch_custom_textures =
|
|
|
|
new GraphicsBool(tr("Prefetch Custom Textures"), Config::GFX_CACHE_HIRES_TEXTURES);
|
|
|
|
m_dump_efb_target = new GraphicsBool(tr("Dump EFB Target"), Config::GFX_DUMP_EFB_TARGET);
|
2018-05-03 04:24:56 +00:00
|
|
|
m_disable_vram_copies =
|
|
|
|
new GraphicsBool(tr("Disable EFB VRAM Copies"), Config::GFX_HACK_DISABLE_COPY_TO_VRAM);
|
2017-06-15 23:43:01 +00:00
|
|
|
|
2019-06-16 22:04:51 +00:00
|
|
|
utility_layout->addWidget(m_load_custom_textures, 0, 0);
|
|
|
|
utility_layout->addWidget(m_prefetch_custom_textures, 0, 1);
|
|
|
|
|
2020-04-26 21:40:47 +00:00
|
|
|
utility_layout->addWidget(m_disable_vram_copies, 1, 0);
|
2019-06-16 22:04:51 +00:00
|
|
|
|
2020-05-05 04:07:06 +00:00
|
|
|
utility_layout->addWidget(m_dump_efb_target, 1, 1);
|
2020-04-26 21:40:47 +00:00
|
|
|
|
|
|
|
// Freelook
|
|
|
|
auto* freelook_box = new QGroupBox(tr("Free Look"));
|
|
|
|
auto* freelook_layout = new QGridLayout();
|
|
|
|
freelook_box->setLayout(freelook_layout);
|
|
|
|
|
|
|
|
m_enable_freelook = new GraphicsBool(tr("Enable"), Config::GFX_FREE_LOOK);
|
|
|
|
m_freelook_control_type = new GraphicsChoice({tr("Six Axis"), tr("First Person"), tr("Orbital")},
|
|
|
|
Config::GFX_FREE_LOOK_CONTROL_TYPE);
|
|
|
|
|
|
|
|
freelook_layout->addWidget(m_enable_freelook, 0, 0);
|
|
|
|
freelook_layout->addWidget(new QLabel(tr("Control Type:")), 1, 0);
|
|
|
|
freelook_layout->addWidget(m_freelook_control_type, 1, 1);
|
2019-06-16 22:04:51 +00:00
|
|
|
|
2020-05-05 04:07:06 +00:00
|
|
|
// Texture dumping
|
|
|
|
auto* texture_dump_box = new QGroupBox(tr("Texture Dumping"));
|
|
|
|
auto* texture_dump_layout = new QGridLayout();
|
|
|
|
texture_dump_box->setLayout(texture_dump_layout);
|
|
|
|
m_dump_textures = new GraphicsBool(tr("Enable"), Config::GFX_DUMP_TEXTURES);
|
|
|
|
m_dump_base_textures = new GraphicsBool(tr("Dump Base Textures"), Config::GFX_DUMP_BASE_TEXTURES);
|
|
|
|
m_dump_mip_textures = new GraphicsBool(tr("Dump Mip Maps"), Config::GFX_DUMP_MIP_TEXTURES);
|
|
|
|
|
|
|
|
texture_dump_layout->addWidget(m_dump_textures, 0, 0);
|
|
|
|
|
|
|
|
texture_dump_layout->addWidget(m_dump_base_textures, 1, 0);
|
|
|
|
texture_dump_layout->addWidget(m_dump_mip_textures, 1, 1);
|
|
|
|
|
2019-07-17 18:02:08 +00:00
|
|
|
// Frame dumping
|
|
|
|
auto* dump_box = new QGroupBox(tr("Frame Dumping"));
|
|
|
|
auto* dump_layout = new QGridLayout();
|
|
|
|
dump_box->setLayout(dump_layout);
|
|
|
|
|
|
|
|
m_use_fullres_framedumps = new GraphicsBool(tr("Dump at Internal Resolution"),
|
|
|
|
Config::GFX_INTERNAL_RESOLUTION_FRAME_DUMPS);
|
|
|
|
m_dump_use_ffv1 = new GraphicsBool(tr("Use Lossless Codec (FFV1)"), Config::GFX_USE_FFV1);
|
2019-07-17 18:15:25 +00:00
|
|
|
m_dump_bitrate = new GraphicsInteger(0, 1000000, Config::GFX_BITRATE_KBPS, 1000);
|
2019-07-17 18:02:08 +00:00
|
|
|
|
|
|
|
dump_layout->addWidget(m_use_fullres_framedumps, 0, 0);
|
2017-06-15 23:43:01 +00:00
|
|
|
#if defined(HAVE_FFMPEG)
|
2019-07-17 18:02:08 +00:00
|
|
|
dump_layout->addWidget(m_dump_use_ffv1, 0, 1);
|
2019-07-17 18:15:25 +00:00
|
|
|
dump_layout->addWidget(new QLabel(tr("Bitrate (kbps):")), 1, 0);
|
|
|
|
dump_layout->addWidget(m_dump_bitrate, 1, 1);
|
2017-06-15 23:43:01 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
// Misc.
|
2017-07-23 10:58:32 +00:00
|
|
|
auto* misc_box = new QGroupBox(tr("Misc"));
|
2017-06-15 23:43:01 +00:00
|
|
|
auto* misc_layout = new QGridLayout();
|
|
|
|
misc_box->setLayout(misc_layout);
|
|
|
|
|
|
|
|
m_enable_cropping = new GraphicsBool(tr("Crop"), Config::GFX_CROP);
|
2018-05-06 01:16:43 +00:00
|
|
|
m_enable_prog_scan = new QCheckBox(tr("Enable Progressive Scan"));
|
2018-08-03 15:00:04 +00:00
|
|
|
m_backend_multithreading =
|
2019-06-08 18:34:58 +00:00
|
|
|
new GraphicsBool(tr("Backend Multithreading"), Config::GFX_BACKEND_MULTITHREADING);
|
2017-06-15 23:43:01 +00:00
|
|
|
|
|
|
|
misc_layout->addWidget(m_enable_cropping, 0, 0);
|
|
|
|
misc_layout->addWidget(m_enable_prog_scan, 0, 1);
|
2018-08-03 15:00:04 +00:00
|
|
|
misc_layout->addWidget(m_backend_multithreading, 1, 0);
|
2017-06-15 23:43:01 +00:00
|
|
|
#ifdef _WIN32
|
|
|
|
m_borderless_fullscreen =
|
|
|
|
new GraphicsBool(tr("Borderless Fullscreen"), Config::GFX_BORDERLESS_FULLSCREEN);
|
|
|
|
|
2018-08-03 15:00:04 +00:00
|
|
|
misc_layout->addWidget(m_borderless_fullscreen, 1, 1);
|
2017-06-15 23:43:01 +00:00
|
|
|
#endif
|
|
|
|
|
2019-03-09 02:36:32 +00:00
|
|
|
// Experimental.
|
|
|
|
auto* experimental_box = new QGroupBox(tr("Experimental"));
|
|
|
|
auto* experimental_layout = new QGridLayout();
|
|
|
|
experimental_box->setLayout(experimental_layout);
|
|
|
|
|
|
|
|
m_defer_efb_access_invalidation =
|
|
|
|
new GraphicsBool(tr("Defer EFB Cache Invalidation"), Config::GFX_HACK_EFB_DEFER_INVALIDATION);
|
|
|
|
|
|
|
|
experimental_layout->addWidget(m_defer_efb_access_invalidation, 0, 0);
|
|
|
|
|
2017-06-15 23:43:01 +00:00
|
|
|
main_layout->addWidget(debugging_box);
|
|
|
|
main_layout->addWidget(utility_box);
|
2020-04-26 21:40:47 +00:00
|
|
|
main_layout->addWidget(freelook_box);
|
2020-05-05 04:07:06 +00:00
|
|
|
main_layout->addWidget(texture_dump_box);
|
2019-07-17 18:02:08 +00:00
|
|
|
main_layout->addWidget(dump_box);
|
2017-06-15 23:43:01 +00:00
|
|
|
main_layout->addWidget(misc_box);
|
2019-03-09 02:36:32 +00:00
|
|
|
main_layout->addWidget(experimental_box);
|
2017-09-14 16:48:20 +00:00
|
|
|
main_layout->addStretch();
|
2017-06-15 23:43:01 +00:00
|
|
|
|
|
|
|
setLayout(main_layout);
|
|
|
|
}
|
|
|
|
|
|
|
|
void AdvancedWidget::ConnectWidgets()
|
|
|
|
{
|
|
|
|
connect(m_load_custom_textures, &QCheckBox::toggled, this, &AdvancedWidget::SaveSettings);
|
2019-07-17 18:15:25 +00:00
|
|
|
connect(m_dump_use_ffv1, &QCheckBox::toggled, this, &AdvancedWidget::SaveSettings);
|
2018-05-19 18:59:30 +00:00
|
|
|
connect(m_enable_prog_scan, &QCheckBox::toggled, this, &AdvancedWidget::SaveSettings);
|
2020-04-26 21:40:47 +00:00
|
|
|
connect(m_enable_freelook, &QCheckBox::toggled, this, &AdvancedWidget::SaveSettings);
|
2020-05-05 04:07:06 +00:00
|
|
|
connect(m_dump_textures, &QCheckBox::toggled, this, &AdvancedWidget::SaveSettings);
|
2017-06-15 23:43:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void AdvancedWidget::LoadSettings()
|
|
|
|
{
|
|
|
|
m_prefetch_custom_textures->setEnabled(Config::Get(Config::GFX_HIRES_TEXTURES));
|
2019-07-17 18:15:25 +00:00
|
|
|
m_dump_bitrate->setEnabled(!Config::Get(Config::GFX_USE_FFV1));
|
|
|
|
|
2018-05-06 01:16:43 +00:00
|
|
|
m_enable_prog_scan->setChecked(Config::Get(Config::SYSCONF_PROGRESSIVE_SCAN));
|
2020-04-26 21:40:47 +00:00
|
|
|
|
|
|
|
m_freelook_control_type->setEnabled(Config::Get(Config::GFX_FREE_LOOK));
|
2020-05-05 04:07:06 +00:00
|
|
|
m_dump_mip_textures->setEnabled(Config::Get(Config::GFX_DUMP_TEXTURES));
|
|
|
|
m_dump_base_textures->setEnabled(Config::Get(Config::GFX_DUMP_TEXTURES));
|
2017-06-15 23:43:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void AdvancedWidget::SaveSettings()
|
|
|
|
{
|
2019-07-17 18:15:25 +00:00
|
|
|
m_prefetch_custom_textures->setEnabled(Config::Get(Config::GFX_HIRES_TEXTURES));
|
|
|
|
m_dump_bitrate->setEnabled(!Config::Get(Config::GFX_USE_FFV1));
|
2018-05-06 01:16:43 +00:00
|
|
|
|
|
|
|
Config::SetBase(Config::SYSCONF_PROGRESSIVE_SCAN, m_enable_prog_scan->isChecked());
|
2020-04-26 21:40:47 +00:00
|
|
|
|
|
|
|
m_freelook_control_type->setEnabled(Config::Get(Config::GFX_FREE_LOOK));
|
2020-05-05 04:07:06 +00:00
|
|
|
m_dump_mip_textures->setEnabled(Config::Get(Config::GFX_DUMP_TEXTURES));
|
|
|
|
m_dump_base_textures->setEnabled(Config::Get(Config::GFX_DUMP_TEXTURES));
|
2017-06-15 23:43:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void AdvancedWidget::OnBackendChanged()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void AdvancedWidget::OnEmulationStateChanged(bool running)
|
|
|
|
{
|
|
|
|
m_enable_prog_scan->setEnabled(!running);
|
|
|
|
}
|
|
|
|
|
|
|
|
void AdvancedWidget::AddDescriptions()
|
|
|
|
{
|
2018-06-06 13:05:18 +00:00
|
|
|
static const char TR_WIREFRAME_DESCRIPTION[] =
|
2019-01-27 21:59:39 +00:00
|
|
|
QT_TR_NOOP("Renders the scene as a wireframe.\n\nIf unsure, leave this unchecked.");
|
2018-06-06 13:05:18 +00:00
|
|
|
static const char TR_SHOW_STATS_DESCRIPTION[] =
|
2019-01-27 21:59:39 +00:00
|
|
|
QT_TR_NOOP("Shows various rendering statistics.\n\nIf unsure, leave this unchecked.");
|
|
|
|
static const char TR_TEXTURE_FORMAT_DESCRIPTION[] = QT_TR_NOOP(
|
2019-06-08 18:34:58 +00:00
|
|
|
"Modifies textures to show the format they're encoded in.\n\nMay require an emulation "
|
|
|
|
"reset to apply.\n\nIf unsure, leave this unchecked.");
|
2018-06-06 13:05:18 +00:00
|
|
|
static const char TR_VALIDATION_LAYER_DESCRIPTION[] =
|
2017-06-15 23:43:01 +00:00
|
|
|
QT_TR_NOOP("Enables validation of API calls made by the video backend, which may assist in "
|
|
|
|
"debugging graphical issues.\n\nIf unsure, leave this unchecked.");
|
2020-05-05 04:07:06 +00:00
|
|
|
static const char TR_DUMP_TEXTURE_DESCRIPTION[] =
|
|
|
|
QT_TR_NOOP("Dumps decoded game textures based on the other flags to "
|
|
|
|
"User/Dump/Textures/<game_id>/.\n\nIf unsure, leave "
|
|
|
|
"this unchecked.");
|
|
|
|
static const char TR_DUMP_MIP_TEXTURE_DESCRIPTION[] = QT_TR_NOOP(
|
|
|
|
"Whether to dump mipmapped game textures to "
|
|
|
|
"User/Dump/Textures/<game_id>/. This includes arbitrary mipmapped textures if 'Arbitrary "
|
|
|
|
"Mipmap Detection' is enabled in Enhancements.\n\nIf unsure, leave "
|
|
|
|
"this checked.");
|
|
|
|
static const char TR_DUMP_BASE_TEXTURE_DESCRIPTION[] = QT_TR_NOOP(
|
|
|
|
"Whether to dump base game textures to "
|
|
|
|
"User/Dump/Textures/<game_id>/. This includes arbitrary base textures if 'Arbitrary "
|
|
|
|
"Mipmap Detection' is enabled in Enhancements.\n\nIf unsure, leave "
|
|
|
|
"this checked.");
|
2018-06-06 13:05:18 +00:00
|
|
|
static const char TR_LOAD_CUSTOM_TEXTURE_DESCRIPTION[] = QT_TR_NOOP(
|
2019-01-27 21:59:39 +00:00
|
|
|
"Loads custom textures from User/Load/Textures/<game_id>/.\n\nIf unsure, leave this "
|
2017-06-15 23:43:01 +00:00
|
|
|
"unchecked.");
|
2019-06-08 18:34:58 +00:00
|
|
|
static const char TR_CACHE_CUSTOM_TEXTURE_DESCRIPTION[] = QT_TR_NOOP(
|
|
|
|
"Caches custom textures to system RAM on startup.\n\nThis can require exponentially "
|
|
|
|
"more RAM but fixes possible stuttering.\n\nIf unsure, leave this unchecked.");
|
2019-01-27 21:59:39 +00:00
|
|
|
static const char TR_DUMP_EFB_DESCRIPTION[] = QT_TR_NOOP(
|
|
|
|
"Dumps the contents of EFB copies to User/Dump/Textures/.\n\nIf unsure, leave this "
|
|
|
|
"unchecked.");
|
2018-06-06 13:05:18 +00:00
|
|
|
static const char TR_DISABLE_VRAM_COPIES_DESCRIPTION[] =
|
2018-05-03 04:24:56 +00:00
|
|
|
QT_TR_NOOP("Disables the VRAM copy of the EFB, forcing a round-trip to RAM. Inhibits all "
|
|
|
|
"upscaling.\n\nIf unsure, leave this unchecked.");
|
2018-06-06 13:05:18 +00:00
|
|
|
static const char TR_INTERNAL_RESOLUTION_FRAME_DUMPING_DESCRIPTION[] = QT_TR_NOOP(
|
2019-01-27 21:59:39 +00:00
|
|
|
"Creates frame dumps and screenshots at the internal resolution of the renderer, rather than "
|
2019-06-08 18:34:58 +00:00
|
|
|
"the size of the window it is displayed within.\n\nIf the aspect ratio is widescreen, the "
|
2019-01-27 21:59:39 +00:00
|
|
|
"output image will be scaled horizontally to preserve the vertical resolution.\n\nIf "
|
|
|
|
"unsure, leave this unchecked.");
|
2017-06-15 23:43:01 +00:00
|
|
|
#if defined(HAVE_FFMPEG)
|
2018-06-06 13:05:18 +00:00
|
|
|
static const char TR_USE_FFV1_DESCRIPTION[] =
|
2019-01-27 21:59:39 +00:00
|
|
|
QT_TR_NOOP("Encodes frame dumps using the FFV1 codec.\n\nIf unsure, leave this unchecked.");
|
2017-06-15 23:43:01 +00:00
|
|
|
#endif
|
2018-06-06 13:05:18 +00:00
|
|
|
static const char TR_FREE_LOOK_DESCRIPTION[] = QT_TR_NOOP(
|
2019-01-27 21:59:39 +00:00
|
|
|
"Allows manipulation of the in-game camera. Move the mouse while holding the right button "
|
2019-03-09 16:25:41 +00:00
|
|
|
"to pan or middle button to roll.\n\nUse the WASD keys while holding SHIFT to move the "
|
2019-01-27 21:59:39 +00:00
|
|
|
"camera. Press SHIFT+2 to increase speed or SHIFT+1 to decrease speed. Press SHIFT+R "
|
|
|
|
"to reset the camera or SHIFT+F to reset the speed.\n\nIf unsure, leave this unchecked. ");
|
2020-04-26 21:40:47 +00:00
|
|
|
static const char TR_FREE_LOOK_CONTROL_TYPE_DESCRIPTION[] = QT_TR_NOOP(
|
2020-05-20 19:56:04 +00:00
|
|
|
"Changes the in-game camera type during freelook.\n\n"
|
|
|
|
"Six Axis: Offers full camera control on all axes, akin to moving a spacecraft in zero "
|
|
|
|
"gravity. This is the most powerful freelook option but is the most challenging to use.\n"
|
|
|
|
"First Person: Controls the free camera similarly to a first person video game. The camera "
|
|
|
|
"can rotate and travel, but roll is impossible. Easy to use, but limiting.\n"
|
|
|
|
"Orbital: Rotates the free camera around the original camera. Has no lateral movement, only "
|
|
|
|
"rotation and you may zoom up to the camera's origin point.");
|
2018-06-06 13:05:18 +00:00
|
|
|
static const char TR_CROPPING_DESCRIPTION[] =
|
2019-01-27 21:59:39 +00:00
|
|
|
QT_TR_NOOP("Crops the picture from its native aspect ratio to 4:3 or "
|
2017-06-15 23:43:01 +00:00
|
|
|
"16:9.\n\nIf unsure, leave this unchecked.");
|
2018-06-06 13:05:18 +00:00
|
|
|
static const char TR_PROGRESSIVE_SCAN_DESCRIPTION[] = QT_TR_NOOP(
|
2019-01-27 21:59:39 +00:00
|
|
|
"Enables progressive scan if supported by the emulated software. Most games don't have "
|
|
|
|
"any issue with this.\n\nIf unsure, leave this unchecked.");
|
2018-08-03 15:00:04 +00:00
|
|
|
static const char TR_BACKEND_MULTITHREADING_DESCRIPTION[] =
|
2019-06-08 18:34:58 +00:00
|
|
|
QT_TR_NOOP("Enables multithreaded command submission in backends where supported. Enabling "
|
2018-08-03 15:00:04 +00:00
|
|
|
"this option may result in a performance improvement on systems with more than "
|
|
|
|
"two CPU cores. Currently, this is limited to the Vulkan backend.\n\nIf unsure, "
|
|
|
|
"leave this checked.");
|
2019-06-08 18:34:58 +00:00
|
|
|
static const char TR_DEFER_EFB_ACCESS_INVALIDATION_DESCRIPTION[] = QT_TR_NOOP(
|
|
|
|
"Defers invalidation of the EFB access cache until a GPU synchronization command "
|
|
|
|
"is executed. If disabled, the cache will be invalidated with every draw call. "
|
|
|
|
"\n\nMay improve performance in some games which rely on CPU EFB Access at the cost "
|
|
|
|
"of stability.\n\nIf unsure, leave this unchecked.");
|
2019-03-09 02:36:32 +00:00
|
|
|
|
2017-06-15 23:43:01 +00:00
|
|
|
#ifdef _WIN32
|
2018-06-06 13:05:18 +00:00
|
|
|
static const char TR_BORDERLESS_FULLSCREEN_DESCRIPTION[] = QT_TR_NOOP(
|
2019-01-27 21:59:39 +00:00
|
|
|
"Implements fullscreen mode with a borderless window spanning the whole screen instead of "
|
|
|
|
"using exclusive mode. Allows for faster transitions between fullscreen and windowed mode, "
|
|
|
|
"but slightly increases input latency, makes movement less smooth and slightly decreases "
|
2019-10-02 01:07:17 +00:00
|
|
|
"performance.\n\nIf unsure, leave this unchecked.");
|
2017-06-15 23:43:01 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
AddDescription(m_enable_wireframe, TR_WIREFRAME_DESCRIPTION);
|
|
|
|
AddDescription(m_show_statistics, TR_SHOW_STATS_DESCRIPTION);
|
2019-01-27 21:59:39 +00:00
|
|
|
AddDescription(m_enable_format_overlay, TR_TEXTURE_FORMAT_DESCRIPTION);
|
2017-06-15 23:43:01 +00:00
|
|
|
AddDescription(m_enable_api_validation, TR_VALIDATION_LAYER_DESCRIPTION);
|
|
|
|
AddDescription(m_dump_textures, TR_DUMP_TEXTURE_DESCRIPTION);
|
2020-05-05 04:07:06 +00:00
|
|
|
AddDescription(m_dump_mip_textures, TR_DUMP_MIP_TEXTURE_DESCRIPTION);
|
|
|
|
AddDescription(m_dump_base_textures, TR_DUMP_BASE_TEXTURE_DESCRIPTION);
|
2017-06-15 23:43:01 +00:00
|
|
|
AddDescription(m_load_custom_textures, TR_LOAD_CUSTOM_TEXTURE_DESCRIPTION);
|
|
|
|
AddDescription(m_prefetch_custom_textures, TR_CACHE_CUSTOM_TEXTURE_DESCRIPTION);
|
|
|
|
AddDescription(m_dump_efb_target, TR_DUMP_EFB_DESCRIPTION);
|
2018-05-03 04:24:56 +00:00
|
|
|
AddDescription(m_disable_vram_copies, TR_DISABLE_VRAM_COPIES_DESCRIPTION);
|
2017-06-15 23:43:01 +00:00
|
|
|
AddDescription(m_use_fullres_framedumps, TR_INTERNAL_RESOLUTION_FRAME_DUMPING_DESCRIPTION);
|
|
|
|
#ifdef HAVE_FFMPEG
|
|
|
|
AddDescription(m_dump_use_ffv1, TR_USE_FFV1_DESCRIPTION);
|
|
|
|
#endif
|
|
|
|
AddDescription(m_enable_cropping, TR_CROPPING_DESCRIPTION);
|
|
|
|
AddDescription(m_enable_prog_scan, TR_PROGRESSIVE_SCAN_DESCRIPTION);
|
|
|
|
AddDescription(m_enable_freelook, TR_FREE_LOOK_DESCRIPTION);
|
2020-04-26 21:40:47 +00:00
|
|
|
AddDescription(m_freelook_control_type, TR_FREE_LOOK_CONTROL_TYPE_DESCRIPTION);
|
2018-08-03 15:00:04 +00:00
|
|
|
AddDescription(m_backend_multithreading, TR_BACKEND_MULTITHREADING_DESCRIPTION);
|
2017-06-15 23:43:01 +00:00
|
|
|
#ifdef _WIN32
|
|
|
|
AddDescription(m_borderless_fullscreen, TR_BORDERLESS_FULLSCREEN_DESCRIPTION);
|
|
|
|
#endif
|
2019-03-09 02:36:32 +00:00
|
|
|
AddDescription(m_defer_efb_access_invalidation, TR_DEFER_EFB_ACCESS_INVALIDATION_DESCRIPTION);
|
2017-06-15 23:43:01 +00:00
|
|
|
}
|