[Libva] concurrent VASurface updates

Dong Hoon Van Uytsel dh.vanuytsel at gmail.com
Mon Feb 11 09:27:45 PST 2013


Hello,

I am attempting to get optimal rendering frame rate on the following set up:

ATI HD 6250 chipset 0x9804
fglrx 9.1.11 (Catalyst 13.1)
xvba-driver 0.8.0
libva-x11, libva 1.0.15
Xorg 1.12.4

I can do 1080p30 now, but I believe 1080p50 should be possible, given that two players can run simultaneously at 1080p25. The call vaPutSurface() appears to be blocking, and that may impose a limit on the frame rate. Therefore, I tried to spawn a worker thread per surface (using two surfaces) sharing the same VAContextID, and cooperating in a way that one thread can already start vaRenderSurface(), while the other is still busy with vaPutSurface().

Does this sound like a valid strategy?

However, my current implementation causes the assertion in xvba_decode.c:626

   ASSERT(!obj_context->va_buffers_count);

to fail. I interpret this line as: one cannot have overlapping [vaBeginPicture(), vaEndPicture()] intervals. Is this correct?

Best regards
Dong Hoon


More information about the Libva mailing list