libdrm: Changes to 'ubuntu'
debian/changelog | 16 +++++
debian/patches/03_intel_limit_tiled_pitches.patch | 64 ++++++++++++++++++++++
debian/patches/series | 1
debian/rules | 2
4 files changed, 82 insertions(+), 1 deletion(-)
New commits:
commit 9c56ba9567155997f1b100366445d4ffca05fb00
Author: Robert Hooker <sarvatt@ubuntu.com>
Date: Thu Oct 7 10:37:00 2010 -0400
Backport fix for allocating framebuffers with >2048 width on intel.
diff --git a/debian/changelog b/debian/changelog
index d6ebd1f..d61f7eb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+libdrm (2.4.21-1ubuntu2.1) maverick-proposed; urgency=low
+
+ * Add 03_intel_limit_tiled_pitches.patch: Fixes a problem where framebuffers
+ with a width greater than 2048 pixels could not be allocated on pre-i965
+ generation intel GPUs, which is common for multi-monitor setups. Backport
+ of upstream commit 726210f87. (LP: #654619)
+
+ -- Robert Hooker <robert.hooker@canonical.com> Thu, 07 Oct 2010 10:30:37 -0400
+
libdrm (2.4.21-1ubuntu2) maverick; urgency=low
* debian/rules: Don't install upstream changelog. This saves > 1 MB of CD
diff --git a/debian/patches/03_intel_limit_tiled_pitches.patch b/debian/patches/03_intel_limit_tiled_pitches.patch
new file mode 100644
index 0000000..3e81ff0
--- /dev/null
+++ b/debian/patches/03_intel_limit_tiled_pitches.patch
@@ -0,0 +1,64 @@
+From 726210f87d558d558022f35bc8c839e798a19f0c Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@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 <chris@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 e23f0b1..895d177 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
01_default_perms.diff
02_build_libkms_against_in_tree_drm.diff
+03_intel_limit_tiled_pitches.patch
commit 123aa3d9456328266768042c402ab863ffc233a6
Author: Robert Hooker <sarvatt@ubuntu.com>
Date: Thu Oct 7 10:39:39 2010 -0400
Import changes from 2.4.21-1ubuntu2 release dropping changelog installation.
diff --git a/debian/changelog b/debian/changelog
index 88d8701..d6ebd1f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+libdrm (2.4.21-1ubuntu2) maverick; urgency=low
+
+ * debian/rules: Don't install upstream changelog. This saves > 1 MB of CD
+ space.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Sun, 01 Aug 2010 20:46:42 +0200
+
libdrm (2.4.21-1ubuntu1) maverick; urgency=low
* Merge from debian experimental. Remaining Ubuntu changes:
diff --git a/debian/rules b/debian/rules
index ee1c73a..d3b4c0d 100755
--- a/debian/rules
+++ b/debian/rules
@@ -118,7 +118,7 @@ binary-indep: build install
binary-arch: build install
dh_testdir -s
dh_testroot -s
- dh_installchangelogs -s ChangeLog
+ dh_installchangelogs
dh_installdocs -s
dh_installexamples -s
dh_install -s --sourcedir=debian/tmp -X.la --fail-missing
Reply to: