[arch-commits] Commit in libdrm/repos (3 files)
Jan de Groot
jgc at archlinux.org
Thu Feb 11 08:33:15 UTC 2010
Date: Thursday, February 11, 2010 @ 03:33:15
Author: jgc
Revision: 68172
Merged revisions 68164,68171 via svnmerge from
svn+ssh://gerolde.archlinux.org/srv/svn-packages/libdrm/trunk
........
r68164 | thomas | 2010-02-11 09:19:14 +0100 (Thu, 11 Feb 2010) | 7 lines
Fix intel bugs that made the 2.10 driver unusable
This adds the following 3 commits from upstream libdrm master:
973d8d6bd04230da801a8bc19af41dbc60e1918d: intel: check return value for calloc
fdcde592c2c48e143251672cf2e82debb07606bd: intel: Account for potential pinned buffers hogging fences
4f0f871730b76730ca58209181d16725b0c40184: intel: Handle resetting of input params after EINTR during SET_TILING
........
r68171 | jgc | 2010-02-11 09:33:00 +0100 (Thu, 11 Feb 2010) | 2 lines
upgpkg: libdrm 2.4.17-4
pkgrel++;
........
Added:
libdrm/repos/extra-i686/intel_gitupdate.diff
(from rev 68171, libdrm/trunk/intel_gitupdate.diff)
Modified:
libdrm/repos/extra-i686/ (properties)
libdrm/repos/extra-i686/PKGBUILD
----------------------+
PKGBUILD | 9 ++++--
intel_gitupdate.diff | 64 +++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 70 insertions(+), 3 deletions(-)
Property changes on: libdrm/repos/extra-i686
___________________________________________________________________
Modified: svnmerge-integrated
- /libdrm/trunk:1-63503
+ /libdrm/trunk:1-68171
Modified: extra-i686/PKGBUILD
===================================================================
--- extra-i686/PKGBUILD 2010-02-11 08:33:00 UTC (rev 68171)
+++ extra-i686/PKGBUILD 2010-02-11 08:33:15 UTC (rev 68172)
@@ -3,7 +3,7 @@
pkgname=libdrm
pkgver=2.4.17
-pkgrel=3
+pkgrel=4
pkgdesc="Userspace interface to kernel DRM services"
arch=(i686 x86_64)
license=('custom')
@@ -12,17 +12,20 @@
url="http://dri.freedesktop.org/"
source=(http://dri.freedesktop.org/${pkgname}/${pkgname}-${pkgver}.tar.bz2
no-pthread-stubs.patch
- nouveau_gitupdate.diff
+ nouveau_gitupdate.diff
+ intel_gitupdate.diff
COPYING)
- md5sums=('667d81f993f7fd8a1b1b1b830a28a748'
+md5sums=('667d81f993f7fd8a1b1b1b830a28a748'
'9b5ec3bbebe86921e2057694c42f65b8'
'f83babf7dc9d2a698b94d46b090ed674'
+ '3ebf954a427746af68330d2fa2da4e47'
'ba65e71c481b94ef0fb6c23c7f21ffa1')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
patch -Np1 -i "${srcdir}/no-pthread-stubs.patch" || return 1
patch -Np0 -i "${srcdir}/nouveau_gitupdate.diff" || return 1
+ patch -Np1 -i "${srcdir}/intel_gitupdate.diff" || return 1
libtoolize --force || return 1
aclocal || return 1
autoconf || return 1
Copied: libdrm/repos/extra-i686/intel_gitupdate.diff (from rev 68171, libdrm/trunk/intel_gitupdate.diff)
===================================================================
--- extra-i686/intel_gitupdate.diff (rev 0)
+++ extra-i686/intel_gitupdate.diff 2010-02-11 08:33:15 UTC (rev 68172)
@@ -0,0 +1,64 @@
+diff -u b/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
+--- b/intel/intel_bufmgr_gem.c
++++ b/intel/intel_bufmgr_gem.c
+@@ -1423,18 +1423,15 @@
+
+ memset(&set_tiling, 0, sizeof(set_tiling));
+ set_tiling.handle = bo_gem->gem_handle;
+- set_tiling.tiling_mode = *tiling_mode;
+- set_tiling.stride = stride;
+
+ do {
++ set_tiling.tiling_mode = *tiling_mode;
++ set_tiling.stride = stride;
++
+ ret = ioctl(bufmgr_gem->fd,
+ DRM_IOCTL_I915_GEM_SET_TILING,
+ &set_tiling);
+ } while (ret == -1 && errno == EINTR);
+- if (ret != 0) {
+- *tiling_mode = bo_gem->tiling_mode;
+- return -errno;
+- }
+ bo_gem->tiling_mode = set_tiling.tiling_mode;
+ bo_gem->swizzle_mode = set_tiling.swizzle_mode;
+
+@@ -1445,7 +1442,7 @@
+ drm_intel_bo_gem_set_in_aperture_size(bufmgr_gem, bo_gem);
+
+ *tiling_mode = bo_gem->tiling_mode;
+- return 0;
++ return ret == 0 ? 0 : -errno;
+ }
+
+ static int
+@@ -1727,6 +1724,9 @@
+ unsigned long size;
+
+ bufmgr_gem = calloc(1, sizeof(*bufmgr_gem));
++ if (bufmgr_gem == NULL)
++ return NULL;
++
+ bufmgr_gem->fd = fd;
+
+ if (pthread_mutex_init(&bufmgr_gem->lock, NULL) != 0) {
+@@ -1766,6 +1766,19 @@
+ fprintf(stderr, "param: %d, val: %d\n", gp.param,
+ *gp.value);
+ bufmgr_gem->available_fences = 0;
++ } else {
++ /* XXX The kernel reports the total number of fences,
++ * including any that may be pinned.
++ *
++ * We presume that there will be at least one pinned
++ * fence for the scanout buffer, but there may be more
++ * than one scanout and the user may be manually
++ * pinning buffers. Let's move to execbuffer2 and
++ * thereby forget the insanity of using fences...
++ */
++ bufmgr_gem->available_fences -= 2;
++ if (bufmgr_gem->available_fences < 0)
++ bufmgr_gem->available_fences = 0;
+ }
+ }
+
More information about the arch-commits
mailing list