Hi, I have an application that renders by binding libva/vdpau surfaces onto GLX pixmaps.Playback works ok for a while, but than the application displays black frames after a few minutes of operation (always reproducible within 1-15 minutes usually). When this happens, gdb backtrace shows that the current call to vdpau_PutSurface (done from the application) never returns. Are there any obvious reasons that would lead to vaPutSurface never returning (e.g. some deadlock in libva/vdpau?) Using vdpau driver on radeon. vainfo libva info: VA-API version 0.38.1 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so libva info: Found init function __vaDriverInit_0_38 libva info: va_openDriver() returns 0 vainfo: VA-API version: 0.38 (libva 1.6.2) vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.5.pre1 (also tried with VDPAU backend for VA-API versions 0.7.4 and 0.7.3) Backtrace of thread waiting in vaPutSurface(): Thread 8 (Thread 0x7fca1f778700 (LWP 3580)): #0 0x00007fca55a3e12d in poll () at ../sysdeps/unix/syscall-template.S:81 #1 0x00007fca5316b262 in poll (__timeout=-1, __nfds=1, __fds=0x7fca1f776a20) at /usr/include/x86_64-linux-gnu/bits/poll2.h:46 #2 _xcb_conn_wait (c=c@entry=0x2885500, cond=cond@entry=0x7fca1f776b40, vector=vector@entry=0x0, count=count@entry=0x0) at xcb_conn.c:459 #3 0x00007fca5316cadf in wait_for_reply (c=c@entry=0x2885500, request=31161, e=e@entry=0x0) at xcb_in.c:491 #4 0x00007fca5316cbf2 in xcb_wait_for_reply (c=0x2885500, request=31161, e=0x0) at xcb_in.c:521 #5 0x00007fca419b8004 in vl_dri2_get_flush_reply (scrn=0x2653600) at ../../../../../src/gallium/auxiliary/vl/vl_winsys_dri.c:110 #6 0x00007fca419b8101 in vl_dri2_destroy_drawable (scrn=0x2653600) at ../../../../../src/gallium/auxiliary/vl/vl_winsys_dri.c:153 #7 0x00007fca419b8185 in vl_dri2_set_drawable (scrn=0x2653600, drawable=71303307) at ../../../../../src/gallium/auxiliary/vl/vl_winsys_dri.c:176 #8 0x00007fca419b82c8 in vl_dri2_screen_texture_from_drawable (vscreen=0x2653600, drawable=0x440008b) at ../../../../../src/gallium/auxiliary/vl/vl_winsys_dri.c:193 #9 0x00007fca419b61ab in vlVdpPresentationQueueDisplay (presentation_queue=<optimized out>, surface=5, clip_width=1280, clip_height=720, earliest_presentation_time=0) at ../../../../../../src/gallium/state_trackers/vdpau/presentation.c:234 #10 0x00007fca423ca6a3 in flip_surface_unlocked (driver_data=driver_data@entry=0x2650c90, obj_output=obj_output@entry=0x291a2b0) at vdpau_video_x11.c:583 #11 0x00007fca423cb2e1 in queue_surface_unlocked (obj_surface=<optimized out>, obj_output=0x291a2b0, driver_data=0x2650c90) at vdpau_video_x11.c:610 #12 put_surface_unlocked (flags=32, target_rect=0x7fca1f776f90, source_rect=0x7fca1f776f80, obj_output=0x291a2b0, obj_surface=0x2919bf0, driver_data=0x2650c90) at vdpau_video_x11.c:689 #13 put_surface (driver_data=driver_data@entry=0x2650c90, surface=surface@entry=50331655, drawable=drawable@entry=71303307, drawable_width=<optimized out>, drawable_height=720, source_rect=source_rect@entry=0x7fca1f776f80, target_rect=target_rect@entry=0x7fca1f776f90, flags=flags@entry=32) at vdpau_video_x11.c:755 #14 0x00007fca423cb59c in vdpau_PutSurface (ctx=<optimized out>, surface=50331655, draw=0x440008b, srcx=<optimized out>, srcy=<optimized out>, srcw=<optimized out>, srch=720, destx=0, desty=0, destw=1280, desth=720, cliprects=0x0, number_cliprects=0, flags=32) at vdpau_video_x11.c:808 #15 0x000000000040eed2 in on_client_draw (glsink=<optimized out>, buf=<optimized out>, data=0x626d40 <video>) at video.c:619 Full backtrace at:http://pastebin.com/RZqmUkMY Using vdpau driver on radeon and: libX11 1.6.2 libxcb 1.11 or 1.10 mesa 11.0
Perhaps it would be good to reproduce this with a small testcase, e.g. a loop of the putsurface libva test. However, the libva/tests/putsurface testcase does not work for me at the moment. E.g. ./putsurface EXECUTE Create window0 for thread0 libva info: VA-API version 0.38.1 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so libva info: Found init function __vaDriverInit_0_38 libva info: va_openDriver() returns 0 upload_surface:vaDeriveImage (240) failed,exit ./putsurface -1 NV12 -2 YV12 EXECUTE -1 NV12 -2 YV12 Create window0 for thread0 libva info: VA-API version 0.38.1 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so libva info: Found init function __vaDriverInit_0_38 libva info: va_openDriver() returns 0 ensure_surface_attribs:vaCreateConfig() (208) failed,exit Are there specific arguments needed for the test to work?
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.