I've committed almost all the necessary bits for AGP texturing.  Just one
thing remains to be done before enabling the AGP heap in mach64_screen.c.  
When multitexturing, both textures must reside in either local card memory
or AGP, since there is only a single tex_cntl register with one bit to
specify the location of both textures.  I have AGP textures working in my
local tree, but it's a little ugly right now.  To test it, I added a
second version of UploadTextureImages called UploadMultiTexImages that
gets called from the EmitHwStateLocked if two textures are bound and
either one is dirty or they are on different heaps.  The function follows
the same algorithm as UploadTextureImages, but it ensures that both
textures are on the same heap and that allocations succeed or fail as a
pair.  This requires some extra swapping/backtracking and there is surely
a smarter way to do this.  It might be useful if we could get the
performance boxes working so we could look at texture swapping stats, etc.  
Ok, on to DMA...

I haven't commited these changes yet, but I think I'm ready to do this
now.  I fixed the hangup when exiting X with the interrupt handler enabled
by calling the ioctl to uninstall it in ATIDRICloseScreen.  Seems obvious,
but for some reason the glint driver doesn't do this, so I thought it was
called by one of the drm template functions.  It turns out that the
uninstall_irq function does get called on removing the module, but we need
to disable interrupts before tearing down the kernel context in
ATIDRICloseScreen.  Right now I have commented out the handler function
calls in the bottom half, but interrupts are being processed.  I've also
added XF86Config options for forcing PCI mode, forcing pseudo-DMA (MMIO)
mode, and for setting agp mode, agp size and vertex buffer size (choice of
1 or 2 MB).  This should make testing different paths easier since you 
won't have to recompile.  I'd like to commit these changes soon so we have 
Frank's code in the branch and we can start working on filling out the 
implementation.

One last thing:  

I haven't solved the segfault when the server closes (this is the old
problem that Felix mentioned), but when I was trying to add some debug
output, I saw a segfault occur in xf86PurgeUnlockedOffscreenAreas, which
seems to be called in the callback chain of pScreen->CloseScreen.  So the
problem could be in freeing the offscreen areas allocated for DRI or the
DDX.  Maybe this is related to the lockups with XAA enabled?  I'm still
unclear on where the allocation is done for the XAA offscreen memory.  
The DRI code in atiscreen.c reserves 128 scan lines for XAA in the
calculations, but that constant (ATI_DRI_XAA_LINES) isn't referred to
anywhere else.

-- 
Leif Delgass
http://www.retinalburn.net







_______________________________________________________________

Have big pipes? SourceForge.net is looking for download mirrors. We supply
the hardware. You get the recognition. Email Us: [EMAIL PROTECTED]
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to