[Libva] vaPutSurface threading issue

Adam Strzelecki ono at java.pl
Tue Feb 23 06:19:35 PST 2010


Sambhav wrote:
> With X-Server 1.6.X the application crashes and exits with following error
> XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0"
>       after 54 requests (53 known processed) with 0 events remaining.

Have a look at my report at Intel's EDC forum:
http://community.edc.intel.com/t5/Software-Tools-Discussions/IEGD-10-3-VA-is-NOT-thread-safe-crashing-on-iegd-drv-video-so/m-p/2307#M229

This isn't IMHO related to Xorg but to IEGD drivers themselves. With old PSB drivers from 2008 everything works fine when using multithreading.
I'd be glad it you can post your problem there in the thread above on Intel forum too. Maybe this will encourage Intel's engineers to do something about that issue.

Gwenole wrote:
> Are you locking your display? XInitThreads() + X locks or pthread locks.

I tried myself to use XInitThreads to avoid crashes. And indeed it helps with IEGD, but it really produces crappy performance, like 1.5FPS instead smooth video on old non-locked PSB drivers from 2008. Moreover since VA API some functions are synchronous (Render functions) the only way to play multiple streams (and fully use the hwcodec potential) is to use multithreading, but when using XInitThreads actually we get kind of sequential access via VA API (since it uses interprocess XCB to access driver), and as a result I get 1.5FPS when playing 4-6 streams, and 6% CPU usage due that locking.

FYI with old PSB 2008 drivers (regardless of Xorg version) I get smooth 4-6 PAL streams playback with absolutely NO XInitThreads locking or whatever locking, also my CPU usage is ~60%-70%.

Aside of that I think VA API is not strictly related to X11 lib, and it should be driver responsibility to provide valid locking around internal X11 communication and thread-safe functions. XInitThreads is suppose to protect X11 API calls from the user application, but VA API calls should IMHO work fine regardless if I use XInitThreads or not.

So it is definitely something wrong with new IEGD Gallium based drivers.

Regards,
-- 
Adam


More information about the Libva mailing list