【发布时间】:2022-01-10 11:43:49
【问题描述】:
qml 在 Linux 机器上运行时渲染非常慢(在 Windows 上运行时没有错)。开启 QSG_RENDER_TIMING=1 后,打印输出会在 Qt Quick Scene Graph Events 中的blockedForSync(GUI 线程同步)中显示很长的延迟(每次更改UI 内容):
qt.scenegraph.time.renderer:渲染器中的时间:total=1158ms,preprocess=0,updates=0,binding=0,rendering=1158 qt.scenegraph.time.renderloop:在 1164 毫秒内使用“线程”渲染循环渲染的帧,同步 = 0,渲染 = 1158,交换 = 6 -(在渲染线程上) qt.scenegraph.time.renderloop:帧准备了“线程”渲染循环,polish=0,lock=0,blockedForSync=1158,animations=0 -(在 Gui 线程上)QQuickView(0x9705200 活动暴露, visibility=QWindow::Visibility(Windowed), flags=QFlags<:windowtype>(Window), title="MyApp", geometry=0,0 1024x768)
设置是:
qt.scenegraph.general:线程渲染循环
qt.scenegraph.general:使用sg动画驱动
qt.scenegraph.general:动画驱动程序:使用 vsync:16.67 毫秒
qt.scenegraph.general:纹理图集尺寸:1024x1024
qt.scenegraph.general:R/G/B/A 缓冲区:8 8 8 0
qt.scenegraph.general:深度缓冲区:24
qt.scenegraph.general:模板缓冲区:8
qt.scenegraph.general:样本:0
qt.scenegraph.general: GL_VENDOR: VMware, Inc.
qt.scenegraph.general:GL_RENDERER:软管道上的镓 0.4
qt.scenegraph.general: GL_VERSION: 3.0 Mesa 17.1.5
【问题讨论】:
-
您的虚拟机是否启用了硬件加速图形?
-
它不是虚拟机,它是运行在英特尔芯片上的 Linux。我会检查驱动程序。
-
你使用的是什么版本的 Qt?
-
Qt 版本 5.9.6
-
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
标签: multithreading performance qt qml render