diff --git a/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp b/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp index dfd809f956..9c392e02ce 100644 --- a/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp +++ b/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp @@ -205,6 +205,7 @@ void AdvancedWidget::OnBackendChanged() Core::GetState() == Core::State::Uninitialized && g_Config.backend_info.bSupportsGeometryShaders && g_Config.backend_info.bSupportsVSLinePointExpand); + AddDescriptions(); } void AdvancedWidget::OnEmulationStateChanged(bool running) @@ -304,7 +305,7 @@ void AdvancedWidget::AddDescriptions() 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." - "

If unsure, leave this unchecked."); + "

%1"); 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. " @@ -332,6 +333,9 @@ void AdvancedWidget::AddDescriptions() "unchecked."); #endif + static const char IF_UNSURE_UNCHECKED[] = + QT_TR_NOOP("If unsure, leave this unchecked."); + m_enable_wireframe->SetDescription(tr(TR_WIREFRAME_DESCRIPTION)); m_show_statistics->SetDescription(tr(TR_SHOW_STATS_DESCRIPTION)); m_enable_format_overlay->SetDescription(tr(TR_TEXTURE_FORMAT_DESCRIPTION)); @@ -353,8 +357,17 @@ void AdvancedWidget::AddDescriptions() m_enable_cropping->SetDescription(tr(TR_CROPPING_DESCRIPTION)); m_enable_prog_scan->SetDescription(tr(TR_PROGRESSIVE_SCAN_DESCRIPTION)); m_backend_multithreading->SetDescription(tr(TR_BACKEND_MULTITHREADING_DESCRIPTION)); + QString vsexpand_extra; + if (!g_Config.backend_info.bSupportsGeometryShaders) + vsexpand_extra = tr("Forced on because %1 doesn't support geometry shaders.") + .arg(tr(g_Config.backend_info.DisplayName.c_str())); + else if (!g_Config.backend_info.bSupportsVSLinePointExpand) + vsexpand_extra = tr("Forced off because %1 doesn't support VS expansion.") + .arg(tr(g_Config.backend_info.DisplayName.c_str())); + else + vsexpand_extra = tr(IF_UNSURE_UNCHECKED); m_prefer_vs_for_point_line_expansion->SetDescription( - tr(TR_PREFER_VS_FOR_POINT_LINE_EXPANSION_DESCRIPTION)); + tr(TR_PREFER_VS_FOR_POINT_LINE_EXPANSION_DESCRIPTION).arg(vsexpand_extra)); #ifdef _WIN32 m_borderless_fullscreen->SetDescription(tr(TR_BORDERLESS_FULLSCREEN_DESCRIPTION)); #endif diff --git a/Source/Core/VideoCommon/VideoBackendBase.cpp b/Source/Core/VideoCommon/VideoBackendBase.cpp index b385883093..2b4883d22b 100644 --- a/Source/Core/VideoCommon/VideoBackendBase.cpp +++ b/Source/Core/VideoCommon/VideoBackendBase.cpp @@ -274,6 +274,7 @@ void VideoBackendBase::PopulateBackendInfo() // a value from the previously used renderer g_Config.backend_info = {}; ActivateBackend(Config::Get(Config::MAIN_GFX_BACKEND)); + g_Config.backend_info.DisplayName = g_video_backend->GetDisplayName(); g_video_backend->InitBackendInfo(); // We validate the config after initializing the backend info, as system-specific settings // such as anti-aliasing, or the selected adapter may be invalid, and should be checked. diff --git a/Source/Core/VideoCommon/VideoConfig.h b/Source/Core/VideoCommon/VideoConfig.h index 471ff5a18f..d0863a9d84 100644 --- a/Source/Core/VideoCommon/VideoConfig.h +++ b/Source/Core/VideoCommon/VideoConfig.h @@ -174,6 +174,7 @@ struct VideoConfig final struct { APIType api_type = APIType::Nothing; + std::string DisplayName; std::vector Adapters; // for D3D std::vector AAModes;