Card level differences between XAA and EXA hooks?

Michel Dänzer michel at daenzer.net
Tue Apr 10 02:48:21 PDT 2012


On Fre, 2012-04-06 at 23:36 -0700, Connor Behan wrote: 
> I am trying to port my driver to EXA (r128 if that matters 
> https://bugs.freedesktop.org/show_bug.cgi?id=47866) and I've hit a brick 
> wall trying to make it pass rendercheck tests. Specifically, the tests I 
> am running are the quick ones: fill, dcoords, scoords, mcoords, 
> tscoords, tmcoords, triangles and bug7366. With XAA, all tests are 
> passed. With EXA I get 129/160, 2/2, 0/1, 0/1, 0/2, 0/2, 1710/1938 and 
> 1/1 respectively.
> 
> I'm wondering why that is. Obviously the answer is "I did it wrong" but 
> I'm doing things very similar to what other drivers do. I'm only 
> accelerating Solid and Copy right now. My EXA PrepareSolid sends the 
> same bytes to the same registers as the XAA SetupForSolidFill. My EXA 
> Solid sends the same bytes to the same registers as XAA 
> SubsequentSolidFillRect. Same with (PrepareCopy, 
> SetupForScreenToScreenCopy) and (Copy, SubsequentScreenToScreenCopy). I 
> also made a conservative guess for what my EXA flags have to be - the 
> flags saying that my card has as few features as possible. Do you think 
> there are extra bytes that I have to OUTREG if I want to use EXA? Or is 
> the problem more likely to be a subtlety of how I initialize it?

I think most likely your code is getting called for more cases with EXA
(XAA predates the RENDER extension and isn't really suited for
accelerating it, which is why EXA was created) and not handling some of
them correctly.

BTW, the patch attached to the bug report will crash for solid and
gradient pictures, where the pDraw member is NULL.


-- 
Earthling Michel Dänzer           |                   http://www.amd.com
Libre software enthusiast         |          Debian, X and DRI developer


More information about the xorg-devel mailing list