Commit Graph

3530 Commits (e90716671d7a5dabf13c22a339f750dba77f438a)

Author SHA1 Message Date
Ian Romanick 2f2d8b9688 Merge xgi_mem_req and xgi_mem_alloc into a single type.
These two structures were used as the request and reply for certain
ioctls.  Having a different type for an ioctl's input and output is
just wierd.  In addition, each structure contained fields (e.g., pid)
that had no business being there.

This change requires updates to user-space.
2007-07-09 15:59:09 -07:00
Ben Skeggs 023f7d9c00 nouveau: Allocate mappable VRAM for notifiers.. 2007-07-09 23:58:00 +10:00
Ben Skeggs 31e33813e8 nouveau: Don't be so strict on <NV50 2007-07-09 20:02:14 +10:00
Ben Skeggs 3c58195ccd nouveau: Avoid oops
Turns out lastclose() gets called even if firstopen() has never been...
2007-07-09 16:16:44 +10:00
Ben Skeggs c806bba466 nouveau/nv50: Initial channel/object support
Should be OK on G84 for a single channel, multiple channels *almost* work.

Untested on G80.
2007-07-09 16:16:44 +10:00
Ben Skeggs 3324342e42 nouveau: enable reporting for all PFIFO/PGRAPH irqs 2007-07-09 16:16:44 +10:00
Ben Skeggs 163f852612 nouveau: rewrite gpu object code
Allows multiple references to a single object, needed to support PCI(E)GART
scatter-gather DMA objects which would quickly fill PRAMIN if each channel
had its own.

Handle per-channel private instmem areas.  This is needed to support NV50,
but might be something we want to do on earlier chipsets at some point?

Everything that touches PRAMIN is a GPU object.
2007-07-09 16:16:44 +10:00
Michel Dänzer 5b726b6390 radeon: Improve vblank counter.
The frame counter seems to increase only at the end of vertical blank, so we
need to add 1 while in vertical blank.
2007-07-06 09:50:50 +02:00
Ian Romanick 86e75b7f7f Remove XGI_IOCTL_CPUID and associated cruft. 2007-07-05 17:49:13 -07:00
Ian Romanick 8b18276458 Major clean up of xgi_ge_irq_handler
Two large blocks of code were moved out of this function into separate
functions.  This brought some much needed sanity to the indentation.
Some dead varaibles were removed.
2007-07-05 17:45:44 -07:00
Ian Romanick 2695e8e209 Convert weird rtdsc usage to get_cycles.
I'm not convinced that get_cycles is the right approach here, but it's
better than the weird way that rtdsc was being used.
2007-07-05 17:18:12 -07:00
Kristian Høgsberg d57b7f02d2 Use idr_replace trick to eliminate struct drm_ctx_sarea_list. 2007-07-03 10:41:48 -04:00
Kristian Høgsberg 1814a829eb Don't take dev->struct_mutex twice in drm_setsareactx. 2007-07-03 10:31:46 -04:00
Michel Dänzer 91990946fa One more spinlock initializer cleanup. 2007-07-03 12:33:51 +02:00
Michel Dänzer ea832a8e55 Simplification for previous commit.
Dave Airlie pointed out on IRC that idr_replace lets us know if the ID hasn't
been allocated, so we don't need a special pointer value for allocated IDs that
don't have valid information yet.
2007-07-03 12:15:15 +02:00
Michel Dänzer 8d96ba9805 Restore pre-idr semantics for drawable information.
There's a difference between a drawable ID not having valid drawable
information and not being allocated at all. Not making the distinction would
break i915 DRM swap scheduling with older X servers that don't push drawable
cliprect information to the DRM.
2007-07-03 11:41:44 +02:00
Kristian Høgsberg c9d752ff4f Fix must-check warnings and implement a few error paths. 2007-07-02 17:52:07 -04:00
Kristian Høgsberg b323ab52aa Drop drm_drawable_list and add drm_drawable_info directly to the idr. 2007-07-02 15:07:02 -04:00
Ian Romanick fc37781dd3 Convert a few more U32 variables to more appropriate, generic types. 2007-06-29 21:48:31 -07:00
Ian Romanick 49ccec1b08 Convert xgi_mem_location enum values to less generic names. 2007-06-29 21:38:48 -07:00
Ian Romanick 32584d94e6 Convert open coded list iterators to either list_for_each_entry or list_for_each_entry_safe 2007-06-29 21:35:27 -07:00
Ian Romanick 4403540776 Clean up xgi_pcie_heap_check
The whole purpose of xgi_pcie_heap_check is to log information about
entries on the used_list.  If XGI_DEBUG is not set, it doesn't print
anything.  Therefore we can #ifdef the whole function body.

Convert open-code list iteration to use list_for_each_entry.
2007-06-29 21:15:33 -07:00
Ian Romanick 4c4780bc8e Stop-gap fix in xgi_submit_cmdlist
Comment in the code explains it.  Basically, I put an if-statement
around a block of code to prevent a NULL pointer dereference that
should never happen in the first place.  Eventually, this will need to
come out.
2007-06-29 21:05:16 -07:00
Ian Romanick e206c4c59d Convert some PCI-e GART related variable to generic types.
A few of the PCI-e GART related fields in struct xgi_info were
hardcoded to u32.  None of them need to be.  Convert them to either
unsigned int or bool.
2007-06-29 21:00:50 -07:00
Ian Romanick 3773378658 Delete unused arrays s_emptyBegin and s_flush2D. 2007-06-29 20:49:21 -07:00
Ian Romanick 406ded3816 Replace U(8|16) with u(8|16). 2007-06-29 16:41:32 -07:00
Ian Romanick ec7730e5ba Eliminate unnecessary defines of TRUE and FALSE. 2007-06-29 16:37:39 -07:00
Ian Romanick 5da2a3c2d4 Replace BOOL with bool. 2007-06-29 16:37:01 -07:00
Ian Romanick ba3173fa39 Eliminate unused integer and float typedefs. 2007-06-29 16:35:36 -07:00
Ian Romanick 88328d4ef0 Eliminate structure typedefs
Documentation/CodingStyle says that 'typedef struct foo foo_t' is
evil.  I tend to agree.  Elminate all uses of such construct.
2007-06-29 15:27:38 -07:00
Alan Hourihane 70fd9351ed Move out the code from i915_dma_cleanup to unload to match
existing code.

This needs verifying.
2007-06-29 21:04:17 +01:00
Alan Hourihane adff58223f Bring back code from merge that was accidentally removed. 2007-06-29 20:58:16 +01:00
Alan Hourihane 14c49df06b merge fixes 2007-06-29 20:14:09 +01:00
Alan Hourihane 8a78dead29 Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into modesetting-101
Conflicts:

	linux-core/drm_drv.c
	linux-core/drm_fops.c
	linux-core/drm_objects.h
	linux-core/drm_stub.c
	shared-core/i915_dma.c
2007-06-29 20:09:44 +01:00
Ian Romanick 33b8476dfb Fix return type of xgi_find_pcie_block.
This function used to return 'void *', which was then cast to
'xgi_pcie_block_t *' at the only caller.  I changed the return type to
'struct xgi_pcie_block_s *' and removed the explicit cast.
2007-06-29 09:30:02 -07:00
Thomas Hellstrom a27af4c4a6 Avoid hitting BUG() for kernel-only fence objects. 2007-06-29 15:22:28 +02:00
Thomas Hellstrom 00f1a66f22 Fence object reference / dereference cleanup.
Buffer object dereference cleanup.
Add a struct drm_device member to fence objects:
This can simplify code, particularly in drivers.
2007-06-29 12:58:45 +02:00
Ian Romanick 475c1e67ba Remove unused type 'struct xgi_pcie_list_s' / xgi_pcie_list_t. 2007-06-28 23:40:36 -07:00
Ian Romanick 8fa24c53f5 Minor clean up of variable declarations in xgi_find_pcie_virt. 2007-06-28 22:32:11 -07:00
Ian Romanick 9c85fb866d Clean up debug log messages in xgi_find_pcie_block. 2007-06-28 22:26:39 -07:00
Ian Romanick 11ffe4632a Convert comment header of xgi_find_pcie_virt to kernel doc format. 2007-06-28 22:20:13 -07:00
Ben Skeggs e26ec51146 nouveau: small RAMFC cleanups 2007-06-29 14:20:50 +10:00
Alan Hourihane e79e2a5816 Fix type/flags usage problem to check for preferred modes.
Add more debugging to help diagnose problems.
2007-06-28 21:25:13 +01:00
Ben Skeggs 1c32fecd6d nouveau: Hack around possible Xv blit adaptor breakage 2007-06-28 21:01:17 +10:00
Ben Skeggs 2dd85772aa nouveau/nv10: Fix earlier NV1x chips
Can't use nv04 code for them, since an extra field was inserted into
RAMFC after DMA_PUT/GET.
2007-06-28 04:23:17 +10:00
Ben Skeggs 68ecf61647 nouveau: never touch PRAMIN with NV_WRITE, cleanup RAMHT code a bit 2007-06-28 03:26:44 +10:00
Ben Skeggs 18a6d1c9c3 nouveau: simplify PRAMIN access 2007-06-28 03:26:44 +10:00
Ben Skeggs 38617b6a26 nouveau: name some regs 2007-06-28 03:26:44 +10:00
Ben Skeggs ce0d528d3c nouveau/nv50: skeletal backend 2007-06-28 03:26:43 +10:00
Ben Skeggs 695599f18d nouveau: Nuke DMA_OBJECT_INIT ioctl (bumps interface to 0.0.7)
For various reasons, this ioctl was a bad idea.

At channel creation we now automatically create DMA objects covering
available VRAM and GART memory, where the client used to do this themselves.

However, there is still a need to be able to create DMA objects pointing at
specific areas of memory (ie. notifiers).  Each channel is now allocated a
small amount of memory from which a client can suballocate things (such as
notifiers), and have a DMA object created which covers the suballocated area.
The NOTIFIER_ALLOC ioctl exposes this functionality.
2007-06-28 03:26:43 +10:00