[Libva] vaCreateSurfaceGLX now works with psb (IEGD 10.3) + Xorg 1.6.4
Gwenole Beauchesne
gbeauchesne at splitted-desktop.com
Sat Apr 3 23:52:53 PDT 2010
Hi,
Le 18 févr. 10 à 21:26, Adam Strzelecki a écrit :
>> Thanks for testing. BTW, if FBO works with your change then the
>> plain vaCopySurfaceGLX() function should work too.
>
> Well, vaCopySurfaceGLX blows up Xorg actually here (both "./
> vaapi_h264 --glx --vaapi-glx-use-copy" or "./vaapi_h264 --getimage
> pixmap" cause SIGSEGV).
> Both are trying to render vaPutSurface onto Pixmap, and Xorg catch
> SEGV on vaPutSurface VA driver code.
>
> When using bind however "./vaapi_h264 --glx --no-vaapi-glx-use-copy"
> I can see nice picture on the screen :> So I presume it works, at
> lease in hwdemos.
I have uploaded new 0.31.0*+sds12 packages and patches to fix the
default TFP + FBO implementation. This now requires GLX 1.3. Well, it
always required GLX 1.3 but I never checked for it correctly either. I
have not tested on GMA500 or G45 but this matches what I have updated
for the NVIDIA backend too and fixes rendering for lightspark.
BTW, I need to create another GLX context to preserve caller's state
correctly but I don't know how much does this cost on GMA500. This is
free on my NVIDIA platform and this new version is even slightly
faster. It also uses less texture memory.
>> If so, I'd be interested to know whether this makes a difference,
>> performance-wise, in MPlayer for example.
>
> First of all it doesn't work out of the box at all as I get
> vaCopySurfaceGLX (1st case) vaAssociateSurfaceGLX (2nd case) "flag
> not supported" error, because libva checks:
>
>> /* XXX: only support VA_FRAME_PICTURE */
>> if (flags != VA_FRAME_PICTURE)
>> return VA_STATUS_ERROR_FLAG_NOT_SUPPORTED;
Yes, this check was stupid since we can't assume anything about what
vaPutSurface() supports, so I removed it. ;-)
>> vs.
>> mplayer -vo vaapi:gl:bind -va vaapi
>
> (2) No crash but no image also -> "nice" black rectangle.... argh!
>
> Do you have any idea why "./vaapi_h264 --glx --vaapi-glx-use-copy"
> renders actually something but "mplayer -vo vaapi:gl:bind -va vaapi"
> shows just black rectangle???
There was a bug in the way I used TFP and IEGD probably didn't like
it. Please try the new packages, this might help. At least, this is
now the most correct code.
Regards,
Gwenole.
More information about the Libva
mailing list