[Libva] vaCreateSurfaceGLX now works with psb (IEGD 10.3) + Xorg 1.6.4
gbeauchesne at splitted-desktop.com
Sat Apr 3 23:52:53 PDT 2010
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. ;-)
>> 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.
More information about the Libva