Added experimental toggle to control Qt RHI renderer.

This commit is contained in:
23rd
2026-05-15 17:45:24 +03:00
parent f5ecb1ebc5
commit 231bf4449e
3 changed files with 21 additions and 5 deletions
+19 -5
View File
@@ -304,11 +304,23 @@ base::options::toggle OptionFractionalScalingEnabled({
.restartRequired = true,
});
base::options::toggle OptionUseQtRhi({
.id = kOptionUseQtRhi,
.name = "Use Qt RHI renderer",
.defaultValue = !Platform::IsMac(),
.scope = [] {
return (!Platform::IsWindows() || Platform::IsWindowsARM64())
&& QLibraryInfo::version() >= QVersionNumber(6, 7);
},
.restartRequired = true,
});
} // namespace
const char kOptionFractionalScalingEnabled[] = "fractional-scaling-enabled";
const char kOptionHighDpiDownscale[] = "high-dpi-downscale";
const char kOptionFreeType[] = "freetype";
const char kOptionUseQtRhi[] = "use-qt-rhi";
Launcher *Launcher::InstanceSetter::Instance = nullptr;
@@ -365,15 +377,17 @@ void Launcher::initHighDpi() {
qputenv("QT_WIDGETS_RHI_BACKEND", "opengl");
}
#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
qputenv("QT_WIDGETS_RHI", "1");
if (OptionUseQtRhi.value()) {
qputenv("QT_WIDGETS_RHI", "1");
#ifdef Q_OS_MAC
qputenv("QT_WIDGETS_RHI_BACKEND",
Platform::MetalSupported() ? "metal" : "opengl");
qputenv("QT_WIDGETS_RHI_BACKEND",
Platform::MetalSupported() ? "metal" : "opengl");
#elif defined(Q_OS_WIN)
qputenv("QT_WIDGETS_RHI_BACKEND", "d3d11");
qputenv("QT_WIDGETS_RHI_BACKEND", "d3d11");
#else
qputenv("QT_WIDGETS_RHI_BACKEND", "opengl");
qputenv("QT_WIDGETS_RHI_BACKEND", "opengl");
#endif
}
#endif // Qt >= 6.7
if (OptionFractionalScalingEnabled.value()
+1
View File
@@ -14,6 +14,7 @@ namespace Core {
extern const char kOptionFractionalScalingEnabled[];
extern const char kOptionHighDpiDownscale[];
extern const char kOptionFreeType[];
extern const char kOptionUseQtRhi[];
class Launcher {
public:
@@ -210,6 +210,7 @@ void SetupExperimental(
addToggle(Dialogs::Ui::kOptionDialogsMuteIcon);
addToggle(Core::kOptionFractionalScalingEnabled);
addToggle(Core::kOptionHighDpiDownscale);
addToggle(Core::kOptionUseQtRhi);
addToggle(Window::kOptionViewProfileInChatsListContextMenu);
addToggle(Info::Profile::kOptionShowPeerIdBelowAbout);
addToggle(Info::Profile::kOptionShowChannelJoinedBelowAbout);