Qt 5.3.2:TI AM335x上的eglfs运行Quick 2.0应用程序后屏幕撕裂

时间:2014-10-28 09:17:58

标签: qt qt5.3

我们在运行Qt5时钟10分钟后屏幕撕裂,例如eglfs。 10分钟前的行为看起来不错,但在此之后,警告信息会一直显示:

Could not wait for vsync.

我们看到了这条消息,因为我们这样做:

export QT_QPA_EGLFS_FORCEVSYNC=1

QSurfaceFormat信息是:

Created context for format QSurfaceFormat(version 2.0, options QFlags(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 1, profile  0) with config:
EGL_BUFFER_SIZE: 16
EGL_ALPHA_SIZE: 0
EGL_BLUE_SIZE: 5
EGL_GREEN_SIZE: 6
EGL_RED_SIZE: 5
EGL_DEPTH_SIZE: 24
EGL_STENCIL_SIZE: 8
EGL_CONFIG_CAVEAT: 12344
EGL_CONFIG_ID: 8
EGL_LEVEL: 0
EGL_MAX_PBUFFER_HEIGHT: 2048
EGL_MAX_PBUFFER_PIXELS: 4194304
EGL_MAX_PBUFFER_WIDTH: 2048
EGL_NATIVE_RENDERABLE: 0
EGL_NATIVE_VISUAL_ID: 0
EGL_NATIVE_VISUAL_TYPE: 0
EGL_SAMPLES: 0
EGL_SAMPLE_BUFFERS: 0
EGL_SURFACE_TYPE: 7
EGL_TRANSPARENT_TYPE: 12344
EGL_TRANSPARENT_BLUE_VALUE: 0
EGL_TRANSPARENT_GREEN_VALUE: 0
EGL_TRANSPARENT_RED_VALUE: 0
EGL_BIND_TO_TEXTURE_RGB: 0
EGL_BIND_TO_TEXTURE_RGBA: 0
EGL_MIN_SWAP_INTERVAL: 1
EGL_MAX_SWAP_INTERVAL: 1

通过检查Qt的源代码,我们知道将QT_QPA_EGLFS_FORCEVSYNC设置为1将让Qt为FBIO_WAITFORVSYNC执行ioctl。 ioctl在运行应用程序后10分钟后返回成功。

是否有人对如何消除撕裂有任何暗示或建议?

1 个答案:

答案 0 :(得分:0)

我误解了"撕裂"的含义。实际上我的情况只是因为this link中提到的帧缓冲控制台消隐。

解决方案是关闭内核bootargs" consoleblank = 0"的消隐。