VideoCommon: Add configuration to prefer VS for line/point expansion
This commit is contained in:
parent
1eeba6dcca
commit
0a42c534c3
|
@ -84,6 +84,8 @@ const Info<int> GFX_SHADER_PRECOMPILER_THREADS{
|
||||||
{System::GFX, "Settings", "ShaderPrecompilerThreads"}, -1};
|
{System::GFX, "Settings", "ShaderPrecompilerThreads"}, -1};
|
||||||
const Info<bool> GFX_SAVE_TEXTURE_CACHE_TO_STATE{
|
const Info<bool> GFX_SAVE_TEXTURE_CACHE_TO_STATE{
|
||||||
{System::GFX, "Settings", "SaveTextureCacheToState"}, true};
|
{System::GFX, "Settings", "SaveTextureCacheToState"}, true};
|
||||||
|
const Info<bool> GFX_PREFER_VS_FOR_LINE_POINT_EXPANSION{
|
||||||
|
{System::GFX, "Settings", "PreferVSForLinePointExpansion"}, false};
|
||||||
|
|
||||||
const Info<bool> GFX_SW_DUMP_OBJECTS{{System::GFX, "Settings", "SWDumpObjects"}, false};
|
const Info<bool> GFX_SW_DUMP_OBJECTS{{System::GFX, "Settings", "SWDumpObjects"}, false};
|
||||||
const Info<bool> GFX_SW_DUMP_TEV_STAGES{{System::GFX, "Settings", "SWDumpTevStages"}, false};
|
const Info<bool> GFX_SW_DUMP_TEV_STAGES{{System::GFX, "Settings", "SWDumpTevStages"}, false};
|
||||||
|
|
|
@ -73,6 +73,7 @@ extern const Info<ShaderCompilationMode> GFX_SHADER_COMPILATION_MODE;
|
||||||
extern const Info<int> GFX_SHADER_COMPILER_THREADS;
|
extern const Info<int> GFX_SHADER_COMPILER_THREADS;
|
||||||
extern const Info<int> GFX_SHADER_PRECOMPILER_THREADS;
|
extern const Info<int> GFX_SHADER_PRECOMPILER_THREADS;
|
||||||
extern const Info<bool> GFX_SAVE_TEXTURE_CACHE_TO_STATE;
|
extern const Info<bool> GFX_SAVE_TEXTURE_CACHE_TO_STATE;
|
||||||
|
extern const Info<bool> GFX_PREFER_VS_FOR_LINE_POINT_EXPANSION;
|
||||||
|
|
||||||
extern const Info<bool> GFX_SW_DUMP_OBJECTS;
|
extern const Info<bool> GFX_SW_DUMP_OBJECTS;
|
||||||
extern const Info<bool> GFX_SW_DUMP_TEV_STAGES;
|
extern const Info<bool> GFX_SW_DUMP_TEV_STAGES;
|
||||||
|
|
|
@ -128,15 +128,18 @@ void AdvancedWidget::CreateWidgets()
|
||||||
m_enable_prog_scan = new ToolTipCheckBox(tr("Enable Progressive Scan"));
|
m_enable_prog_scan = new ToolTipCheckBox(tr("Enable Progressive Scan"));
|
||||||
m_backend_multithreading =
|
m_backend_multithreading =
|
||||||
new GraphicsBool(tr("Backend Multithreading"), Config::GFX_BACKEND_MULTITHREADING);
|
new GraphicsBool(tr("Backend Multithreading"), Config::GFX_BACKEND_MULTITHREADING);
|
||||||
|
m_prefer_vs_for_point_line_expansion = new GraphicsBool(
|
||||||
|
tr("Prefer VS for Point/Line Expansion"), Config::GFX_PREFER_VS_FOR_LINE_POINT_EXPANSION);
|
||||||
|
|
||||||
misc_layout->addWidget(m_enable_cropping, 0, 0);
|
misc_layout->addWidget(m_enable_cropping, 0, 0);
|
||||||
misc_layout->addWidget(m_enable_prog_scan, 0, 1);
|
misc_layout->addWidget(m_enable_prog_scan, 0, 1);
|
||||||
misc_layout->addWidget(m_backend_multithreading, 1, 0);
|
misc_layout->addWidget(m_backend_multithreading, 1, 0);
|
||||||
|
misc_layout->addWidget(m_prefer_vs_for_point_line_expansion, 1, 1);
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
m_borderless_fullscreen =
|
m_borderless_fullscreen =
|
||||||
new GraphicsBool(tr("Borderless Fullscreen"), Config::GFX_BORDERLESS_FULLSCREEN);
|
new GraphicsBool(tr("Borderless Fullscreen"), Config::GFX_BORDERLESS_FULLSCREEN);
|
||||||
|
|
||||||
misc_layout->addWidget(m_borderless_fullscreen, 1, 1);
|
misc_layout->addWidget(m_borderless_fullscreen, 2, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Experimental.
|
// Experimental.
|
||||||
|
@ -198,11 +201,19 @@ void AdvancedWidget::SaveSettings()
|
||||||
void AdvancedWidget::OnBackendChanged()
|
void AdvancedWidget::OnBackendChanged()
|
||||||
{
|
{
|
||||||
m_backend_multithreading->setEnabled(g_Config.backend_info.bSupportsMultithreading);
|
m_backend_multithreading->setEnabled(g_Config.backend_info.bSupportsMultithreading);
|
||||||
|
m_prefer_vs_for_point_line_expansion->setEnabled(
|
||||||
|
Core::GetState() == Core::State::Uninitialized &&
|
||||||
|
g_Config.backend_info.bSupportsGeometryShaders &&
|
||||||
|
g_Config.backend_info.bSupportsVSLinePointExpand);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AdvancedWidget::OnEmulationStateChanged(bool running)
|
void AdvancedWidget::OnEmulationStateChanged(bool running)
|
||||||
{
|
{
|
||||||
m_enable_prog_scan->setEnabled(!running);
|
m_enable_prog_scan->setEnabled(!running);
|
||||||
|
m_prefer_vs_for_point_line_expansion->setEnabled(
|
||||||
|
!running &&
|
||||||
|
g_Config.backend_info.bSupportsGeometryShaders &&
|
||||||
|
g_Config.backend_info.bSupportsVSLinePointExpand);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AdvancedWidget::AddDescriptions()
|
void AdvancedWidget::AddDescriptions()
|
||||||
|
@ -289,6 +300,11 @@ void AdvancedWidget::AddDescriptions()
|
||||||
"this option may result in a performance improvement on systems with more than "
|
"this option may result in a performance improvement on systems with more than "
|
||||||
"two CPU cores. Currently, this is limited to the Vulkan backend.<br><br>"
|
"two CPU cores. Currently, this is limited to the Vulkan backend.<br><br>"
|
||||||
"<dolphin_emphasis>If unsure, leave this checked.</dolphin_emphasis>");
|
"<dolphin_emphasis>If unsure, leave this checked.</dolphin_emphasis>");
|
||||||
|
static const char TR_PREFER_VS_FOR_POINT_LINE_EXPANSION_DESCRIPTION[] =
|
||||||
|
QT_TR_NOOP("On backends that support both using the geometry shader and the vertex shader "
|
||||||
|
"for expanding points and lines, selects the vertex shader for the job. May "
|
||||||
|
"affect performance."
|
||||||
|
"<br><br><dolphin_emphasis>If unsure, leave this unchecked.</dolphin_emphasis>");
|
||||||
static const char TR_DEFER_EFB_ACCESS_INVALIDATION_DESCRIPTION[] = QT_TR_NOOP(
|
static const char TR_DEFER_EFB_ACCESS_INVALIDATION_DESCRIPTION[] = QT_TR_NOOP(
|
||||||
"Defers invalidation of the EFB access cache until a GPU synchronization command "
|
"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. "
|
"is executed. If disabled, the cache will be invalidated with every draw call. "
|
||||||
|
@ -337,6 +353,8 @@ void AdvancedWidget::AddDescriptions()
|
||||||
m_enable_cropping->SetDescription(tr(TR_CROPPING_DESCRIPTION));
|
m_enable_cropping->SetDescription(tr(TR_CROPPING_DESCRIPTION));
|
||||||
m_enable_prog_scan->SetDescription(tr(TR_PROGRESSIVE_SCAN_DESCRIPTION));
|
m_enable_prog_scan->SetDescription(tr(TR_PROGRESSIVE_SCAN_DESCRIPTION));
|
||||||
m_backend_multithreading->SetDescription(tr(TR_BACKEND_MULTITHREADING_DESCRIPTION));
|
m_backend_multithreading->SetDescription(tr(TR_BACKEND_MULTITHREADING_DESCRIPTION));
|
||||||
|
m_prefer_vs_for_point_line_expansion->SetDescription(
|
||||||
|
tr(TR_PREFER_VS_FOR_POINT_LINE_EXPANSION_DESCRIPTION));
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
m_borderless_fullscreen->SetDescription(tr(TR_BORDERLESS_FULLSCREEN_DESCRIPTION));
|
m_borderless_fullscreen->SetDescription(tr(TR_BORDERLESS_FULLSCREEN_DESCRIPTION));
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -59,6 +59,7 @@ private:
|
||||||
GraphicsBool* m_enable_cropping;
|
GraphicsBool* m_enable_cropping;
|
||||||
ToolTipCheckBox* m_enable_prog_scan;
|
ToolTipCheckBox* m_enable_prog_scan;
|
||||||
GraphicsBool* m_backend_multithreading;
|
GraphicsBool* m_backend_multithreading;
|
||||||
|
GraphicsBool* m_prefer_vs_for_point_line_expansion;
|
||||||
GraphicsBool* m_borderless_fullscreen;
|
GraphicsBool* m_borderless_fullscreen;
|
||||||
|
|
||||||
// Experimental
|
// Experimental
|
||||||
|
|
|
@ -85,6 +85,7 @@ void VideoConfig::Refresh()
|
||||||
iBitrateKbps = Config::Get(Config::GFX_BITRATE_KBPS);
|
iBitrateKbps = Config::Get(Config::GFX_BITRATE_KBPS);
|
||||||
bInternalResolutionFrameDumps = Config::Get(Config::GFX_INTERNAL_RESOLUTION_FRAME_DUMPS);
|
bInternalResolutionFrameDumps = Config::Get(Config::GFX_INTERNAL_RESOLUTION_FRAME_DUMPS);
|
||||||
bEnableGPUTextureDecoding = Config::Get(Config::GFX_ENABLE_GPU_TEXTURE_DECODING);
|
bEnableGPUTextureDecoding = Config::Get(Config::GFX_ENABLE_GPU_TEXTURE_DECODING);
|
||||||
|
bPreferVSForLinePointExpansion = Config::Get(Config::GFX_PREFER_VS_FOR_LINE_POINT_EXPANSION);
|
||||||
bEnablePixelLighting = Config::Get(Config::GFX_ENABLE_PIXEL_LIGHTING);
|
bEnablePixelLighting = Config::Get(Config::GFX_ENABLE_PIXEL_LIGHTING);
|
||||||
bFastDepthCalc = Config::Get(Config::GFX_FAST_DEPTH_CALC);
|
bFastDepthCalc = Config::Get(Config::GFX_FAST_DEPTH_CALC);
|
||||||
iMultisamples = Config::Get(Config::GFX_MSAA);
|
iMultisamples = Config::Get(Config::GFX_MSAA);
|
||||||
|
|
|
@ -106,6 +106,7 @@ struct VideoConfig final
|
||||||
bool bInternalResolutionFrameDumps = false;
|
bool bInternalResolutionFrameDumps = false;
|
||||||
bool bBorderlessFullscreen = false;
|
bool bBorderlessFullscreen = false;
|
||||||
bool bEnableGPUTextureDecoding = false;
|
bool bEnableGPUTextureDecoding = false;
|
||||||
|
bool bPreferVSForLinePointExpansion = false;
|
||||||
int iBitrateKbps = 0;
|
int iBitrateKbps = 0;
|
||||||
bool bGraphicMods = false;
|
bool bGraphicMods = false;
|
||||||
std::optional<GraphicsModGroupConfig> graphics_mod_config;
|
std::optional<GraphicsModGroupConfig> graphics_mod_config;
|
||||||
|
@ -230,7 +231,9 @@ struct VideoConfig final
|
||||||
{
|
{
|
||||||
if (!backend_info.bSupportsVSLinePointExpand)
|
if (!backend_info.bSupportsVSLinePointExpand)
|
||||||
return false;
|
return false;
|
||||||
return !backend_info.bSupportsGeometryShaders;
|
if (!backend_info.bSupportsGeometryShaders)
|
||||||
|
return true;
|
||||||
|
return bPreferVSForLinePointExpansion;
|
||||||
}
|
}
|
||||||
bool MultisamplingEnabled() const { return iMultisamples > 1; }
|
bool MultisamplingEnabled() const { return iMultisamples > 1; }
|
||||||
bool ExclusiveFullscreenEnabled() const
|
bool ExclusiveFullscreenEnabled() const
|
||||||
|
|
Loading…
Reference in New Issue