我注意到在基于Tegra 3的嵌入式Linux主板上使用Qt 5.4.2对一些QML 2动画进行了撕裂。我怀疑这是否是一个完整的vsync问题,因为大多数动画是平滑的,但有一些动画涉及大量的平行运动和裁剪撕裂一致。这些动画出现了撕裂,而不是简单的口吃,所以我不认为它完全是一个性能问题。虽然它可能是由于系统无法正确同步所需的FPS引起的?完全相同的应用程序在我的Haswell i7 PC上没有这样的麻烦。
我已启用QT_QPA_EGLFS_FORCEVSYNC无效,但尚未设法找到我可以尝试的任何其他内容。我应该提一下,由于Nvidia驱动程序指示使用X11,我正在使用X11后端(http://code.qt.io/cgit/qt/qtbase.git/tree/src/plugins/platforms/eglfs/qeglfshooks_x11.cpp?h=5.4)运行EGLFS。我认为这意味着我无法真正使用EGLFS通常可用的FB相关设置。还有什么我可以尝试解决这个问题吗?
PS。通过将QT_QPA_EGLFS_SWAPINTERVAL设置为0,我可以使撕裂变得更糟。这再次暗示我很可能没有整个系统vsync问题。
PPS。我在应用程序开始时收到“QSGContext :: initialize:stencil buffer support missing,expect expect errors”警告。
答案 0 :(得分:1)
在使用Vivante GC2000的Freescale / NXP imx6上,即使不使用x11,我也会遇到类似的问题。
设置“export QT_QPA_EGLFS_SWAPINTERVAL = 2”似乎可以减少3.14.38内核的撕裂。
在3.14.52内核上没有工作,但“导出FB_MULTI_BUFFER = 3”对于使用imx6的Qt 5.5.1和5.6都有帮助。