0

We got a screen tearing after 10 mins running Qt5 clocks example by eglfs. The behavior before 10 mins looks good, but after that below warning message keep showing up:

Could not wait for vsync.

We saw this message because we do:

export QT_QPA_EGLFS_FORCEVSYNC=1

The QSurfaceFormat info is:

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

By checking Qt's source code, we know setting QT_QPA_EGLFS_FORCEVSYNC to 1 will let Qt do the ioctl for FBIO_WAITFORVSYNC. The ioctl returns success until 10 mins after running the app.

Does anybody has any hints or suggestion on how to eliminate the tearing?

wthung
  • 167
  • 2
  • 12

1 Answers1

0

I misunderstand the meaning of "tearing". Actually my situation is just because the framebuffer console blanking mentioned in the this link.

The solution is to turn off the blanking by kernel bootargs "consoleblank=0".

wthung
  • 167
  • 2
  • 12