.gitignore | 1 ChangeLog | 262 +++++++++++++++++++ configure.ac | 2 debian/changelog | 49 +++ debian/control | 38 ++ debian/libdrm-dev.install | 11 debian/libdrm-intel1.symbols | 1 debian/libdrm-nouveau1.symbols | 26 - debian/libdrm-radeon1.install | 2 debian/libdrm-radeon1.symbols | 16 + debian/rules | 13 debian/xsfbs/xsfbs.mk | 4 debian/xsfbs/xsfbs.sh | 229 ----------------- libdrm/intel/Makefile.am | 2 libdrm/intel/intel_bufmgr.c | 7 libdrm/intel/intel_bufmgr.h | 1 libdrm/intel/intel_bufmgr_gem.c | 120 +++------ libdrm/intel/intel_bufmgr_priv.h | 8 libdrm/intel/intel_chipset.h | 10 libdrm/nouveau/Makefile.am | 3 libdrm/nouveau/nouveau_bo.c | 405 +++--------------------------- libdrm/nouveau/nouveau_bo.h | 8 libdrm/nouveau/nouveau_channel.c | 66 ---- libdrm/nouveau/nouveau_class.h | 505 +++++++++++++++++++++++++++++++++----- libdrm/nouveau/nouveau_device.c | 10 libdrm/nouveau/nouveau_dma.c | 217 ---------------- libdrm/nouveau/nouveau_dma.h | 154 ----------- libdrm/nouveau/nouveau_drmif.h | 2 libdrm/nouveau/nouveau_fence.c | 243 ------------------ libdrm/nouveau/nouveau_notifier.c | 4 libdrm/nouveau/nouveau_private.h | 92 ------ libdrm/nouveau/nouveau_pushbuf.c | 209 ++++++++++----- libdrm/radeon/radeon_bo.h | 28 ++ libdrm/radeon/radeon_bo_gem.c | 81 +++++- libdrm/radeon/radeon_cs.h | 9 libdrm/radeon/radeon_cs_gem.c | 24 - libdrm/radeon/radeon_cs_space.c | 2 libdrm/radeon/radeon_track.c | 1 libdrm/xf86drmMode.c | 3 shared-core/drm.h | 1 shared-core/nouveau_drm.h | 124 +-------- shared-core/radeon_drm.h | 57 +++- 42 files changed, 1289 insertions(+), 1761 deletions(-)
New commits: commit 767dfb494eb1bf560d07b9a07fc4a098d13910ff Author: Timo Aaltonen <tjaal...@cc.hut.fi> Date: Thu Oct 8 16:35:30 2009 +0300 More imported changes. diff --git a/debian/changelog b/debian/changelog index 0621293..d3561b6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,34 @@ libdrm (2.4.14-1) unstable; urgency=low -- Julien Cristau <jcris...@debian.org> Thu, 24 Sep 2009 21:53:09 +0200 +libdrm (2.4.13-1ubuntu1) karmic; urgency=low + + * Merge with Debian. (LP: #420803) + + Included fixes: + - radeon: fix GTT writing space check + (LP: #411115) + + Remaining Ubuntu changes: + - control: + + libdrm-intel1 Replaces libdrm2 (<= 2.4.1-0ubuntu5) + + libdrm-dev depends on newer linux-libc-dev on !lpia + + libdrm-dev depends on libdrm-{radeon1,nouveau1} + + add libdrm-{radeon1,nouveau1}{,-dbg} source packages + - rules: + + Add libdrm-nouveau1 and libdrm-nouveau1-dbg package + + Enable radeon and nouveau experimental apis + - copyright: + + Update to include new files from add_libdrm-nouveau.patch + - libdrm-dev.install: Also install r300_reg.h, via_3d_reg.h, + xgi_drm.h, the nouveau headers, and other headers not provided by + the kernel. + - libdrm-{radeon1,nouveau1}.{install,symbols}: Add nouveau and + radeon + * control: + + Increase linux-libc-dev version dependency to 2.6.30-2.4 for !lpia + + Drop Replaces on linux-libc-dev + + -- Bryce Harrington <br...@ubuntu.com> Tue, 08 Sep 2009 15:18:34 -0700 + libdrm (2.4.13-1) unstable; urgency=low [ Christopher James Halse Rogers ] diff --git a/debian/libdrm-dev.install b/debian/libdrm-dev.install index 49b0732..6cd8ddd 100644 --- a/debian/libdrm-dev.install +++ b/debian/libdrm-dev.install @@ -1,13 +1,4 @@ -usr/include/nouveau/* -usr/include/drm/mach64_drm.h -usr/include/drm/nouveau_drm.h -usr/include/drm/nouveau_drmif.h -usr/include/drm/r300_reg.h -usr/include/drm/via_3d_reg.h -usr/include/drm/xgi_drm.h -usr/include/intel_bufmgr.h -usr/include/xf86drm.h -usr/include/xf86drmMode.h +usr/include/* usr/lib/lib*.a usr/lib/lib*.so usr/lib/pkgconfig/* commit cee87ebd54e2e59d38f760f6aaaf04e498f45337 Author: Timo Aaltonen <tjaal...@cc.hut.fi> Date: Thu Oct 8 16:03:15 2009 +0300 Import changes from the non-vcs fork. diff --git a/debian/control b/debian/control index afd891f..2ef6fff 100644 --- a/debian/control +++ b/debian/control @@ -15,8 +15,9 @@ Architecture: any Depends: libdrm2 (= ${binary:Version}), libdrm-intel1 (= ${binary:Version}) [amd64 i386 kfreebsd-amd64 kfreebsd-i386], libdrm-nouveau1 (= ${binary:Version}), - linux-libc-dev (>= 2.6.28-5.15) [amd64 armel i386], linux-libc-dev (>= 2.6.28-2.4) [lpia] -Replaces: linux-libc-dev (<= 2.6.28-3.4) + libdrm-radeon1 (= ${binary:Version}), + linux-libc-dev (>= 2.6.30-2.4) [amd64 armel i386], + linux-libc-dev (>= 2.6.28-2.4) [lpia] Description: Userspace interface to kernel DRM services -- development files This library implements the userspace interface to the kernel DRM services. DRM stands for "Direct Rendering Manager", which is the @@ -99,3 +100,34 @@ Description: Userspace interface to nouveau-specific kernel DRM services -- debu Linux to provide hardware-accelerated OpenGL drivers. . This package provides the debugging symbols for the libdrm-nouveau1 package. + +Package: libdrm-radeon1 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Userspace interface to radeon-specific kernel rendering services -- runtime + This library implements the userspace interface to the radeon-specific kernel + DRM services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). The DRI is + currently used on Linux to provide hardware-accelerated OpenGL drivers. + . + This package is built from a snapshot of DRM development code, to provide the + features necessary for testing new X.org drivers. Do NOT expect this package + to be stable! + +Package: libdrm-radeon1-dbg +Section: debug +Priority: extra +Architecture: any +Depends: libdrm-radeon1 (= ${binary:Version}), ${misc:Depends} +Description: Userspace interface to radeon-specific kernel rendering -- debugging symbols + This library implements the userspace interface to the kernel DRM services. + DRM stands for "Direct Rendering Manager", which is the kernelspace portion + of the "Direct Rendering Infrastructure" (DRI). The DRI is currently used on + Linux to provide hardware-accelerated OpenGL drivers. + . + This package is built from a snapshot of DRM development code, to provide the + features necessary for testing new X.org drivers. Do NOT expect this package + to be stable! + . + This package provides the debugging symbols for the libdrm-radeon1 package. + diff --git a/debian/libdrm-nouveau1.symbols b/debian/libdrm-nouveau1.symbols index 2a8af0a..8b73e1d 100644 --- a/debian/libdrm-nouveau1.symbols +++ b/debian/libdrm-nouveau1.symbols @@ -1,8 +1,8 @@ libdrm_nouveau.so.1 libdrm-nouveau1 #MINVER# - d...@base 2.4.4 +#MISSING: 2.4.12+git20090729.5a73f066# d...@base 2.4.4 nouveau_bo_b...@base 2.4.4 nouveau_bo_emit_buf...@base 2.4.4 - nouveau_bo_f...@base 2.4.4 +#MISSING: 2.4.12+git20090729.5a73f066# nouveau_bo_f...@base 2.4.4 nouveau_bo_handle_...@base 2.4.4 nouveau_bo_handle_...@base 2.4.4 nouveau_bo_i...@base 2.4.4 @@ -14,11 +14,11 @@ libdrm_nouveau.so.1 libdrm-nouveau1 #MINVER# nouveau_bo_...@base 2.4.4 nouveau_bo_...@base 2.4.4 nouveau_bo_taked...@base 2.4.4 - nouveau_bo_t...@base 2.4.4 +#MISSING: 2.4.12+git20090729.5a73f066# nouveau_bo_t...@base 2.4.4 nouveau_bo_un...@base 2.4.4 nouveau_bo_un...@base 2.4.4 nouveau_bo_u...@base 2.4.4 - nouveau_bo_validate_n...@base 2.4.4 +#MISSING: 2.4.12+git20090729.5a73f066# nouveau_bo_validate_n...@base 2.4.4 nouveau_bo_w...@base 2.4.11-1ubuntu1~ nouveau_channel_al...@base 2.4.4 nouveau_channel_f...@base 2.4.4 @@ -27,15 +27,15 @@ libdrm_nouveau.so.1 libdrm-nouveau1 #MINVER# nouveau_device_o...@base 2.4.4 nouveau_device_open_exist...@base 2.4.4 nouveau_device_set_pa...@base 2.4.4 - nouveau_dma_channel_i...@base 2.4.4 - nouveau_dma_kick...@base 2.4.4 - nouveau_dma_w...@base 2.4.4 - nouveau_fence_e...@base 2.4.4 - nouveau_fence_fl...@base 2.4.4 - nouveau_fence_...@base 2.4.4 - nouveau_fence_...@base 2.4.4 - nouveau_fence_signal...@base 2.4.4 - nouveau_fence_w...@base 2.4.4 +#MISSING: 2.4.12+git20090729.5a73f066# nouveau_dma_channel_i...@base 2.4.4 +#MISSING: 2.4.12+git20090729.5a73f066# nouveau_dma_kick...@base 2.4.4 +#MISSING: 2.4.12+git20090729.5a73f066# nouveau_dma_w...@base 2.4.4 +#MISSING: 2.4.12+git20090729.5a73f066# nouveau_fence_e...@base 2.4.4 +#MISSING: 2.4.12+git20090729.5a73f066# nouveau_fence_fl...@base 2.4.4 +#MISSING: 2.4.12+git20090729.5a73f066# nouveau_fence_...@base 2.4.4 +#MISSING: 2.4.12+git20090729.5a73f066# nouveau_fence_...@base 2.4.4 +#MISSING: 2.4.12+git20090729.5a73f066# nouveau_fence_signal...@base 2.4.4 +#MISSING: 2.4.12+git20090729.5a73f066# nouveau_fence_w...@base 2.4.4 nouveau_grobj_al...@base 2.4.4 nouveau_grobj_autob...@base 2.4.4 nouveau_grobj_f...@base 2.4.4 diff --git a/debian/libdrm-radeon1.install b/debian/libdrm-radeon1.install new file mode 100644 index 0000000..08c0f7e --- /dev/null +++ b/debian/libdrm-radeon1.install @@ -0,0 +1,2 @@ +usr/lib/libdrm_radeon.so.* + diff --git a/debian/libdrm-radeon1.symbols b/debian/libdrm-radeon1.symbols new file mode 100644 index 0000000..503ecb9 --- /dev/null +++ b/debian/libdrm-radeon1.symbols @@ -0,0 +1,16 @@ +libdrm_radeon.so.1 libdrm-radeon1 #MINVER# + radeon_bo_manager_gem_c...@base 2.4.12 + radeon_bo_manager_gem_d...@base 2.4.12 + radeon_cs_manager_gem_c...@base 2.4.12 + radeon_cs_manager_gem_d...@base 2.4.12 + radeon_cs_space_add_persistent...@base 2.4.12 + radeon_cs_space_ch...@base 2.4.12 + radeon_cs_space_check_with...@base 2.4.12 + radeon_cs_space_reset_...@base 2.4.12 + radeon_gem_get_kernel_n...@base 2.4.12 + radeon_gem_name...@base 2.4.12 + radeon_gem_set_dom...@base 2.4.12 + radeon_track_add_ev...@base 2.4.12 + radeon_tracker_add_tr...@base 2.4.12 + radeon_tracker_pr...@base 2.4.12 + radeon_tracker_remove_tr...@base 2.4.12 diff --git a/debian/rules b/debian/rules index 3f23530..641d473 100755 --- a/debian/rules +++ b/debian/rules @@ -52,6 +52,7 @@ obj-$(DEB_BUILD_GNU_TYPE)/config.status: configure --infodir=\$${prefix}/share/info \ --enable-static=yes $(confflags) \ --enable-nouveau-experimental-api=yes \ + --enable-radeon-experimental-api=yes \ CFLAGS="$(CFLAGS)" build: build-stamp @@ -107,12 +108,14 @@ binary-arch: build install dh_strip -plibdrm2 --dbg-package=libdrm2-dbg dh_strip -plibdrm-intel1 --dbg-package=libdrm-intel1-dbg dh_strip -plibdrm-nouveau1 --dbg-package=libdrm-nouveau1-dbg + dh_strip -plibdrm-radeon1 --dbg-package=libdrm-radeon1-dbg dh_strip dh_compress dh_fixperms dh_makeshlibs -plibdrm2 -V'libdrm2 (>= 2.4.3)' -- -c4 dh_makeshlibs -plibdrm-intel1 -V'libdrm-intel1 (>= 2.4.13)' -- -c4 - dh_makeshlibs -plibdrm-nouveau1 -V'libdrm-nouveau1 (>= 2.4.5)' -- -c4 + dh_makeshlibs -plibdrm-nouveau1 -V'libdrm-nouveau1 (>= 2.4.13)' -- -c4 + dh_makeshlibs -plibdrm-radeon1 -V'libdrm-radeon1 (>= 2.4.13)' -- -c4 dh_installdeb dh_shlibdeps dh_gencontrol commit 268376961bf59079077c80cefe1c1cf3728b1800 Author: Julien Cristau <jcris...@debian.org> Date: Thu Sep 24 21:53:25 2009 +0200 Prepare changelog for upload diff --git a/debian/changelog b/debian/changelog index 6c06509..6073662 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -libdrm (2.4.14-1) UNRELEASED; urgency=low +libdrm (2.4.14-1) unstable; urgency=low * Parse space-separated DEB_BUILD_OPTIONS, and handle parallel=N. * New upstream release. * Bump Standards-Version to 3.8.3. - -- Julien Cristau <jcris...@debian.org> Sat, 05 Sep 2009 14:14:29 +0200 + -- Julien Cristau <jcris...@debian.org> Thu, 24 Sep 2009 21:53:09 +0200 libdrm (2.4.13-1) unstable; urgency=low commit d3f408c2ef67cd532b9790f0e1adb1b5f06ae1e6 Author: Julien Cristau <jcris...@debian.org> Date: Thu Sep 24 21:52:12 2009 +0200 Bump Standards-Version to 3.8.3. diff --git a/debian/changelog b/debian/changelog index a394c8b..6c06509 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ libdrm (2.4.14-1) UNRELEASED; urgency=low * Parse space-separated DEB_BUILD_OPTIONS, and handle parallel=N. * New upstream release. + * Bump Standards-Version to 3.8.3. -- Julien Cristau <jcris...@debian.org> Sat, 05 Sep 2009 14:14:29 +0200 diff --git a/debian/control b/debian/control index b128dbc..adb6f36 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Priority: optional Maintainer: Debian X Strike Force <debian-x@lists.debian.org> Uploaders: Julien Cristau <jcris...@debian.org>, David Nusinow <dnusi...@debian.org>, Brice Goglin <bgog...@debian.org> Build-Depends: debhelper (>= 5.0.0), libx11-dev, dpkg-dev (>= 1.13.19), quilt (>= 0.40), automake, libtool, pkg-config, libpthread-stubs0-dev -Standards-Version: 3.8.1 +Standards-Version: 3.8.3 Section: libs Vcs-Git: git://git.debian.org/git/pkg-xorg/lib/libdrm Vcs-Browser: http://git.debian.org/?p=pkg-xorg/lib/libdrm.git commit a474dd48cc59fa71be9859def132e5363297f5e0 Author: Julien Cristau <jcris...@debian.org> Date: Thu Sep 24 21:03:54 2009 +0200 Bump changelogs diff --git a/ChangeLog b/ChangeLog index 9932baa..a8c7b97 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,68 @@ +commit ac71f0849928f4b2fbb69c01304ac6f9df8916a1 +Author: Eric Anholt <e...@anholt.net> +Date: Mon Sep 21 15:29:58 2009 -0700 + + Bump to 2.4.14 for release. + +commit 51b89733c53458b6827f0db99eb46a20fa1c7020 +Author: Eric Anholt <e...@anholt.net> +Date: Sun Sep 6 23:17:14 2009 -0700 + + intel: Remove the max_entries stuff that complicated bo reuse. + + I thought I was going to do all sorts of crazy experiments with it. I never + did, and it turned out the free-after-a-few-seconds plan is working out fine. + +commit 456a358b9ade5c90ff86b2322a79648c69cddcdc +Author: Eric Anholt <e...@anholt.net> +Date: Sun Sep 6 23:02:21 2009 -0700 + + intel: Remove the old swrast flag for reducing cache flushing. + + It hasn't been doing anything effective since + 52e5d24fae4af6f2f4a5304a516c8c5ab347a11b, and we pretty much don't bo_map + pinned buffers any more anyway. + +commit 0a24654129847cf5cd61b5e8fb54c8f9c7441c55 +Author: Keith Packard <kei...@keithp.com> +Date: Thu Sep 17 17:28:08 2009 -0700 + + drmModeFreeConnector: free encoders and properties + + These were leaking. + + Signed-off-by: Keith Packard <kei...@keithp.com> + +commit cdd325b59a17a614b90fc2f8b388175e6d79e3cf +Author: Dave Airlie <airl...@linux.ie> +Date: Tue Sep 15 07:29:02 2009 +1000 + + radeon: fix 32/64 bit issue with sign extension + + Not sure what intptr_t was up to here. + + Reported and tested by: Kevin DeKorte + Signed-off-by: Dave Airlie <airl...@redhat.com> + +commit 67e4172394a88d4922fb8d9c7c3d96ce7e02c5a6 +Author: Zhenyu Wang <zhen...@linux.intel.com> +Date: Mon Sep 7 16:17:04 2009 +0800 + + libdrm_intel: include B43 chipset check + + Signed-off-by: Zhenyu Wang <zhen...@linux.intel.com> + +commit 121b9648f846d900e67818869974ee82046e9b25 +Author: Zhenyu Wang <zhen...@linux.intel.com> +Date: Fri Sep 4 09:24:23 2009 +0800 + + libdrm_intel: add new pci ids + + New ids for G41, Clarkdale and Arrandale. + Make sure we don't need to count fence also on new chips. + + Signed-off-by: Zhenyu Wang <zhen...@linux.intel.com> + commit 73b59c894380995a2889b98e79acadd2da0bb237 Author: Eric Anholt <e...@anholt.net> Date: Fri Aug 28 15:20:22 2009 -0700 diff --git a/debian/changelog b/debian/changelog index 42352d6..a394c8b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ -libdrm (2.4.13-2) UNRELEASED; urgency=low +libdrm (2.4.14-1) UNRELEASED; urgency=low * Parse space-separated DEB_BUILD_OPTIONS, and handle parallel=N. + * New upstream release. -- Julien Cristau <jcris...@debian.org> Sat, 05 Sep 2009 14:14:29 +0200 commit ac71f0849928f4b2fbb69c01304ac6f9df8916a1 Author: Eric Anholt <e...@anholt.net> Date: Mon Sep 21 15:29:58 2009 -0700 Bump to 2.4.14 for release. diff --git a/configure.ac b/configure.ac index 425417e..d707052 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.13, [dri-de...@lists.sourceforge.net], libdrm) +AC_INIT([libdrm], 2.4.14, [dri-de...@lists.sourceforge.net], libdrm) AC_USE_SYSTEM_EXTENSIONS AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([dist-bzip2]) commit 51b89733c53458b6827f0db99eb46a20fa1c7020 Author: Eric Anholt <e...@anholt.net> Date: Sun Sep 6 23:17:14 2009 -0700 intel: Remove the max_entries stuff that complicated bo reuse. I thought I was going to do all sorts of crazy experiments with it. I never did, and it turned out the free-after-a-few-seconds plan is working out fine. diff --git a/libdrm/intel/intel_bufmgr_gem.c b/libdrm/intel/intel_bufmgr_gem.c index 84836a8..78297e0 100644 --- a/libdrm/intel/intel_bufmgr_gem.c +++ b/libdrm/intel/intel_bufmgr_gem.c @@ -69,15 +69,6 @@ typedef struct _drm_intel_bo_gem drm_intel_bo_gem; struct drm_intel_gem_bo_bucket { drmMMListHead head; - - /** - * Limit on the number of entries in this bucket. - * - * 0 means that this caching at this bucket size is disabled. - * -1 means that there is no limit to caching at this size. - */ - int max_entries; - int num_entries; unsigned long size; }; @@ -105,6 +96,7 @@ typedef struct _drm_intel_bufmgr_gem { uint64_t gtt_size; int available_fences; int pci_device; + char bo_reuse; } drm_intel_bufmgr_gem; struct _drm_intel_bo_gem { @@ -342,7 +334,7 @@ drm_intel_gem_bo_alloc_internal(drm_intel_bufmgr *bufmgr, const char *name, /* If we don't have caching at this size, don't actually round the * allocation up. */ - if (bucket == NULL || bucket->max_entries == 0) { + if (bucket == NULL) { bo_size = size; if (bo_size < page_size) bo_size = page_size; @@ -352,7 +344,7 @@ drm_intel_gem_bo_alloc_internal(drm_intel_bufmgr *bufmgr, const char *name, pthread_mutex_lock(&bufmgr_gem->lock); /* Get a buffer out of the cache if available */ - if (bucket != NULL && bucket->num_entries > 0) { + if (bucket != NULL && !DRMLISTEMPTY(&bucket->head)) { if (for_render) { /* Allocate new render-target BOs from the tail (MRU) * of the list, as it will likely be hot in the GPU cache @@ -360,7 +352,6 @@ drm_intel_gem_bo_alloc_internal(drm_intel_bufmgr *bufmgr, const char *name, */ bo_gem = DRMLISTENTRY(drm_intel_bo_gem, bucket->head.prev, head); DRMLISTDEL(&bo_gem->head); - bucket->num_entries--; alloc_from_cache = 1; } else { /* For non-render-target BOs (where we're probably going to map it @@ -374,7 +365,6 @@ drm_intel_gem_bo_alloc_internal(drm_intel_bufmgr *bufmgr, const char *name, if (!drm_intel_gem_bo_busy(&bo_gem->bo)) { alloc_from_cache = 1; DRMLISTDEL(&bo_gem->head); - bucket->num_entries--; } } } @@ -553,7 +543,6 @@ drm_intel_gem_cleanup_bo_cache(drm_intel_bufmgr_gem *bufmgr_gem, time_t time) break; DRMLISTDEL(&bo_gem->head); - bucket->num_entries--; drm_intel_gem_bo_free(&bo_gem->bo); } @@ -587,11 +576,7 @@ drm_intel_gem_bo_unreference_locked(drm_intel_bo *bo) bucket = drm_intel_gem_bo_bucket_for_size(bufmgr_gem, bo->size); /* Put the buffer into our internal cache for reuse if we can. */ tiling_mode = I915_TILING_NONE; - if (bo_gem->reusable && - bucket != NULL && - (bucket->max_entries == -1 || - (bucket->max_entries > 0 && - bucket->num_entries < bucket->max_entries)) && + if (bufmgr_gem->bo_reuse && bo_gem->reusable && bucket != NULL && drm_intel_gem_bo_set_tiling(bo, &tiling_mode, 0) == 0) { struct timespec time; @@ -606,7 +591,6 @@ drm_intel_gem_bo_unreference_locked(drm_intel_bo *bo) bo_gem->reloc_count = 0; DRMLISTADDTAIL(&bo_gem->head, &bucket->head); - bucket->num_entries++; drm_intel_gem_cleanup_bo_cache(bufmgr_gem, time.tv_sec); } else { @@ -931,7 +915,6 @@ drm_intel_bufmgr_gem_destroy(drm_intel_bufmgr *bufmgr) while (!DRMLISTEMPTY(&bucket->head)) { bo_gem = DRMLISTENTRY(drm_intel_bo_gem, bucket->head.next, head); DRMLISTDEL(&bo_gem->head); - bucket->num_entries--; drm_intel_gem_bo_free(&bo_gem->bo); } @@ -1225,11 +1208,8 @@ void drm_intel_bufmgr_gem_enable_reuse(drm_intel_bufmgr *bufmgr) { drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *)bufmgr; - int i; - for (i = 0; i < DRM_INTEL_GEM_BO_BUCKETS; i++) { - bufmgr_gem->cache_bucket[i].max_entries = -1; - } + bufmgr_gem->bo_reuse = 1; } /** commit 456a358b9ade5c90ff86b2322a79648c69cddcdc Author: Eric Anholt <e...@anholt.net> Date: Sun Sep 6 23:02:21 2009 -0700 intel: Remove the old swrast flag for reducing cache flushing. It hasn't been doing anything effective since 52e5d24fae4af6f2f4a5304a516c8c5ab347a11b, and we pretty much don't bo_map pinned buffers any more anyway. diff --git a/libdrm/intel/intel_bufmgr_gem.c b/libdrm/intel/intel_bufmgr_gem.c index baa0ee6..84836a8 100644 --- a/libdrm/intel/intel_bufmgr_gem.c +++ b/libdrm/intel/intel_bufmgr_gem.c @@ -127,13 +127,6 @@ struct _drm_intel_bo_gem { int validate_index; /** - * Boolean whether we've started swrast - * Set when the buffer has been mapped - * Cleared when the buffer is unmapped - */ - int swrast; - - /** * Current tiling mode */ uint32_t tiling_mode; @@ -663,30 +656,26 @@ drm_intel_gem_bo_map(drm_intel_bo *bo, int write_enable) return ret; } bo_gem->mem_virtual = (void *)(uintptr_t)mmap_arg.addr_ptr; - bo_gem->swrast = 0; } DBG("bo_map: %d (%s) -> %p\n", bo_gem->gem_handle, bo_gem->name, bo_gem->mem_virtual); bo->virtual = bo_gem->mem_virtual; - if (bo_gem->global_name != 0 || !bo_gem->swrast) { - set_domain.handle = bo_gem->gem_handle; - set_domain.read_domains = I915_GEM_DOMAIN_CPU; - if (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); - if (ret != 0) { - fprintf (stderr, "%s:%d: Error setting swrast %d: %s\n", - __FILE__, __LINE__, bo_gem->gem_handle, strerror (errno)); - pthread_mutex_unlock(&bufmgr_gem->lock); - return ret; - } - bo_gem->swrast = 1; + set_domain.handle = bo_gem->gem_handle; + set_domain.read_domains = I915_GEM_DOMAIN_CPU; + if (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); + if (ret != 0) { + fprintf (stderr, "%s:%d: Error setting to CPU domain %d: %s\n", + __FILE__, __LINE__, bo_gem->gem_handle, strerror (errno)); + pthread_mutex_unlock(&bufmgr_gem->lock); + return ret; } pthread_mutex_unlock(&bufmgr_gem->lock); @@ -797,14 +786,16 @@ drm_intel_gem_bo_unmap(drm_intel_bo *bo) assert(bo_gem->mem_virtual != NULL); pthread_mutex_lock(&bufmgr_gem->lock); - if (bo_gem->swrast) { - 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); - bo_gem->swrast = 0; - } + + /* Cause a flush to happen if the buffer's pinned for scanout, so the + * 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); + bo->virtual = NULL; pthread_mutex_unlock(&bufmgr_gem->lock); return 0; @@ -1100,9 +1091,6 @@ drm_intel_gem_bo_exec(drm_intel_bo *bo, int used, drm_intel_bo *bo = bufmgr_gem->exec_bos[i]; drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *)bo; - /* Need to call swrast on next bo_map */ - bo_gem->swrast = 0; - /* Disconnect the buffer from the validate list */ bo_gem->validate_index = -1; drm_intel_gem_bo_unreference_locked(bo); commit 0a24654129847cf5cd61b5e8fb54c8f9c7441c55 Author: Keith Packard <kei...@keithp.com> Date: Thu Sep 17 17:28:08 2009 -0700 drmModeFreeConnector: free encoders and properties These were leaking. Signed-off-by: Keith Packard <kei...@keithp.com> diff --git a/libdrm/xf86drmMode.c b/libdrm/xf86drmMode.c index ea11207..88b4fe3 100644 --- a/libdrm/xf86drmMode.c +++ b/libdrm/xf86drmMode.c @@ -116,6 +116,9 @@ void drmModeFreeConnector(drmModeConnectorPtr ptr) if (!ptr) return; + drmFree(ptr->encoders); + drmFree(ptr->prop_values); + drmFree(ptr->props); drmFree(ptr->modes); drmFree(ptr); commit cdd325b59a17a614b90fc2f8b388175e6d79e3cf Author: Dave Airlie <airl...@linux.ie> Date: Tue Sep 15 07:29:02 2009 +1000 radeon: fix 32/64 bit issue with sign extension Not sure what intptr_t was up to here. Reported and tested by: Kevin DeKorte Signed-off-by: Dave Airlie <airl...@redhat.com> diff --git a/libdrm/radeon/radeon_cs_gem.c b/libdrm/radeon/radeon_cs_gem.c index a0db53b..e42ec48 100644 --- a/libdrm/radeon/radeon_cs_gem.c +++ b/libdrm/radeon/radeon_cs_gem.c @@ -100,10 +100,10 @@ static struct radeon_cs *cs_gem_create(struct radeon_cs_manager *csm, } csg->chunks[0].chunk_id = RADEON_CHUNK_ID_IB; csg->chunks[0].length_dw = 0; - csg->chunks[0].chunk_data = (uint64_t)(intptr_t)csg->base.packets; + csg->chunks[0].chunk_data = (uint64_t)(uintptr_t)csg->base.packets; csg->chunks[1].chunk_id = RADEON_CHUNK_ID_RELOCS; csg->chunks[1].length_dw = 0; - csg->chunks[1].chunk_data = (uint64_t)(intptr_t)csg->relocs; + csg->chunks[1].chunk_data = (uint64_t)(uintptr_t)csg->relocs; return (struct radeon_cs*)csg; } @@ -184,7 +184,7 @@ static int cs_gem_write_reloc(struct radeon_cs *cs, } cs->relocs = csg->relocs = tmp; csg->nrelocs += 1; - csg->chunks[1].chunk_data = (uint64_t)(intptr_t)csg->relocs; + csg->chunks[1].chunk_data = (uint64_t)(uintptr_t)csg->relocs; } csg->relocs_bo[csg->base.crelocs] = bo; idx = (csg->base.crelocs++) * RELOC_SIZE; @@ -269,11 +269,11 @@ static int cs_gem_emit(struct radeon_cs *cs) csg->chunks[0].length_dw = cs->cdw; - chunk_array[0] = (uint64_t)(intptr_t)&csg->chunks[0]; - chunk_array[1] = (uint64_t)(intptr_t)&csg->chunks[1]; + chunk_array[0] = (uint64_t)(uintptr_t)&csg->chunks[0]; + chunk_array[1] = (uint64_t)(uintptr_t)&csg->chunks[1]; csg->cs.num_chunks = 2; - csg->cs.chunks = (uint64_t)(intptr_t)chunk_array; + csg->cs.chunks = (uint64_t)(uintptr_t)chunk_array; r = drmCommandWriteRead(cs->csm->fd, DRM_RADEON_CS, &csg->cs, sizeof(struct drm_radeon_cs)); commit 67e4172394a88d4922fb8d9c7c3d96ce7e02c5a6 Author: Zhenyu Wang <zhen...@linux.intel.com> Date: Mon Sep 7 16:17:04 2009 +0800 libdrm_intel: include B43 chipset check Signed-off-by: Zhenyu Wang <zhen...@linux.intel.com> diff --git a/libdrm/intel/intel_chipset.h b/libdrm/intel/intel_chipset.h index 26bc585..688476a 100644 --- a/libdrm/intel/intel_chipset.h +++ b/libdrm/intel/intel_chipset.h @@ -50,6 +50,7 @@ (dev)->pci_device == 0x2E12 || \ (dev)->pci_device == 0x2E22 || \ (dev)->pci_device == 0x2E32 || \ + (dev)->pci_device == 0x2E42 || \ (dev)->pci_device == 0x0042 || \ (dev)->pci_device == 0x0046) @@ -59,7 +60,9 @@ #define IS_G4X(dev) ((dev)->pci_device == 0x2E02 || \ (dev)->pci_device == 0x2E12 || \ - (dev)->pci_device == 0x2E22) + (dev)->pci_device == 0x2E22 || \ + (dev)->pci_device == 0x2E32 || \ + (dev)->pci_device == 0x2E42) #define IS_G33(dev) ((dev)->pci_device == 0x29C2 || \ (dev)->pci_device == 0x29B2 || \ commit 7f0e2de49e0a4006f5c28e6dac2e161f7a96b50c Author: Julien Cristau <jcris...@debian.org> Date: Sat Sep 5 14:14:51 2009 +0200 Parse space-separated DEB_BUILD_OPTIONS, and handle parallel=N. diff --git a/debian/changelog b/debian/changelog index 34bb470..42352d6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +libdrm (2.4.13-2) UNRELEASED; urgency=low + + * Parse space-separated DEB_BUILD_OPTIONS, and handle parallel=N. + + -- Julien Cristau <jcris...@debian.org> Sat, 05 Sep 2009 14:14:29 +0200 + libdrm (2.4.13-1) unstable; urgency=low [ Christopher James Halse Rogers ] diff --git a/debian/rules b/debian/rules index 284509d..c6252d6 100755 --- a/debian/rules +++ b/debian/rules @@ -30,11 +30,15 @@ endif CFLAGS = -Wall -g -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) +ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 else CFLAGS += -O2 endif +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + MAKEFLAGS += -j$(NUMJOBS) +endif configure: $(STAMP_DIR)/patch dh_testdir commit a209119784450b02794fe94545875f071777c4c0 Author: Julien Cristau <jcris...@debian.org> Date: Sat Sep 5 12:57:20 2009 +0200 Prepare changelog for upload diff --git a/debian/changelog b/debian/changelog index c809e49..34bb470 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -libdrm (2.4.13-1) UNRELEASED; urgency=low +libdrm (2.4.13-1) unstable; urgency=low [ Christopher James Halse Rogers ] * debian/control: @@ -9,7 +9,7 @@ libdrm (2.4.13-1) UNRELEASED; urgency=low * New upstream release. * Update libdrm-intel1.symbols. - -- Christopher James Halse Rogers <r...@ubuntu.com> Wed, 11 Feb 2009 18:12:41 +1100 + -- Julien Cristau <jcris...@debian.org> Sat, 05 Sep 2009 13:15:36 +0200 libdrm (2.4.12-1) unstable; urgency=low commit c5927ee69fb74eb278f161de2b334fb1f9862f24 Author: Julien Cristau <jcris...@debian.org> Date: Sat Sep 5 12:54:35 2009 +0200 Update changelogs and symbols file for new release diff --git a/ChangeLog b/ChangeLog index 4ef5518..9932baa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,200 @@ +commit 73b59c894380995a2889b98e79acadd2da0bb237 +Author: Eric Anholt <e...@anholt.net> +Date: Fri Aug 28 15:20:22 2009 -0700 + + Bump to version 2.4.13 for release. + +commit 8214a65ad1f4ccd4966e0def0d43f0c4289e4bc6 +Author: Eric Anholt <e...@anholt.net> +Date: Thu Aug 27 18:32:07 2009 -0700 + + Add drm_intel_bo_busy to query whether mapping a BO would block. + +commit 19d6fadfa29993b261ebac2869b2289f6d3091c3 +Author: Michel Dänzer <daen...@vmware.com> +Date: Fri Aug 28 11:42:07 2009 +0200 + + Revert "libdrm_radeon: Always wait for BO idle in bo_map." + + This reverts commit 0a732983f059c353b267b6bf877e1f0eea4e033f. + + Paul Nieminen and Dave Airlie pointed out on IRC that this shouldn't be + necessary. I was seeing visual corruption in X before I made this change, but + I can't reproduce that anymore so it was probably an unrelated issue. + +commit 0a732983f059c353b267b6bf877e1f0eea4e033f +Author: Michel Dänzer <daen...@vmware.com> +Date: Thu Aug 27 08:36:58 2009 +0200 + + libdrm_radeon: Always wait for BO idle in bo_map. + + This allows users to eliminate explicit bo_wait calls before bo_map calls. + +commit ce6c68dc8a893ed8673f49d381a8500c2ee3c29f +Author: Jakob Bornecrantz <ja...@vmware.com> +Date: Fri Aug 21 14:06:51 2009 +0200 + + Kill last remnant of replacefb ioctl + + Kenrels doesn't expose this ioctl + +commit 02a4d22e95de863fe3e01a9f5658ef81417c28cd +Author: Alex Deucher <alexdeuc...@gmail.com> +Date: Mon Aug 24 18:15:03 2009 -0400 + + radeon: pull in z pipe changes from kernel + +commit caad8d85559709301c00760b9e8707d57f8c6c67 +Author: Pauli Nieminen <suok...@gmail.com> +Date: Sat Aug 22 13:16:18 2009 +1000 + + radeon: add support for busy/domain check interface. + + airlied: modified the interface to drop busy return value, just return + it normally, also fixed int->uint32_t for domain + + Signed-off-by: Pauli Nieminen <suok...@gmail.com> + +commit cbb3ae3dab9dc82d95524726135b8d6ef86bcf27 +Author: Ben Skeggs <bske...@redhat.com> +Date: Wed Aug 19 15:55:05 2009 +1000 + + nouveau: fix a thinko in copyless pushbuf ioctl + + No idea why G80 doesn't hit this, but, this fixes at least one NV40 card. + +commit 8c43b79b21929e9e54e13e892f7787e222e73f39 +Author: Pauli Nieminen <suok...@gmail.com> +Date: Tue Aug 18 18:51:38 2009 +0300 + + libdrm_radeon: Optimize copy of table to cs buffer with specialized call. + + Using this call in OUT_BATCH_TABLE reduces radeonEmitState cpu usage from + 9% to 5% and emit_vpu goes from 7% to 1.5%. I did use calgrind to profile + gears for cpu hotspots with r500 card. + + Signed-off-by: Pauli Nieminen <suok...@gmail.com> + +commit a474fd978c0dedbed21b5dff24126acb1c7effef +Author: Pauli Nieminen <suok...@gmail.com> +Date: Tue Aug 18 18:51:37 2009 +0300 + + libdrm_radeon: Fix loops so that compiler can optimize them. + + GCC did war about optimization not possible because possible forever loop. + + Signed-off-by: Pauli Nieminen <suok...@gmail.com> + +commit 64cef1e46554fbf82388acfcfc8051ce956a3dc2 +Author: Pauli Nieminen <suok...@gmail.com> +Date: Fri Aug 7 20:03:26 2009 +0300 + + libdrm/radeon: Update head of linked list not to point freed memory. + + Signed-off-by: Pauli Nieminen <suok...@gmail.com> + +commit 28f4bfa04b8ad4dfcc55027f4b2385f4dd6c23c5 +Author: Ben Skeggs <bske...@redhat.com> +Date: Wed Aug 12 14:21:00 2009 +1000 + + nouveau: support for copy-less pushbuf ioctl + +commit 250ab3a38eb6ef18d747717cabd0195ad04a82e0 +Author: Ben Skeggs <bske...@redhat.com> +Date: Tue Aug 18 14:25:50 2009 +1000 + + nouveau: for the moment, assert if we exceed some reloc limits + + Nasty, but nicer than silently not writing into the pushbuf + +commit 1978f6d8d1215a9501882eb074901bcd0dfc0775 +Author: Dave Airlie <airl...@redhat.com> +Date: Mon Aug 17 21:21:02 2009 +1000 + + radeon: fix bo wait at map time. + +commit f7996165fffe0a835752e8b9bb6b4d81bba5c91d +Author: Christoph Brill <egore...@egore911.de> +Date: Sun Aug 16 08:26:25 2009 +0200 + + Filter radeon pkgconfig file as do intel and nouveau + +commit 1d465178fbab77a9c0e830ea8c47bf61735def71 +Author: Dave Airlie <airl...@redhat.com> +Date: Sat Aug 15 21:32:35 2009 +1000 + + radeon: fix GTT writing space check + + Noticed by vehemens on irc. + + Signed-off-by: Dave Airlie <airl...@redhat.com> -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org