Diagonal VSYNC tearing line seen on NXP IMX8MM device (Vivante EGL)
Our use case is to display RTSP video stream with qmlglsink
. We've noticed that on some IMX8MM tablet there's diagonal VSYNC tearing line that we do not see in Debian Linux desktops with Intel graphics. I've discovered while using 1.22.1, but issue persist with latest 1.22.5 too.
I can reproduce this with glimagesink
outside of Qt application with this pipeline:
./gst-launch-1.0 rtspsrc "location=rtsp:..." protocols=tcp latency=200 drop-on-latency=true buffer-mode=slave ! queue max-size-buffers=0 ! rtph264depay ! queue max-size-buffers=0 ! h264parse ! queue max-size-buffers=0 ! imxvpudec_h264 ! queue max-size-buffers=0 ! glimagesink
And I see tearing lines in different places (tear is "moving"):
I can see these diagonal lines with videotestsrc
too, while avoiding HW decoding & rtsp & stuff:
./gst-launch-1.0 -v videotestsrc pattern=blink ! video/x-raw,width=1280,height=720 ! glimagesink
If I use fbdevsink
instead, I do see horizontal (not diagonal as before) VSYNC tear like this:
./gst-launch-1.0 -v videotestsrc pattern=blink ! video/x-raw,width=1280,height=720 ! fbdevsink
glimagesink
uses gldisplayvivfb0
:
0:00:00.135351738 24859 0xaaaafa99f270 INFO glcontext gstglcontext.c:348:gst_gl_context_new: creating a context for display <gldisplayvivfb0>, user choice:(null)
0:00:00.135668352 24859 0xaaaafa99f270 INFO glwindow gstglwindow.c:295:gst_gl_window_new: creating a window, user choice:(null)
0:00:00.136573447 24859 0xaaaafa952180 INFO glcontext gstglcontext.c:1319:gst_gl_context_create_thread:<glcontextegl0> Attempting to create opengl context. user chosen api(s) (any), compiled api support (gles2) d
isplay api (opengl opengl3 gles2)
0:00:00.145544523 24859 0xaaaafa952180 INFO glcontext gstglcontext_egl.c:901:gst_gl_context_egl_create_context: egl initialized, version: 1.5
0:00:00.146080005 24859 0xaaaafa952180 INFO glcontext gstglcontext_egl.c:1016:gst_gl_context_egl_create_context: Bound OpenGL|ES
0:00:00.146212876 24859 0xaaaafa952180 INFO glcontext gstglcontext_egl.c:744:gst_gl_context_egl_choose_config: config set: 33, 1
0:00:00.150108371 24859 0xaaaafa952180 INFO glcontext gstglcontext_egl.c:1056:gst_gl_context_egl_create_context: gl context created: 281473366367152
0:00:00.151999183 24859 0xaaaafa952180 INFO glcontext gstglcontext_egl.c:1154:gst_gl_context_egl_create_context: surface created
0:00:00.152109429 24859 0xaaaafa952180 INFO glcontext gstglcontext.c:1333:gst_gl_context_create_thread:<glcontextegl0> created context
0:00:00.153559006 24859 0xaaaafa952180 INFO glcontext gstglcontext.c:1349:gst_gl_context_create_thread:<glcontextegl0> available GL APIs: gles2
0:00:00.153946368 24859 0xaaaafa952180 INFO glcontext gstglcontext.c:1112:_create_context_info:<glcontextegl0> GL_VERSION: OpenGL ES 2.0 V6.4.3.p2.336687
0:00:00.153981992 24859 0xaaaafa952180 INFO glcontext gstglcontext.c:1114:_create_context_info:<glcontextegl0> GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 1.0.0
0:00:00.154003491 24859 0xaaaafa952180 INFO glcontext gstglcontext.c:1117:_create_context_info:<glcontextegl0> GL_VENDOR: Vivante Corporation
0:00:00.154022615 24859 0xaaaafa952180 INFO glcontext gstglcontext.c:1119:_create_context_info:<glcontextegl0> GL_RENDERER: Vivante GC7000NanoUltra
0:00:00.154537348 24859 0xaaaafa952180 INFO glcontext gstgldebug.c:338:_gst_gl_debug_enable:<glcontextegl0> No debugging support available
0:00:00.154568347 24859 0xaaaafa952180 INFO glcontext gstglcontext.c:1172:_unlock_create_thread:<glcontextegl0> gl thread running
0:00:00.154618971 24859 0xaaaafa99f270 INFO glcontext gstglcontext.c:1079:gst_gl_context_create:<glcontextegl0> gl thread created