Commit Graph

22 Commits (9e019df75764a7ce79266ceb058307336ddf00ef)

Author SHA1 Message Date
Dave Airlie 13659357ad make a savage function static from kernel 2006-12-19 17:58:09 +11:00
Michael Karcher 561e23a7c2 dev->agp_buffer_map is not initialized for AGP DMA on savages
bug 8662
2006-10-16 22:06:58 -04:00
Eric Anholt 63c4d02576 Revert a change that accidentally went in with whitespace changes from
Linux, which broke on FreeBSD. DRM_COPY_*_IOCTL checks for the size
    parameter matching the ioctl's command size there, since the copin/out
    happened earlier.
2006-04-09 20:10:32 +00:00
Dave Airlie 1ad5dfc369 whitespace cleanup/aligment with kernel 2006-01-02 05:22:50 +00:00
Eric Anholt a10d8178e3 Initial port of savage to FreeBSD for the AGP and !ShadowStatus case. Adds
drm_mtrr_{add,del} for handling the MTRR setup. Still has a LOR issue
    with DRM_VERIFYAREA_READ/DRM_COPY_FROM_USER_UNCHECKED in savage_bci.c
    -- this won't work with the fine-grained locking in use, and just doing
    a single copyin to a temporary will probably work fine. Also note that
    the module leaks approximately 4 kb on unload.
2005-11-08 20:25:00 +00:00
Dave Airlie 0d346a07a8 convert ioctl flags to use flags instead of separate ints 2005-09-03 03:27:14 +00:00
Jon Smirl 0d81954b0e Make sure savage has 3rd ioctl parameter 2005-08-09 01:40:45 +00:00
Dave Airlie 3a61e9f96c make some functions static in the savage drm driver 2005-08-07 05:37:25 +00:00
Eric Anholt c789ea1521 Rename the driver hooks in the DRM to something a little more
understandable: preinit -> load postinit -> (removed) presetup ->
    firstopen postsetup -> (removed) open_helper -> open prerelease ->
    preclose free_filp_priv -> postclose pretakedown -> lastclose
    postcleanup -> unload release -> reclaim_buffers_locked version ->
    (removed)
postinit and version were replaced with generic code in the Linux DRM
    (drivers now set their version numbers and description in the driver
    structure, like on BSD). postsetup wasn't used at all. Fixes the savage
    hooks for initializing and tearing down mappings at the right times.
    Testing involved at least starting X, running glxgears, killing
    glxgears, exiting X, and repeating.
Tested on: FreeBSD (g200, g400, r200, r128) Linux (r200, savage4)
2005-08-05 03:50:23 +00:00
Eric Anholt 5d96c74ff1 - Remove drm_initmap and replace its usage with drm_addmap. This reduces
code duplication, and it also hands you the map pointer so you don't
    need to re-find it.
- Remove the permanent maps flag. Instead, for register and framebuffer
    maps, we always check whether there's already a map of that type and
    offset around. Move the Radeon map initialization into presetup (first
    open) so it happens again after every takedown.
- Remove the split cleanup of maps between driver takedown (last close) and
    cleanup (module unload). Instead, always tear down maps on takedown,
    and drivers can recreate them on first open.
- Make MGA always use addmap, instead of allocating consistent memory in
    the PCI case and then faking up a map for it, which accomplished nearly
    the same thing, in a different order. Note that the maps are exposed to
    the user again: we may want to expose a flag to avoid this, but it's
    not a security concern, and saves us a lot of code.
- Remove rmmaps in the MGA driver. Since the function is only called during
    takedown anyway, we can let them die a natural death.
- Make removal of maps happen in one function, which is called by both
    drm_takedown and drm_rmmap_ioctl.
Reviewed by: idr (previous revision) Tested on: mga (old/new/pci dma),
    radeon, savage
2005-06-28 20:58:34 +00:00
Jon Smirl 9fb77e869f Change initialization of savage register access to _DRM_READ_ONLY. Flags of
zero does not mean no privs, instead it grants write access
    _DRM_READ_ONLY only applies to non-root users. Problem is only in CVS,
    initmaps are not in the kernel yet.
2005-06-21 02:20:02 +00:00
Dave Airlie 83cb150449 Remove warnings about code mixed with declerations.. 2005-06-04 06:14:58 +00:00
Felix Kuehling a396617dbc Command DMA optimizations:
- don't waste DMA memory when small command buffers are flushed
- minimized padding with noops
- slightly simplified faked DMA flushing
2005-03-13 02:16:10 +00:00
Felix Kuehling 95fa851769 Tracked down random lockups related to command DMA that occurred in Quake3
after ~5min: buffer aging was subtly broken. Part of this may have also
    affected vertex DMA buffer aging and client-side texture heap aging,
    though with less fatal consequences. Bumped minor version and driver
    date.
2005-03-07 12:19:49 +00:00
Felix Kuehling 15995234b4 Added support for command DMA on Savage4-based hardware. Unfortunately
command and vertex DMA don't work at the same time. Command DMA
    performance is superior and works with all vertex formats. Bumped minor
    version and driver date.
2005-03-06 01:41:06 +00:00
Felix Kuehling bc54ede0a8 Use wrap counter to extend 16-bit hardware event tags to 32-bit logical
event counters in the SAVAGE_EVENT_EMIT/WAIT ioctls. This is needed for
    reliable client-side texture heap aging. Slightly simplified DMA buffer
    aging while at it. Bumped minor version and driver date.
2005-02-23 16:34:30 +00:00
Eric Anholt 080a547d4d - Implement drm_initmap, and extend it with the resource number to help
FreeBSD. Add drm_get_resource_{start|len} so linux-specific stuff
    doesn't need to be in shared code.
- Fix mach64 build by using __DECONST to work around passing a const
    pointer to useracc, which is unfortunately not marked const.
- Get rid of a lot of maplist code by not having dev->maplist be a pointer,
    and by sticking the link entries directly in drm_local_map_t rather
    than having a separate structure for the linked list.
- Factor out map uninit and removal into its own routine, rather than
    duplicating in both drm_takedown() and drm_rmmap().
- Hook up more driver functions, and correct FreeBSD-specific bits of
    radeon_cp.c, making radeon work.
- Baby steps towards using bus_space as we should.
2005-02-05 08:00:14 +00:00
Felix Kuehling ffc51f1f32 Setup MTRRs for frame buffer and aperture manually on Savage3D and
Savage4-based cards. Automatic setup in drm_initmap doesn't work due to
    the weird alignment and size of the aperture.
2005-01-15 16:55:01 +00:00
Felix Kuehling 17d893f567 Only try to find the agp_buffer_map if dma_type is AGP. This is all that's
needed on the DRM side to support PCI Savages. Bumped patch level and
    driver date.
2005-01-10 22:46:02 +00:00
Felix Kuehling e7ba83bd6f Fixed off-by-one error in savage_bci_wait_fifo_shadow. 2005-01-08 23:28:27 +00:00
Felix Kuehling ae1bc4a6da 3D scissor regs are now managed by the DRM to iterate over clip rects
passed to the cmdbuf ioctl (try xeyes on top of glxgears ;-)
Tightened the texture state check
Bumped Savage DRM version to 2.1.0 so that DRI driver can (theoretically)
    depend on the DRM to manage the scissor registers
2005-01-05 23:45:42 +00:00
Felix Kuehling 04842e8bcf Completeley rewritten Savage DRM which can be considered secure (modulo
implementation errors). Direct hardware (MMIO, BCI) access is no longer
    needed in the Mesa driver. Bumped version to 2.0.0. Corresponding
    changes to the DDX and Mesa drivers are being committed.
2005-01-01 20:22:58 +00:00