Commit Graph

99 Commits (02c775fc750b48ae25b6a4af51afbfe090ebada4)

Author SHA1 Message Date
Eric Anholt 4b9826408f intel: Rename dri_ and intel_ symbols to drm_intel_.
I wanted to avoid doing this, as it's a bunch of churn, but there was a
conflict between the dri_ symbols in libdrm and the symbols that were in
Mesa in 7.2, which broke Mesa 7.2 AIGLX when the 2D driver had loaded new
libdrm symbols.  The new naming was recommended by cworth for giving the
code a unique prefix identifying where the code lives.

Additionally, take the opportunity to fix up two API mistakes: emit_reloc's
arguments were in a nonsensical order, and set_tiling lacked the stride
argument that the kernel will want to use soon.  API compatibility with
released code is maintained using #defines.
2008-10-30 11:29:40 -07:00
Eric Anholt 0e86731232 intel: Add dri_bufmgr_check_aperture support for bufmgr_gem.
This relies on a new kernel ioctl to get the available aperture size.

In order to provide reasonable performance from dri_bufmgr_check_aperture, we
now require that once a buffer has been used as the target of a relocation,
it gets no further relocations added to it.  This cuts the cost of
check_aperture from 10% to 1% in the 3D driver with no code changes, but
slightly complicates our plans for the 2D driver.
2008-10-28 14:27:49 -07:00
Xiang, Haihao b7d54b1dba intel: Also total child_size of the target_bos. Partial fix #17964. 2008-10-24 16:41:54 +08:00
Keith Packard a59ea02ff8 intel: ioctl is not defined to return -errno
Don't count on ioctl returning -errno; use errno directly.

Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
2008-10-16 23:54:19 -07:00
Dave Airlie 4c8aeb6fc7 link libdrm_intel properly
libdrm_intel needs symbols from libdrm, so link against it.
(cherry picked from commit d9c2f65dd8)

Conflicts:

	libdrm/Makefile.am
2008-10-17 06:40:38 +10:00
Eric Anholt 6df7b0719f intel: Protect bufmgr objects with a pthread mutex.
We want to be able to use the bufmgr from multiple threads for GL, and thus
we need to protect the internal structures.

The pthread-stubs package is used so that programs not linked against
pthreads get weak symbols to stubs and don't eat most of the cost.
2008-10-17 06:38:57 +10:00
Xiang, Haihao 769197c8f1 intel: avoid deadlock in intel_bufmgr_fake. 2008-10-16 10:37:30 +08:00
Eric Anholt 458e2d5bc5 intel: Fix compile warning. 2008-10-14 13:33:38 -07:00
Eric Anholt 993383873c intel: Add interface for getting tiling mode of a bo. 2008-10-14 13:23:04 -07:00
Julien Cristau d9c2f65dd8 link libdrm_intel properly
libdrm_intel needs symbols from libdrm, so link against it.
2008-10-13 16:39:33 -07:00
Eric Anholt 3e03d781f7 intel: Avoid pthread mutex recursion in bufmgr_fake.
Bug #18035. Fixes deadlock in glean texCube testcase.
2008-10-13 13:41:10 -07:00
Keith Packard 94c88c151c Manage fences in user-mode bufmgr_fake to clean buffers
When using bufmgr_fake without DRM, the X server idles the ring whenever it
wants to wait for something to complete (brutal, but effective). In this
case, bufmgr_fake must treat the pending fence as having passed. However, it
wasn't recording the fences as it emitted them, nor cleaning buffers as they
passed.

Signed-off-by: Keith Packard <keithp@keithp.com>
2008-10-09 18:25:58 -07:00
Eric Anholt 3169d9639b intel: Protect bufmgr objects with a pthread mutex.
We want to be able to use the bufmgr from multiple threads for GL, and thus
we need to protect the internal structures.

The pthread-stubs package is used so that programs not linked against
pthreads get weak symbols to stubs and don't eat most of the cost.
2008-10-09 12:57:09 -07:00
Xiang, Haihao 604759d4a7 intel: fix for write_domain and static BOs.
http://bugs.freedesktop.org/show_bug.cgi?id=17705
2008-10-09 11:59:29 +08:00
Jesse Barnes af2323b4b3 intel bufmgr: reinstate buffer handle tracking
We need a way of getting at the underlying handle for use with mode
setting.  We can either export it in the dri_bo object or provide a new
callback to get it.
2008-09-30 16:35:53 -07:00
Dave Airlie 972f657265 Merge remote branch 'origin/master' into modesetting-gem
Conflicts:

	libdrm/Makefile.am
	libdrm/dri_bufmgr.h
	linux-core/drm_irq.c
	linux-core/drm_sysfs.c
	linux-core/drm_ttm.c
	shared-core/i915_dma.c
	shared-core/i915_irq.c
	shared-core/nouveau_drv.h
	shared-core/radeon_cp.c
2008-09-30 14:13:49 +10:00
Xiang, Haihao 073cb5ee1d intel: Copy data from card memory back to backing store when mapping.
Fixes http://bugs.freedesktop.org/show_bug.cgi?id=17705
2008-09-27 11:01:24 +08:00
Eric Anholt 2db8e0c8ef intel: Allow up to 15 seconds chewing on one buffer before acknowledging -EBUSY.
The gltestperf demo in some cases took over seven seconds to make it through
one batchbuffer on a GM965.

Bug #17004.
2008-09-23 17:10:04 -07:00
Eric Anholt 0dccf017ab intel: Replace wraparound test logic in bufmgr_fake. Again.
I'd swapped the operands, so if we weren't in lockstep with the hardware we
said the sequence was always passed.  Additionally, a race was available that
we might have failed at recovering from.  Instead, I've replaced the logic
with new stuff that should be more robust and not rely on all the parties in
userland following the same IRQ_EMIT() == 1 protocol.  Also, in a radical
departure from past efforts, include a long comment describing the failure
modes and how we're working around them.

Thanks to haihao for catching the original issue.
2008-09-23 17:10:04 -07:00
Eric Anholt 1b3abe62b5 intel: Do strerror on errno, not on the -1 return value from ioctl. 2008-09-23 17:10:04 -07:00
Xiang, Haihao 3949f3c9ea intel: Fix driver-supplied argument to exec function (fd.o bug #17653). 2008-09-22 10:16:19 +08:00
Eric Anholt 368b392e6d intel: don't forget to include config.h in bufmgr code.
Thanks to airlied for catching this.
2008-09-10 14:07:19 -07:00
Eric Anholt f9d98beefc intel: move drm calls to exec buffers to libdrm_intel.
This avoids duplicating the effort in 3 places.  Also, added emit/wait fence
callbacks back in bufmgr_fake since we need it for non-drm 2d.  Sigh.
2008-09-10 14:07:18 -07:00
Eric Anholt 869d8bebed intel: Move IRQ emit/wait from callbacks into the bufmgr.
In the process, work around the glaring bugs of the kernel irq wait function.
2008-09-10 14:07:18 -07:00
Eric Anholt 738e36acbc Move intel libdrm stuff to libdrm_intel.so
dri_bufmgr.h is replaced by intel_bufmgr.h, and several functions are renamed,
though the structures and many functions remain dri_bufmgr_* and dri_bo_*
2008-09-10 14:07:18 -07:00
Kristian Høgsberg 0239594fc3 [intel_bufmgr_gem] Remember global name when creating buffer from name. 2008-08-26 14:28:25 -04:00
Dave Airlie 2d4420c666 Merge branch 'radeon-gem-cs' into modesetting-gem
Conflicts:

	libdrm/xf86drm.c
	linux-core/Makefile.kernel
	linux-core/drmP.h
	linux-core/drm_compat.h
	linux-core/drm_drv.c
	linux-core/drm_stub.c
	linux-core/drm_vm.c
	shared-core/i915_dma.c
	shared-core/r300_cmdbuf.c
	shared-core/radeon_drv.h
2008-08-14 09:36:34 +10:00
Jesse Barnes 2f03ba4aad Merge branch 'master' into modesetting-gem
Conflicts:

	libdrm/Makefile.am
	libdrm/xf86drm.h
	shared-core/i915_dma.c
	shared-core/i915_irq.c
2008-08-13 10:08:02 -07:00
Kristian Høgsberg b0e6882946 [intel_bufmgr_gem] Fix flink buffer name caching (#17085, #17092).
Store the global name in global_name, don't overwrite the gem_handle.
2008-08-12 22:22:55 -04:00
Jesse Barnes e9648e9107 Export a generic dri_bo handle for use by clients
We'll need something like this (either a handle field or a dri_bo_get_handle
function) for kernel mode setting to get at the handles.
2008-08-12 18:22:34 -07:00
Matthieu Herrb 966c783e96 libdrm: Allow build outside of source tree. 2008-08-11 10:48:47 -07:00
Eric Anholt f7a9940715 Drop TTM interfaces from the userland library. 2008-08-08 15:57:47 -07:00
Eric Anholt 9e9d9b1741 Fix compile warning from check_aperture change. 2008-08-08 14:08:43 -07:00
Eric Anholt 46e9274e85 Replace the check_aperture API with one we can make thread-safe.
While the bufmgr isn't thread-safe at the moment, we need it to be for shared
objects between contexts.
2008-08-08 13:58:29 -07:00
Keith Packard 5968e061db Make flink save the kernel-assigned name and return it instead of creating another name 2008-08-07 15:26:30 -07:00
Keith Packard 8e41ce17b4 Expose pin/unpin/set_tiling/flink APIs 2008-08-04 23:34:16 -07:00
Dave Airlie d2d7f3069d drm: userspace rip out TTM API 2008-07-31 13:31:30 +10:00
Keith Packard 5540457fa5 [intel-gem] Use I915_GEM_DOMAIN_GTT in dri_gem_bo_wait_rendering.
I915_GEM_DOMAIN_CPU is very expensive to wait for -- it generally requires
clflushing the frame buffer.
2008-06-24 09:52:27 -07:00
Keith Packard 52e5d24fae [intel-gem] Add DRM_IOCTL_I915_GEM_SW_FINISH to flag CPU writes
When a software fallback has completed, usermode must notify the kernel so
that any scanout buffers can be synchronized. This ioctl should be called
whenever a fallback completes to flush CPU and chipset caches.
2008-06-20 00:21:57 -07:00
Eric Anholt e558e1d7da [gem] Catch -EINTR from blocking ioctls and restart them.
Thanks to Thomas Hellstrom for catching the issue, no thanks to the kernel
developer who authoritatively told me that they would get restarted on their
own.
2008-06-13 10:04:14 -07:00
Eric Anholt 57b4c4c32d Move the renaming of mm.c symbols to #defines in the header.
This reduces the diff from Mesa and reduces the illegibility of what I did.
2008-06-11 15:58:33 -07:00
Eric Anholt 2655005762 [gem] Move potentially device-specific ioctls to the intel driver.
This is the create (may want location flags), pread/pwrite/mmap
(performance tuning hints), and set_domain (will 32 bits be enough for
everyone?) ioctls.  Left in the generic set are just flink/open/close.

The 2D driver must be updated for this change, and API but not ABI is broken
for 3D.  The driver version is bumped to mark this.
2008-06-11 14:42:40 -07:00
Eric Anholt 500c81d194 [gem] Don't forget to munmap in the non-bo-reuse object-freeing case. 2008-06-06 17:13:16 -07:00
Keith Packard 329e086225 [libdrm/intel] Eliminate extra dri_gem_bo_bucket_entry structure
Place the buffer reuse links right into the dri_bo_gem object.
2008-06-06 13:00:46 -07:00
Keith Packard 5a55b48a41 [libdrm/intel] Remove unused intel_validate_entry structure 2008-06-06 13:00:46 -07:00
Keith Packard a919ff5d5e [libdrm/intel] Reuse entire dri_bo_gem structure
The code was discarding the dri_bo_gem structure and saving only the kernel
handle. This lost the mmap address, causing pain when the next buffer user
wanted to map the buffer.
2008-06-06 13:00:46 -07:00
Eric Anholt d198e9b091 Add a function to bufmgr_fake to evict all buffers in the GTT.
This will be used by the X Server for VT switch.
2008-06-05 08:45:39 -07:00
Eric Anholt c4857429c7 Fix and hook up bufmgr code to the build. 2008-06-03 14:44:53 -07:00
Eric Anholt 6a9eb08a87 Import bufmgr code to libdrm. Not yet hooked up to the build. 2008-06-03 14:44:53 -07:00