[qrhi] Enabled QRhi renderer by default on Qt 6.7+ with OpenGL fallback.
Esse commit está contido em:
@@ -40,6 +40,17 @@ base::options::toggle OptionHighDpiDownscale({
|
||||
.restartRequired = true,
|
||||
});
|
||||
|
||||
base::options::toggle OptionUseOpenGLRenderer({
|
||||
.id = kOptionUseOpenGLRenderer,
|
||||
.name = "Use OpenGL renderer",
|
||||
.description = "Use the legacy OpenGL rendering backend instead of"
|
||||
" the default Metal/Direct3D/Vulkan (QRhi) backend.",
|
||||
.scope = [] {
|
||||
return QLibraryInfo::version() >= QVersionNumber(6, 7);
|
||||
},
|
||||
.restartRequired = true,
|
||||
});
|
||||
|
||||
base::options::toggle OptionFreeType({
|
||||
.id = kOptionFreeType,
|
||||
.name = "FreeType font engine",
|
||||
@@ -309,6 +320,7 @@ base::options::toggle OptionFractionalScalingEnabled({
|
||||
const char kOptionFractionalScalingEnabled[] = "fractional-scaling-enabled";
|
||||
const char kOptionHighDpiDownscale[] = "high-dpi-downscale";
|
||||
const char kOptionFreeType[] = "freetype";
|
||||
const char kOptionUseOpenGLRenderer[] = "use-opengl-renderer";
|
||||
|
||||
Launcher *Launcher::InstanceSetter::Instance = nullptr;
|
||||
|
||||
@@ -365,7 +377,7 @@ void Launcher::initHighDpi() {
|
||||
qputenv("QT_WIDGETS_RHI_BACKEND", "opengl");
|
||||
}
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
|
||||
if (qEnvironmentVariableIsSet("DESKTOP_APP_USE_QRHI")) {
|
||||
if (!OptionUseOpenGLRenderer.value()) {
|
||||
qputenv("QT_WIDGETS_RHI", "1");
|
||||
#ifdef Q_OS_MAC
|
||||
qputenv("QT_WIDGETS_RHI_BACKEND", "metal");
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace Core {
|
||||
extern const char kOptionFractionalScalingEnabled[];
|
||||
extern const char kOptionHighDpiDownscale[];
|
||||
extern const char kOptionFreeType[];
|
||||
extern const char kOptionUseOpenGLRenderer[];
|
||||
|
||||
class Launcher {
|
||||
public:
|
||||
|
||||
@@ -1401,7 +1401,7 @@ QImage Pip::currentVideoFrameImage() const {
|
||||
Ui::GL::ChosenRenderer Pip::chooseRenderer(
|
||||
Ui::GL::Capabilities capabilities) {
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
|
||||
if (qEnvironmentVariableIsSet("DESKTOP_APP_USE_QRHI")) {
|
||||
if (qEnvironmentVariableIsSet("QT_WIDGETS_RHI")) {
|
||||
LOG(("Renderer: [QRhi] (PipPanel)"));
|
||||
_opengl = true;
|
||||
return {
|
||||
@@ -1409,7 +1409,7 @@ Ui::GL::ChosenRenderer Pip::chooseRenderer(
|
||||
.backend = Ui::GL::Backend::QRhi,
|
||||
};
|
||||
}
|
||||
#endif // Qt >= 6.7
|
||||
#endif // Qt >= 6.8
|
||||
const auto use = Platform::IsMac()
|
||||
? true
|
||||
: capabilities.transparency;
|
||||
|
||||
@@ -179,6 +179,7 @@ void SetupExperimental(
|
||||
addToggle(kModerateCommonGroups);
|
||||
addToggle(kForceComposeSearchOneColumn);
|
||||
addToggle(ChatHelpers::kOptionUnlimitedRecentStickers);
|
||||
addToggle(Core::kOptionUseOpenGLRenderer);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
# Compile QRhi shaders (.vert/.frag -> .qsb) at build time.
|
||||
#
|
||||
# Usage: include(cmake/qrhi_shaders.cmake)
|
||||
# Requires: target "Telegram" and function "nice_target_sources" to exist.
|
||||
|
||||
find_program(QSB_EXECUTABLE qsb
|
||||
HINTS "${QT_DIR}/../../../libexec" "${QT_DIR}/../../../bin"
|
||||
PATHS ENV PATH)
|
||||
|
||||
if (QSB_EXECUTABLE)
|
||||
set(_shader_dir "${CMAKE_CURRENT_SOURCE_DIR}/shaders")
|
||||
set(_qsb_out_dir "${CMAKE_CURRENT_BINARY_DIR}/shaders")
|
||||
@@ -36,7 +41,7 @@ if (QSB_EXECUTABLE)
|
||||
shaders.qrc
|
||||
)
|
||||
add_dependencies(Telegram compile_shaders)
|
||||
message(STATUS "QSB: found ${QSB_EXECUTABLE}, will compile ${CMAKE_CURRENT_SOURCE_DIR}/shaders/*.vert/*.frag")
|
||||
message(STATUS "QSB: found ${QSB_EXECUTABLE}, will compile ${_shader_dir}/*.vert/*.frag")
|
||||
else()
|
||||
message(STATUS "QSB: not found, using pre-compiled .qsb files")
|
||||
nice_target_sources(Telegram ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário