EXA support for nv driver

Lars Knoll lars at trolltech.com
Wed Aug 24 01:18:57 PDT 2005


Hi,

I've hacked the nvidia driver lately to add EXA support to it, and at the same 
time cleaned up some (but far from all) of the number magic in nv_hw.c. I 
also added some documentation on how to initialize the HW to be able to do 
DMA (at least as far as I understood it ;-)

I implemented the uploadToScreen/downloadFromScreen hooks, but they require 
access to the AGP file descriptor (so that the driver can allocate mmap the 
GART). Currently the AGP code in Xorg doesn't export this, so I had to add a 
small hook there as well.

The upload/download hooks are working for me on a GeForce 6600, but I had 
reports that they don't work on some other hardware. I hope to be able to get 
my hands on some older hardware soon, so I can test myself.

There is a preliminary implementation for the composite hook available, but 
the implementation is wrong, because the blending operation seems to expect 
non premultiplied pixmaps. I have an idea how to do it properly and will 
probably work on that as my time permits.

You can find the patches at: 

http://trolls.troll.no/lars/patches/nv.diff
http://trolls.troll.no/lars/patches/lnx_agp.diff


Related to this, I think we should change the signature of 
    Bool        (*UploadToScreen) (PixmapPtr            pDst,
                                   char                 *src,
                                   int                  src_pitch);
in ExaAccelInfoRec to
    Bool        (*UploadToScreen) (PixmapPtr            pDst,
                                   int x, int y, int w, int h,
                                   char                 *src,
                                   int                  src_pitch);

to match the DownloadFromScreen pointer, and allow us to use UploadToScreen to 
accelerate PutImage. Any opinions?

Lars



More information about the xorg mailing list