Commit graph

20 commits

Author SHA1 Message Date
Leif Delgass
49a9928507 Code clean up, added RING macros, initial try at emitting descriptors to
the ring as they are sent by the client (enabled with
    MACH64_NO_BATCH_DISPATCH). For the "no batch dispatch" path:
- The DMA end of list flag is moved in the COMMIT_RING macro.
- The flush function only starts a new pass if the card has gone idle and
    there are descriptors on the ring still unprocessed. This could be
    better optimized to flush only when there is a large enough queue on
    the card, but we'll always need to flush if we run out of freeable
    buffers.
- This path is working up to a point, but lockups still occur. There is a
    small performance improvement.
2002-06-01 21:56:27 +00:00
Leif Delgass
5d63766f92 Add conditional definition of list_for_each_safe for earlier kernels. 2002-05-23 16:54:01 +00:00
Leif Delgass
2f11e6b84f - Check BM_GUI_TABLE for buffer completion rather than using pattern
registers for aging
- Disabled frame aging in the drm
- Disable save/restore pattern registers on context switch with DDX
- Move wait for DMA idle from EnterServer to XAA Sync.
- Clean up locking/sync macros in DDX
- Group scissor registers with UPLOAD_MISC in sarea to avoid confusion with
    cliprects (mach64 doesn't have hardware cliprects, just the single
    scissor).
2002-05-22 04:11:12 +00:00
Leif Delgass
3a83c18c24 Checkpoint commit of async DMA, blits and AGP texturing. Buffer aging is
done with the pattern registers which is not ideal, but works. There
    are still lots of places where optimizing is needed. We need to do the
    minimum required to sync with the X server on context switches, since
    right now things slow down whenever the mouse is moved.
2002-05-18 08:57:54 +00:00
Leif Delgass
c3e3c95731 - interrupt-driven DMA framework written by Frank C. Earl (merged from
mach64-0-0-3-dma-branch)
- I've partly filled in the dma_dispatch implementation from the vertex
    dispatch code. We still need to deal with adding a register reset
    buffer to the end of the dma pass. The freelist and blits are also
    still to be filled in.
- I've added XF86Config options for the driver: ForcePCIMode - Don't use
    AGP for buffers/textures, even if agpgart is present PseudoDMAMode -
    Dispatch DMA buffers with MMIO, one register at a time. AgpMode - 1 or
    2 AgpSize - Size of AGP aperture to use for allocations BufferSize -
    Size of vertex buffers in MB (1 or 2)
2002-05-08 05:32:52 +00:00
Jose Fonseca
b53b0e0a04 Use of readl/writel macros for MMIO 2002-05-02 10:12:30 +00:00
Leif Delgass
265b19947c Enable/disable DMA based on result of gui-mastering test. MMIO mode can
still be forced at compile time by setting MACH64_USE_DMA to 0.
DMA test now uses already allocated pci pool memory for descriptor table
    and allocates a temporary dma buffer from the pool. This should
    probabaly be changed to use one of our mapped vertex/dma buffers.
Also, return error code if _dispatch_vertex causes a lockup, either with
    DMA (wait for idle fails) or MMIO (wait for fifo times out).
2002-05-01 00:10:29 +00:00
Jose Fonseca
33e6c36a6e Use DMA by default. 2002-04-30 12:21:20 +00:00
Leif Delgass
2558b54aa0 Byte swapping for vertex DMA data and DMA descriptors 2002-04-28 04:33:56 +00:00
Leif Delgass
121100a515 Account for endianess in register reads/writes. 2002-04-27 19:16:23 +00:00
Leif Delgass
edac61a944 remove duplicate prototype for mach64_do_wait_for_idle (oops) 2002-04-26 22:03:29 +00:00
Leif Delgass
40a9e22bf9 Initial hacked-up code for synchronous DMA of vertex buffers (disabled but
functional for both PCI and AGP). 16 KB descriptor table is created by
    the drm and the handles stored in the device private structure.
Finish setup of AGP -- AGP registers are now initialized.
Fix up MMIO for PCI.
2002-04-26 21:57:07 +00:00
Jose Fonseca
c04bb660f4 Better support for kernel ring buffers. Changes to allow the evetual use of
buffer aging.
2002-04-23 23:47:09 +00:00
Leif Delgass
bd00770298 Add agp texture region info to DRM. Also, use DMA* macros for DRM
emit_state functions. This ensures a wait_for_fifo for the MMIO writes.
2002-04-20 20:11:08 +00:00
Jose Fonseca
d04ebd5463 Added the state hardware programming functions to here 2002-04-20 12:03:19 +00:00
Jose Fonseca
c7df8b994c Fixed the DMA emulation code thanks to Keith 2002-04-20 00:20:49 +00:00
Jose Fonseca
c0622174af Code restructuring to be more similar to the existing drivers.
Implementation of several functions to support the handling of DMA
    buffers. The DMA emulation code is disabled because it segfaults when
    trying to read the DMA buffer.
2002-04-19 07:12:32 +00:00
Jose Fonseca
b7ff3cdd0f Removal of erroneous PCI GART code. Better support for PCI cards. More
robustness in the DRM DMA initialization code.
2002-04-15 00:51:14 +00:00
Leif Delgass
43fb03f135 Fixes for viewport calculation, scissors, and cliprects. Added drawX,drawY
to the context struct to hold origin of drawable in draw buffer. The
    viewport is adjusted using these fields.
Enabled scissor test, drm now uses scissor values from the sarea context.
    Also enabled color masking, drm uses mask from sarea context
    (untested).
The viewport calcs seem to be working, but cliprects still have problems
    for single buffer contexts and overlapping GL windows. Needs more
    testing and debugging. I'm committing now so we can continue with
    testing.
2002-03-05 02:03:31 +00:00
Jose Fonseca
9448f35c3b Initial merge with the trunk (XFree 4.2.x, Mesa 4.x) 2002-02-26 22:02:37 +00:00