ChangeLog | 245 +++++++++++++++++++ configure.ac | 2 debian/changelog | 27 ++ debian/compat | 2 debian/libdrm-nouveau1.lintian-overrides | 1 debian/libdrm-nouveau1.symbols | 90 +++---- debian/patches/03_intel_limit_tiled_pitches.patch | 64 ---- debian/patches/series | 1 debian/rules | 3 include/drm/drm.h | 4 include/drm/drm_mode.h | 4 include/drm/i915_drm.h | 4 include/drm/nouveau_drm.h | 1 include/drm/radeon_drm.h | 4 include/drm/vmwgfx_drm.h | 69 +++++ intel/intel_bufmgr.h | 6 intel/intel_bufmgr_gem.c | 282 +++++++++++----------- nouveau/nouveau_device.c | 21 - tests/modetest/modetest.c | 96 +++---- xf86drm.c | 30 +- xf86drmMode.c | 44 +-- 21 files changed, 658 insertions(+), 342 deletions(-)
New commits: commit 24c39b93e1b84a6640d4114bfd54d7f07ee0ede0 Author: Robert Hooker <sarv...@ubuntu.com> Date: Fri Oct 15 21:12:21 2010 -0400 Update debian/changelog. diff --git a/debian/changelog b/debian/changelog index 00458e5..72d8c77 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +libdrm (2.4.22-1ubuntu1) natty; urgency=low + + * Merge from debian experimental. Remaining Ubuntu changes: + - Enable libdrm-intel for ports architectures until plymouth is fixed to + not need it unconditionally. + - Move runtime libraries to /lib for plymouth. + + -- Robert Hooker <robert.hoo...@canonical.com> Fri, 15 Oct 2010 21:08:44 -0400 + libdrm (2.4.22-1) experimental; urgency=low [ Sven Joachim ] commit 4fd296a8e2be17e23846251a4fc35d458d9ed06b Author: Robert Hooker <sarv...@ubuntu.com> Date: Fri Oct 15 21:08:39 2010 -0400 Drop 03_intel_limit_tiled_pitches.patch (upstream) diff --git a/debian/patches/03_intel_limit_tiled_pitches.patch b/debian/patches/03_intel_limit_tiled_pitches.patch deleted file mode 100644 index 3e81ff0..0000000 --- a/debian/patches/03_intel_limit_tiled_pitches.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 726210f87d558d558022f35bc8c839e798a19f0c Mon Sep 17 00:00:00 2001 -From: Chris Wilson <ch...@chris-wilson.co.uk> -Date: Thu, 24 Jun 2010 10:38:00 +0000 -Subject: intel: Limit tiled pitches to 8192 on pre-i965. - -Fixes: - - Bug 28515 - Failed to allocate framebuffer when exceed 2048 width - https://bugs.freedesktop.org/show_bug.cgi?id=28515 - -Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> ---- -diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c -index a1a0806..26dc334 100644 ---- a/intel/intel_bufmgr_gem.c -+++ b/intel/intel_bufmgr_gem.c -@@ -254,7 +254,7 @@ drm_intel_gem_bo_tile_size(drm_intel_bufmgr_gem *bufmgr_gem, unsigned long size, - */ - static unsigned long - drm_intel_gem_bo_tile_pitch(drm_intel_bufmgr_gem *bufmgr_gem, -- unsigned long pitch, uint32_t tiling_mode) -+ unsigned long pitch, uint32_t *tiling_mode) - { - unsigned long tile_width; - unsigned long i; -@@ -262,10 +262,10 @@ drm_intel_gem_bo_tile_pitch(drm_intel_bufmgr_gem *bufmgr_gem, - /* If untiled, then just align it so that we can do rendering - * to it with the 3D engine. - */ -- if (tiling_mode == I915_TILING_NONE) -+ if (*tiling_mode == I915_TILING_NONE) - return ALIGN(pitch, 64); - -- if (tiling_mode == I915_TILING_X) -+ if (*tiling_mode == I915_TILING_X) - tile_width = 512; - else - tile_width = 128; -@@ -274,6 +274,14 @@ drm_intel_gem_bo_tile_pitch(drm_intel_bufmgr_gem *bufmgr_gem, - if (bufmgr_gem->gen >= 4) - return ROUND_UP_TO(pitch, tile_width); - -+ /* The older hardware has a maximum pitch of 8192 with tiled -+ * surfaces, so fallback to untiled if it's too large. -+ */ -+ if (pitch > 8192) { -+ *tiling_mode = I915_TILING_NONE; -+ return ALIGN(pitch, 64); -+ } -+ - /* Pre-965 needs power of two tile width */ - for (i = tile_width; i < pitch; i <<= 1) - ; -@@ -738,7 +746,7 @@ drm_intel_gem_bo_alloc_tiled(drm_intel_bufmgr *bufmgr, const char *name, - aligned_y = ALIGN(y, 32); - - stride = x * cpp; -- stride = drm_intel_gem_bo_tile_pitch(bufmgr_gem, stride, tiling); -+ stride = drm_intel_gem_bo_tile_pitch(bufmgr_gem, stride, tiling_mode); - size = stride * aligned_y; - size = drm_intel_gem_bo_tile_size(bufmgr_gem, size, tiling_mode); - } while (*tiling_mode != tiling); --- -cgit v0.8.3-6-g21f6 diff --git a/debian/patches/series b/debian/patches/series index 895d177..e23f0b1 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,3 +1,2 @@ 01_default_perms.diff 02_build_libkms_against_in_tree_drm.diff -03_intel_limit_tiled_pitches.patch commit b6edb32cd66c8c06e1e8f3a25a5e15447ae513e0 Author: Cyril Brulebois <k...@debian.org> Date: Sat Oct 2 00:41:16 2010 +0200 Upload to experimental. diff --git a/debian/changelog b/debian/changelog index 1f4f3c1..3f87190 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,9 @@ -libdrm (2.4.22-1) UNRELEASED; urgency=low +libdrm (2.4.22-1) experimental; urgency=low + [ Sven Joachim ] * New upstream release. - -- Sven Joachim <svenj...@gmx.de> Wed, 29 Sep 2010 08:57:51 +0200 + -- Cyril Brulebois <k...@debian.org> Sat, 02 Oct 2010 00:41:05 +0200 libdrm (2.4.21-2) experimental; urgency=low commit 55eca8de3790c3d67f6e05da3001c2aa0da5aca7 Author: Sven Joachim <svenj...@gmx.de> Date: Wed Sep 29 08:59:48 2010 +0200 Bump changelogs diff --git a/ChangeLog b/ChangeLog index d5a1664..3ae6795 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,248 @@ +commit 624e58e3e43c0b2c6803cb9263863444abeb3acb +Author: Carl Worth <cwo...@cworth.org> +Date: Tue Sep 28 20:40:37 2010 -0700 + + Increment version to 2.4.22 + + For the upcoming 2.4.22 release. + +commit 6299722c478234a759b1ce748436197ca1a17ebf +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Sat Sep 25 21:32:59 2010 +0100 + + intel: Replace open-coded drmIoctl with calls to drmIoctl() + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +commit 81fa7a9f56b1efb04658db921e5228c102548921 +Author: Ben Skeggs <bske...@redhat.com> +Date: Tue Sep 21 13:02:07 2010 +1000 + + nouveau: fix drm version check some more + + ... and make a mental note to not push commits before having coffee + + Signed-off-by: Ben Skeggs <bske...@redhat.com> + +commit d1cec6d2a9d63411c70c6c37509129ea4afe07d8 +Author: Ben Skeggs <bske...@redhat.com> +Date: Mon Sep 20 08:07:28 2010 +1000 + + nouveau: fix thinko in drm version check + + Signed-off-by: Ben Skeggs <bske...@redhat.com> + +commit 7ec9a1effa4f551897f91f3b017723a8adf011d9 +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Thu Sep 9 18:52:28 2010 +0100 + + modetest: Fix drawing routines to use stride. + +commit 0da84f89c2cb25416bd3bdecae24f287b08cdb76 +Author: Jesse Barnes <jbar...@virtuousgeek.org> +Date: Thu Sep 9 10:27:22 2010 -0700 + + modetest: align fb pitch to 64 bytes + + Docs say this is necessary, and the kernel now enforces this. + +commit b8abe6139e5c6779ee87d983346f0f65bf67462e +Author: Jesse Barnes <jbar...@virtuousgeek.org> +Date: Tue Sep 7 13:10:15 2010 -0700 + + modetest: add edp and TV connector names to the connector name array + +commit 23287f05cf2443ddf9e028e29beb5bd30979c6cf +Author: Eric Anholt <e...@anholt.net> +Date: Thu Aug 26 15:39:28 2010 -0700 + + Avoid use of c++ reserved keyword "virtual" when using a C++ compiler. + + Avoids requiring nasty hacks around libdrm headers in the new C++ + parts of Mesa drivers. + +commit 8a76244a0fd09d0e3298fe68af812d7eaa4dbcb5 +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Tue Aug 24 21:29:31 2010 +0100 + + Free the property blob along the error path. + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +commit b61e81a191d3a5c269c5f7c40199aebc9ebc034c +Author: Ben Skeggs <bske...@redhat.com> +Date: Wed Aug 18 12:06:48 2010 +1000 + + nouveau: accept both 0.0.16 and 1.x.x + + Signed-off-by: Ben Skeggs <bske...@redhat.com> + +commit b04515c5d6c95f573457a94267b855cceb639105 +Author: Benjamin Herrenschmidt <b...@kernel.crashing.org> +Date: Fri Aug 6 13:55:11 2010 +1000 + + libdrm: Fix PCI domain domain support + + This works in conjunction with newer kernels. If we succeed in requesting + interface 1.4, the we know the kernel provides proper domain numbers. If + not, ignore the domain number as it's bogus (except on Alpha). + + Signed-off-by: Benjamin Herrenschmidt <b...@kernel.crashing.org> + Signed-off-by: Adam Jackson <a...@redhat.com> + +commit 431f7f00db844534dbcf9a63da0d2832a3d91bff +Author: Dave Airlie <airl...@redhat.com> +Date: Wed Aug 4 08:41:23 2010 +1000 + + Copy headers from kernel drm-core-next + +commit b803918f3f77c62edf22e78cb2095be399753423 +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Thu Jul 1 22:38:54 2010 +0100 + + drm mode: Return -errno on drmIoctl() failure + + The high layers expect to receive a status code on error (on the + pessimistic assumption that the errno value will have been overwritten + by the time the failure is propagated all the way up), so convert + xf86drmMode.c to return -errno on an ioctl error and be consistent with + the rest of the libdrm API. + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +commit c570b4b97b8ff71da9294aaf8242ed665f0c09c3 +Author: Fernando Carrijo <fcarr...@yahoo.com.br> +Date: Thu Jul 1 09:28:29 2010 -0700 + + Purge macro NEED_REPLIES + + Signed-off-by: Fernando Carrijo <fcarr...@yahoo.com.br> + Signed-off-by: Brian Paul <bri...@vmware.com> + +commit c3ddfea1a64b7aaaebfb429243c71feb0801da9d +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Tue Jun 29 20:12:44 2010 +0100 + + intel: Suppress the error return from setting domains after mapping. + + If the mapping succeeds we have a valid pointer. If setting the domain + failures we may incur cache corruption. However the usual failure mode + is because of a hung GPU, in which case it is preferable to ignore the + minor error from setting the domain and continue on oblivious. If + these errors persist, we should rate limit the warning [or even just + remove it]. + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +commit 726210f87d558d558022f35bc8c839e798a19f0c +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Thu Jun 24 11:38:00 2010 +0100 + + intel: Limit tiled pitches to 8192 on pre-i965. + + Fixes: + + Bug 28515 - Failed to allocate framebuffer when exceed 2048 width + https://bugs.freedesktop.org/show_bug.cgi?id=28515 + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +commit 6ea2bda5f5ec8f27359760ce580fdad3df0464df +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Tue Jun 22 13:03:52 2010 +0100 + + intel: Only adjust the local stride used for SET_TILING in tiled alloc + + Mesa uses the returned pitch from alloc_tiled, so make sure that we set + it correctly before modifying the stride used for the SET_TILING call. + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +commit aba3502190a5bd2203e71ae2b1b7dd5aeb223905 +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Tue Jun 22 13:00:22 2010 +0100 + + intel: Restore SET_TILING for non-flinked bo. + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +commit c7bbaca6a376f40d914d1ed33e119f2330701c9a +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Tue Jun 22 11:15:56 2010 +0100 + + intel: '===' != '==' + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +commit cd34cbeb9f5c65b25d241700f27c16b36e1ecce6 +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Tue Jun 22 11:07:26 2010 +0100 + + intel: Sanitise strides for linear buffers and SET_TILING + + Ensure that the user doesn't attempt to specify a stride to use with a + linear buffer by forcing such to be zero. + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +commit 13e8270504cffa96bd067dc5c792a79555e8b2d4 +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Mon Jun 21 15:38:06 2010 +0100 + + intel: Print out debugging message following ENOSPC + + execbuffer() returns ENOSPC if it cannot fit the batch buffer into the + aperture which is the error we want to diagnose here. + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +commit f16b4164d686893949daa3217a011d21c5bd7f95 +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Mon Jun 21 15:21:48 2010 +0100 + + intel: Scan the cache for old bo once every second. + + Rearrange the cache cleanup so that we always scan following a final + unreference, and guard against multiple scans in a single second. + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +commit 5eec286838118501dd79178c152000ad4cbd70e1 +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Mon Jun 21 14:20:56 2010 +0100 + + intel: Force stride to be 0 for I915_TILING_NONE. + + When allocating a tiled buffer, if we remove the desired tiling mode due + to it being beyond hardware limits, also remove the stride. This ensures + that we only ever use stride 0 with I915_TILING_NONE. + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +commit 1db22ff741f92b84450ec13093e070a6ad5fc857 +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Mon Jun 21 14:27:23 2010 +0100 + + intel: Defer tiling change to allocation. + + As we now expose a method to allocate tiled buffers, it makes more sense + to defer the SET_TILING until required. Besides the slim chance that it + will be a no-op, by delaying the change we are less likely to stall on + waiting for a bound buffer to release a fence register. + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +commit 056aa9be04e923a45ca00924caa587d6dbf8821d +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Mon Jun 21 14:31:29 2010 +0100 + + intel: Track tiling stride + + We need to inform the kernel if the tiling stride changes and not only + for changes of the tiling mode. + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + commit 65ec8d7699267cc59777d531f545a82a14341480 Author: Eric Anholt <e...@anholt.net> Date: Thu Jun 10 08:59:05 2010 -0700 diff --git a/debian/changelog b/debian/changelog index a9a9d1f..1f4f3c1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +libdrm (2.4.22-1) UNRELEASED; urgency=low + + * New upstream release. + + -- Sven Joachim <svenj...@gmx.de> Wed, 29 Sep 2010 08:57:51 +0200 + libdrm (2.4.21-2) experimental; urgency=low [ Sven Joachim ] commit 624e58e3e43c0b2c6803cb9263863444abeb3acb Author: Carl Worth <cwo...@cworth.org> Date: Tue Sep 28 20:40:37 2010 -0700 Increment version to 2.4.22 For the upcoming 2.4.22 release. diff --git a/configure.ac b/configure.ac index 62db817..179f29f 100644 --- a/configure.ac +++ b/configure.ac @@ -19,7 +19,7 @@ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. AC_PREREQ(2.60) -AC_INIT([libdrm], 2.4.21, [dri-de...@lists.sourceforge.net], libdrm) +AC_INIT([libdrm], 2.4.22, [dri-de...@lists.sourceforge.net], libdrm) AC_USE_SYSTEM_EXTENSIONS AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([dist-bzip2]) commit 6299722c478234a759b1ce748436197ca1a17ebf Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Sat Sep 25 21:32:59 2010 +0100 intel: Replace open-coded drmIoctl with calls to drmIoctl() Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c index 3446390..968cb78 100644 --- a/intel/intel_bufmgr_gem.c +++ b/intel/intel_bufmgr_gem.c @@ -507,9 +507,7 @@ drm_intel_gem_bo_busy(drm_intel_bo *bo) memset(&busy, 0, sizeof(busy)); busy.handle = bo_gem->gem_handle; - do { - ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_BUSY, &busy); - } while (ret == -1 && errno == EINTR); + ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_BUSY, &busy); return (ret == 0 && busy.busy); } @@ -523,7 +521,7 @@ drm_intel_gem_bo_madvise_internal(drm_intel_bufmgr_gem *bufmgr_gem, madv.handle = bo_gem->gem_handle; madv.madv = state; madv.retained = 1; - ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_MADVISE, &madv); + drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_MADVISE, &madv); return madv.retained; } @@ -650,11 +648,9 @@ retry: memset(&create, 0, sizeof(create)); create.size = bo_size; - do { - ret = ioctl(bufmgr_gem->fd, - DRM_IOCTL_I915_GEM_CREATE, - &create); - } while (ret == -1 && errno == EINTR); + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_I915_GEM_CREATE, + &create); bo_gem->gem_handle = create.handle; bo_gem->bo.handle = bo_gem->gem_handle; if (ret != 0) { @@ -782,11 +778,9 @@ drm_intel_bo_gem_create_from_name(drm_intel_bufmgr *bufmgr, memset(&open_arg, 0, sizeof(open_arg)); open_arg.name = handle; - do { - ret = ioctl(bufmgr_gem->fd, - DRM_IOCTL_GEM_OPEN, - &open_arg); - } while (ret == -1 && errno == EINTR); + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_GEM_OPEN, + &open_arg); if (ret != 0) { fprintf(stderr, "Couldn't reference %s handle 0x%08x: %s\n", name, handle, strerror(errno)); @@ -806,7 +800,9 @@ drm_intel_bo_gem_create_from_name(drm_intel_bufmgr *bufmgr, memset(&get_tiling, 0, sizeof(get_tiling)); get_tiling.handle = bo_gem->gem_handle; - ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_GET_TILING, &get_tiling); + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_I915_GEM_GET_TILING, + &get_tiling); if (ret != 0) { drm_intel_gem_bo_unreference(&bo_gem->bo); return NULL; @@ -837,7 +833,7 @@ drm_intel_gem_bo_free(drm_intel_bo *bo) /* Close this object */ memset(&close, 0, sizeof(close)); close.handle = bo_gem->gem_handle; - ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_GEM_CLOSE, &close); + ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_GEM_CLOSE, &close); if (ret != 0) { fprintf(stderr, "DRM_IOCTL_GEM_CLOSE %d failed (%s): %s\n", @@ -974,11 +970,9 @@ static int drm_intel_gem_bo_map(drm_intel_bo *bo, int write_enable) mmap_arg.handle = bo_gem->gem_handle; mmap_arg.offset = 0; mmap_arg.size = bo->size; - do { - ret = ioctl(bufmgr_gem->fd, - DRM_IOCTL_I915_GEM_MMAP, - &mmap_arg); - } while (ret == -1 && errno == EINTR); + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_I915_GEM_MMAP, + &mmap_arg); if (ret != 0) { ret = -errno; fprintf(stderr, @@ -1000,11 +994,9 @@ static int drm_intel_gem_bo_map(drm_intel_bo *bo, int write_enable) set_domain.write_domain = I915_GEM_DOMAIN_CPU; else set_domain.write_domain = 0; - do { - ret = ioctl(bufmgr_gem->fd, - DRM_IOCTL_I915_GEM_SET_DOMAIN, - &set_domain); - } while (ret == -1 && errno == EINTR); + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_I915_GEM_SET_DOMAIN, + &set_domain); if (ret != 0) { fprintf(stderr, "%s:%d: Error setting to CPU domain %d: %s\n", __FILE__, __LINE__, bo_gem->gem_handle, @@ -1036,11 +1028,9 @@ int drm_intel_gem_bo_map_gtt(drm_intel_bo *bo) mmap_arg.handle = bo_gem->gem_handle; /* Get the fake offset back... */ - do { - ret = ioctl(bufmgr_gem->fd, - DRM_IOCTL_I915_GEM_MMAP_GTT, - &mmap_arg); - } while (ret == -1 && errno == EINTR); + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_I915_GEM_MMAP_GTT, + &mmap_arg); if (ret != 0) { ret = -errno; fprintf(stderr, @@ -1078,11 +1068,9 @@ int drm_intel_gem_bo_map_gtt(drm_intel_bo *bo) set_domain.handle = bo_gem->gem_handle; set_domain.read_domains = I915_GEM_DOMAIN_GTT; set_domain.write_domain = I915_GEM_DOMAIN_GTT; - do { - ret = ioctl(bufmgr_gem->fd, - DRM_IOCTL_I915_GEM_SET_DOMAIN, - &set_domain); - } while (ret == -1 && errno == EINTR); + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_I915_GEM_SET_DOMAIN, + &set_domain); if (ret != 0) { fprintf(stderr, "%s:%d: Error setting domain %d: %s\n", __FILE__, __LINE__, bo_gem->gem_handle, @@ -1130,11 +1118,9 @@ static int drm_intel_gem_bo_unmap(drm_intel_bo *bo) * results show up in a timely manner. */ sw_finish.handle = bo_gem->gem_handle; - do { - ret = ioctl(bufmgr_gem->fd, - DRM_IOCTL_I915_GEM_SW_FINISH, - &sw_finish); - } while (ret == -1 && errno == EINTR); + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_I915_GEM_SW_FINISH, + &sw_finish); ret = ret == -1 ? -errno : 0; bo->virtual = NULL; @@ -1157,11 +1143,9 @@ drm_intel_gem_bo_subdata(drm_intel_bo *bo, unsigned long offset, pwrite.offset = offset; pwrite.size = size; pwrite.data_ptr = (uint64_t) (uintptr_t) data; - do { - ret = ioctl(bufmgr_gem->fd, - DRM_IOCTL_I915_GEM_PWRITE, - &pwrite); - } while (ret == -1 && errno == EINTR); + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_I915_GEM_PWRITE, + &pwrite); if (ret != 0) { ret = -errno; fprintf(stderr, @@ -1181,8 +1165,9 @@ drm_intel_gem_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, int crtc_id) int ret; get_pipe_from_crtc_id.crtc_id = crtc_id; - ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID, - &get_pipe_from_crtc_id); + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID, + &get_pipe_from_crtc_id); if (ret != 0) { /* We return -1 here to signal that we don't * know which pipe is associated with this crtc. @@ -1210,11 +1195,9 @@ drm_intel_gem_bo_get_subdata(drm_intel_bo *bo, unsigned long offset, pread.offset = offset; pread.size = size; pread.data_ptr = (uint64_t) (uintptr_t) data; - do { - ret = ioctl(bufmgr_gem->fd, - DRM_IOCTL_I915_GEM_PREAD, - &pread); - } while (ret == -1 && errno == EINTR); + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_I915_GEM_PREAD, + &pread); if (ret != 0) { ret = -errno; fprintf(stderr, @@ -1251,11 +1234,9 @@ drm_intel_gem_bo_start_gtt_access(drm_intel_bo *bo, int write_enable) set_domain.handle = bo_gem->gem_handle; set_domain.read_domains = I915_GEM_DOMAIN_GTT; set_domain.write_domain = write_enable ? I915_GEM_DOMAIN_GTT : 0; - do { - ret = ioctl(bufmgr_gem->fd, - DRM_IOCTL_I915_GEM_SET_DOMAIN, - &set_domain); - } while (ret == -1 && errno == EINTR); + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_I915_GEM_SET_DOMAIN, + &set_domain); if (ret != 0) { fprintf(stderr, "%s:%d: Error setting memory domains %d (%08x %08x): %s .\n", @@ -1526,12 +1507,9 @@ drm_intel_gem_bo_exec(drm_intel_bo *bo, int used, execbuf.DR1 = 0; execbuf.DR4 = DR4; - do { - ret = ioctl(bufmgr_gem->fd, - DRM_IOCTL_I915_GEM_EXECBUFFER, - &execbuf); - } while (ret != 0 && errno == EINTR); - + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_I915_GEM_EXECBUFFER, + &execbuf); if (ret != 0) { ret = -errno; if (errno == ENOSPC) { @@ -1599,11 +1577,9 @@ drm_intel_gem_bo_mrb_exec2(drm_intel_bo *bo, int used, execbuf.rsvd1 = 0; execbuf.rsvd2 = 0; - do { - ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, - &execbuf); - } while (ret != 0 && errno == EINTR); - + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_I915_GEM_EXECBUFFER2, + &execbuf); if (ret != 0) { ret = -errno; if (ret == -ENOSPC) { @@ -1658,12 +1634,9 @@ drm_intel_gem_bo_pin(drm_intel_bo *bo, uint32_t alignment) pin.handle = bo_gem->gem_handle; pin.alignment = alignment; - do { - ret = ioctl(bufmgr_gem->fd, - DRM_IOCTL_I915_GEM_PIN, - &pin); - } while (ret == -1 && errno == EINTR); - + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_I915_GEM_PIN, + &pin); if (ret != 0) return -errno; @@ -1682,7 +1655,7 @@ drm_intel_gem_bo_unpin(drm_intel_bo *bo) memset(&unpin, 0, sizeof(unpin)); unpin.handle = bo_gem->gem_handle; - ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_UNPIN, &unpin); + ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_UNPIN, &unpin); if (ret != 0) return -errno; @@ -1706,6 +1679,10 @@ drm_intel_gem_bo_set_tiling_internal(drm_intel_bo *bo, memset(&set_tiling, 0, sizeof(set_tiling)); do { + /* set_tiling is slightly broken and overwrites the + * input on the error path, so we have to open code + * rmIoctl. + */ set_tiling.handle = bo_gem->gem_handle; set_tiling.tiling_mode = tiling_mode; set_tiling.stride = stride; @@ -1713,7 +1690,7 @@ drm_intel_gem_bo_set_tiling_internal(drm_intel_bo *bo, ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_SET_TILING, &set_tiling); - } while (ret == -1 && errno == EINTR); + } while (ret == -1 && (errno == EINTR || errno == EAGAIN)); if (ret == -1) return -errno; @@ -1768,7 +1745,7 @@ drm_intel_gem_bo_flink(drm_intel_bo *bo, uint32_t * name) memset(&flink, 0, sizeof(flink)); flink.handle = bo_gem->gem_handle; - ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_GEM_FLINK, &flink); + ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_GEM_FLINK, &flink); if (ret != 0) return -errno; bo_gem->global_name = flink.name; @@ -2099,7 +2076,9 @@ drm_intel_bufmgr_gem_init(int fd, int batch_size) return NULL; } - ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_GET_APERTURE, &aperture); + ret = drmIoctl(bufmgr_gem->fd, + DRM_IOCTL_I915_GEM_GET_APERTURE, + &aperture); if (ret == 0) bufmgr_gem->gtt_size = aperture.aper_available_size; @@ -2115,7 +2094,7 @@ drm_intel_bufmgr_gem_init(int fd, int batch_size) gp.param = I915_PARAM_CHIPSET_ID; gp.value = &bufmgr_gem->pci_device; - ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp); + ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp); if (ret) { fprintf(stderr, "get chip id failed: %d [%d]\n", ret, errno); fprintf(stderr, "param: %d, val: %d\n", gp.param, *gp.value); @@ -2131,19 +2110,19 @@ drm_intel_bufmgr_gem_init(int fd, int batch_size) bufmgr_gem->gen = 6; gp.param = I915_PARAM_HAS_EXECBUF2; - ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp); + ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp); if (!ret) exec2 = 1; gp.param = I915_PARAM_HAS_BSD; - ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp); + ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp); if (!ret) has_bsd = 1; if (bufmgr_gem->gen < 4) { gp.param = I915_PARAM_NUM_FENCES_AVAIL; gp.value = &bufmgr_gem->available_fences; - ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp); + ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp); if (ret) { fprintf(stderr, "get fences failed: %d [%d]\n", ret, errno); commit 81fa7a9f56b1efb04658db921e5228c102548921 Author: Ben Skeggs <bske...@redhat.com> Date: Tue Sep 21 13:02:07 2010 +1000 nouveau: fix drm version check some more ... and make a mental note to not push commits before having coffee Signed-off-by: Ben Skeggs <bske...@redhat.com> diff --git a/nouveau/nouveau_device.c b/nouveau/nouveau_device.c index 91f9a27..9a091fb 100644 --- a/nouveau/nouveau_device.c +++ b/nouveau/nouveau_device.c @@ -49,7 +49,7 @@ nouveau_device_open_existing(struct nouveau_device **dev, int close, if (!ver) return -EINVAL; - if ((ver->version_major == 0 && ver->version_patchlevel != 16) && + if ((ver->version_major == 0 && ver->version_patchlevel != 16) || ver->version_major > 1) { nouveau_device_close((void *)&nvdev); return -EINVAL; commit d1cec6d2a9d63411c70c6c37509129ea4afe07d8 Author: Ben Skeggs <bske...@redhat.com> Date: Mon Sep 20 08:07:28 2010 +1000 nouveau: fix thinko in drm version check Signed-off-by: Ben Skeggs <bske...@redhat.com> diff --git a/nouveau/nouveau_device.c b/nouveau/nouveau_device.c index f450e30..91f9a27 100644 --- a/nouveau/nouveau_device.c +++ b/nouveau/nouveau_device.c @@ -50,7 +50,7 @@ nouveau_device_open_existing(struct nouveau_device **dev, int close, return -EINVAL; if ((ver->version_major == 0 && ver->version_patchlevel != 16) && - ver->version_major != 1) { + ver->version_major > 1) { nouveau_device_close((void *)&nvdev); return -EINVAL; } commit 7ec9a1effa4f551897f91f3b017723a8adf011d9 Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Thu Sep 9 18:52:28 2010 +0100 modetest: Fix drawing routines to use stride. diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c index 820f8a5..f3a04d0 100644 --- a/tests/modetest/modetest.c +++ b/tests/modetest/modetest.c @@ -354,37 +354,40 @@ connector_find_mode(struct connector *c) c->crtc = c->encoder->crtc_id; } -#ifdef HAVE_CAIRO +static drm_intel_bo * +allocate_buffer(drm_intel_bufmgr *bufmgr, + int width, int height, int *stride) +{ + int size; -static int -create_test_buffer(drm_intel_bufmgr *bufmgr, - int width, int height, int *stride_out, drm_intel_bo **bo_out) + /* Scan-out has a 64 byte alignment restriction */ + size = (width + 63) & -64; + *stride = size; + size *= height; + + return drm_intel_bo_alloc(bufmgr, "frontbuffer", size, 0); +} + +static void +make_pwetty(drm_intel_bo *bo, int width, int height, int stride) { - drm_intel_bo *bo; - unsigned int *fb_ptr; - int size, i, stride; - div_t d; +#ifdef HAVE_CAIRO cairo_surface_t *surface; cairo_t *cr; - char buf[64]; int x, y; - surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height); - stride = cairo_image_surface_get_stride(surface); - size = stride * height; - fb_ptr = (unsigned int *) cairo_image_surface_get_data(surface); - - /* paint the buffer with colored tiles */ - for (i = 0; i < width * height; i++) { - d = div(i, width); - fb_ptr[i] = 0x00130502 * (d.quot >> 6) + 0x000a1120 * (d.rem >> 6); - } - + surface = cairo_image_surface_create_for_data(bo->virtual, + CAIRO_FORMAT_ARGB32, + width, height, + stride); cr = cairo_create(surface); + cairo_surface_destroy(surface); + cairo_set_line_cap(cr, CAIRO_LINE_CAP_SQUARE); for (x = 0; x < width; x += 250) for (y = 0; y < height; y += 250) { - cairo_set_operator(cr, CAIRO_OPERATOR_OVER); + char buf[64]; + cairo_move_to(cr, x, y - 20); cairo_line_to(cr, x, y + 20); cairo_move_to(cr, x - 20, y); @@ -397,6 +400,7 @@ create_test_buffer(drm_intel_bufmgr *bufmgr, cairo_set_source_rgb(cr, 1, 1, 1); cairo_set_line_width(cr, 2); cairo_stroke(cr); + snprintf(buf, sizeof buf, "%d, %d", x, y); cairo_move_to(cr, x + 20, y + 20); cairo_text_path(cr, buf); @@ -407,41 +411,17 @@ create_test_buffer(drm_intel_bufmgr *bufmgr, } cairo_destroy(cr); - - bo = drm_intel_bo_alloc(bufmgr, "frontbuffer", size, 4096); - if (!bo) { - fprintf(stderr, "failed to alloc buffer: %s\n", - strerror(errno)); - return -1; - } - - drm_intel_bo_subdata(bo, 0, size, fb_ptr); - - cairo_surface_destroy(surface); - - *bo_out = bo; - *stride_out = stride; - - return 0; +#endif } -#else - static int create_test_buffer(drm_intel_bufmgr *bufmgr, int width, int height, int *stride_out, drm_intel_bo **bo_out) { drm_intel_bo *bo; - unsigned int *fb_ptr; - int size, ret, i, stride; - div_t d; + int ret, i, j, stride; - /* Mode size at 32 bpp */ - stride = width * 4; - stride = (stride + 63) & ~63; - size = stride * height; - - bo = drm_intel_bo_alloc(bufmgr, "frontbuffer", size, 4096); + bo = allocate_buffer(bufmgr, width, height, &stride); if (!bo) { fprintf(stderr, "failed to alloc buffer: %s\n", strerror(errno)); @@ -455,23 +435,26 @@ create_test_buffer(drm_intel_bufmgr *bufmgr, return -1; } - fb_ptr = bo->virtual; - /* paint the buffer with colored tiles */ - for (i = 0; i < width * height; i++) { - d = div(i, width); - fb_ptr[i] = 0x00130502 * (d.quot >> 6) + 0x000a1120 * (d.rem >> 6); + for (j = 0; j < height; j++) { + uint32_t *fb_ptr = (uint32_t*)((char*)bo->virtual + j * stride); + for (i = 0; i < width; i++) { + div_t d = div(i, width); + fb_ptr[i] = + 0x00130502 * (d.quot >> 6) + + 0x000a1120 * (d.rem >> 6); + } } + + make_pwetty(bo, width, height, stride); + drm_intel_gem_bo_unmap_gtt(bo); *bo_out = bo; *stride_out = stride; - return 0; } -#endif - static int create_grey_buffer(drm_intel_bufmgr *bufmgr, -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1p6vnm-0001kv...@alioth.debian.org