xserver-xorg-video-intel: Changes to 'ubuntu'
debian/changelog | 10 +
debian/patches/107_solid_nullptr_check.patch | 37 ++++
debian/patches/109_dont_reconstruct_glyph_cache_on_rotate.patch | 76 ++++++++++
debian/patches/110_warnings_cleanup.patch | 61 ++++++++
4 files changed, 184 insertions(+)
New commits:
commit 3347e9639d22249c605f922c9a8d3db4765ed5eb
Author: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
Date: Wed Mar 2 14:12:55 2011 +1100
Add changelog entry
diff --git a/debian/changelog b/debian/changelog
index 25dff08..38cf27d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+xserver-xorg-video-intel (2:2.14.0-1ubuntu12) natty; urgency=low
+
+ * Pull prerequisite commit into
+ 109_dont_reconstruct_glyph_cache_on_rotate.patch. We mostly didn't notice
+ because the copy-fb codepath initialises the resources itself. Fixes
+ Pixmap assert on Xserver startup when copy-fb fails, such as on hybrid
+ graphics systems. (LP: #718620)
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com> Wed, 02 Mar 2011 14:12:35 +1100
+
xserver-xorg-video-intel (2:2.14.0-1ubuntu11) natty; urgency=low
[Brian Murray]
commit d8fc13a165e0a4e19423604a47a88f79e9b50be7
Author: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
Date: Wed Mar 2 14:08:12 2011 +1100
Add patches missing from git
diff --git a/debian/patches/107_solid_nullptr_check.patch b/debian/patches/107_solid_nullptr_check.patch
new file mode 100644
index 0000000..6c4a303
--- /dev/null
+++ b/debian/patches/107_solid_nullptr_check.patch
@@ -0,0 +1,37 @@
+diff -Nurp xserver-xorg-video-intel-2.13.901//uxa/uxa-accel.c xserver-xorg-video-intel-2.13.901-working//uxa/uxa-accel.c
+--- xserver-xorg-video-intel-2.13.901//uxa/uxa-accel.c 2010-09-28 20:43:10.000000000 -0700
++++ xserver-xorg-video-intel-2.13.901-working//uxa/uxa-accel.c 2011-01-21 19:15:03.421218050 -0800
+@@ -120,6 +120,10 @@ uxa_fill_spans(DrawablePtr pDrawable, GC
+
+ solid = uxa_acquire_solid(screen, src->pSourcePict);
+ FreePicture(src, 0);
++ if (!solid) {
++ FreePicture(dst, 0);
++ goto solid;
++ }
+
+ src = solid;
+ src_pixmap = uxa_get_offscreen_pixmap(src->pDrawable,
+@@ -1110,6 +1114,10 @@ try_solid:
+
+ solid = uxa_acquire_solid(screen, src->pSourcePict);
+ FreePicture(src, 0);
++ if (!solid) {
++ FreePicture(dst, 0);
++ goto err;
++ }
+
+ src = solid;
+ src_pixmap = uxa_get_offscreen_pixmap(src->pDrawable,
+diff -Nurp xserver-xorg-video-intel-2.13.901//uxa/uxa-render.c xserver-xorg-video-intel-2.13.901-working//uxa/uxa-render.c
+--- xserver-xorg-video-intel-2.13.901//uxa/uxa-render.c 2010-09-28 20:43:10.000000000 -0700
++++ xserver-xorg-video-intel-2.13.901-working//uxa/uxa-render.c 2011-01-21 19:07:49.463951184 -0800
+@@ -1064,6 +1064,8 @@ try_solid:
+ int src_off_x, src_off_y;
+
+ solid = uxa_acquire_solid(screen, src->pSourcePict);
++ if (! solid)
++ goto err_src;
+ FreePicture(src, 0);
+
+ src = solid;
diff --git a/debian/patches/110_warnings_cleanup.patch b/debian/patches/110_warnings_cleanup.patch
new file mode 100644
index 0000000..686bc62
--- /dev/null
+++ b/debian/patches/110_warnings_cleanup.patch
@@ -0,0 +1,61 @@
+diff --git a/src/i915_render.c b/src/i915_render.c
+index 6d844e5..9739a72 100644
+--- a/src/i915_render.c
++++ b/src/i915_render.c
+@@ -546,7 +546,7 @@ i915_emit_composite_primitive(PixmapPtr dest,
+ {
+ ScrnInfoPtr scrn = xf86Screens[dest->drawable.pScreen->myNum];
+ intel_screen_private *intel = intel_get_screen_private(scrn);
+- Bool is_affine_src, is_affine_mask = TRUE;
++ Bool is_affine_src = TRUE, is_affine_mask = TRUE;
+ int per_vertex, num_floats;
+ int tex_unit = 0;
+ int src_unit = -1, mask_unit = -1;
+diff --git a/src/xvmc/intel_batchbuffer.h b/src/xvmc/intel_batchbuffer.h
+index 6fa1c05..888abeb 100644
+--- a/src/xvmc/intel_batchbuffer.h
++++ b/src/xvmc/intel_batchbuffer.h
+@@ -24,7 +24,7 @@ extern int VERBOSE;
+
+ #define OUT_RELOC(bo,read_domains,write_domains,delta) \
+ do { \
+- *(unsigned int *)batch_ptr = delta + bo->offset; \
++ *(unsigned int *)batch_ptr = (delta) + bo->offset; \
+ intel_batch_emit_reloc(bo, read_domains, write_domains, delta, batch_ptr); \
+ batch_ptr += 4; \
+ } while (0)
+diff --git a/src/xvmc/intel_xvmc.c b/src/xvmc/intel_xvmc.c
+index 6cbec80..6bfd9d1 100644
+--- a/src/xvmc/intel_xvmc.c
++++ b/src/xvmc/intel_xvmc.c
+@@ -1071,7 +1071,7 @@ _X_EXPORT Status XvMCLoadQMatrix(Display * display, XvMCContext * context,
+ _X_EXPORT Status XvMCPutSlice(Display * display, XvMCContext * context,
+ char *slice, int nbytes)
+ {
+- if (xvmc_driver->put_slice(display, context, slice, nbytes)) {
++ if (xvmc_driver->put_slice(display, context, (unsigned char *) slice, nbytes)) {
+ XVMC_ERR("PutSlice fail\n");
+ return BadValue;
+ }
+@@ -1082,7 +1082,7 @@ _X_EXPORT Status XvMCPutSlice2(Display * display, XvMCContext * context,
+ char *slice, int nbytes, int slice_code)
+ {
+ if (xvmc_driver->put_slice2
+- (display, context, slice, nbytes, slice_code)) {
++ (display, context, (unsigned char *) slice, nbytes, slice_code)) {
+ XVMC_ERR("PutSlice2 fail\n");
+ return BadValue;
+ }
+diff --git a/src/xvmc/intel_xvmc_dump.c b/src/xvmc/intel_xvmc_dump.c
+index 974bcbb..d22d311 100644
+--- a/src/xvmc/intel_xvmc_dump.c
++++ b/src/xvmc/intel_xvmc_dump.c
+@@ -38,7 +38,7 @@ void intel_xvmc_dump_open(void)
+ if (xvmc_dump)
+ return;
+
+- if (d = getenv("INTEL_XVMC_DUMP"))
++ if ((d = getenv("INTEL_XVMC_DUMP")))
+ xvmc_dump = 1;
+
+ if (xvmc_dump) {
commit a3fa755939e4dc29cfd57520fde64239c3984bd5
Author: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
Date: Wed Mar 2 14:07:01 2011 +1100
Add upstream prerequisite commit to 109_dont_reconstruct_glyph_cache_on_rotate.patch
Fixes LP: #718620. The only reason we didn't notice this crash
is that the copy-fb codepath initialises these resources earlier.
When copy-fb fails, these resources aren't initialised, and
we run into problems
diff --git a/debian/patches/109_dont_reconstruct_glyph_cache_on_rotate.patch b/debian/patches/109_dont_reconstruct_glyph_cache_on_rotate.patch
index 0917a26..da3a083 100644
--- a/debian/patches/109_dont_reconstruct_glyph_cache_on_rotate.patch
+++ b/debian/patches/109_dont_reconstruct_glyph_cache_on_rotate.patch
@@ -1,3 +1,79 @@
+commit 3e28a0c0b43823d3104fe8fc50b5994b41fc0cc1
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Thu Jan 20 15:07:26 2011 +0000
+
+ Create the UXA generational resources during screen create
+
+ Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+diff --git a/src/intel.h b/src/intel.h
+index e7c47db..4c755fc 100644
+--- a/src/intel.h
++++ b/src/intel.h
+@@ -661,7 +661,7 @@ static inline Bool pixmap_is_scanout(PixmapPtr pixmap)
+ const OptionInfoRec *intel_uxa_available_options(int chipid, int busid);
+
+ Bool intel_uxa_init(ScreenPtr pScreen);
+-void intel_uxa_create_screen_resources(ScreenPtr pScreen);
++Bool intel_uxa_create_screen_resources(ScreenPtr pScreen);
+ void intel_uxa_block_handler(intel_screen_private *intel);
+ Bool intel_get_aperture_space(ScrnInfoPtr scrn, drm_intel_bo ** bo_table,
+ int num_bos);
+diff --git a/src/intel_driver.c b/src/intel_driver.c
+index 2cd5f1f..ebed258 100644
+--- a/src/intel_driver.c
++++ b/src/intel_driver.c
+@@ -234,9 +234,7 @@ static Bool i830CreateScreenResources(ScreenPtr screen)
+ if (!(*screen->CreateScreenResources) (screen))
+ return FALSE;
+
+- intel_uxa_create_screen_resources(screen);
+-
+- return TRUE;
++ return intel_uxa_create_screen_resources(screen);
+ }
+
+ static void PreInitCleanup(ScrnInfoPtr scrn)
+@@ -1046,7 +1044,7 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv)
+ I830UeventInit(scrn);
+ #endif
+
+- return uxa_resources_init(screen);
++ return TRUE;
+ }
+
+ static void i830AdjustFrame(int scrnIndex, int x, int y, int flags)
+diff --git a/src/intel_uxa.c b/src/intel_uxa.c
+index 8f58c29..9341b91 100644
+--- a/src/intel_uxa.c
++++ b/src/intel_uxa.c
+@@ -1089,12 +1089,15 @@ static Bool intel_uxa_destroy_pixmap(PixmapPtr pixmap)
+ return TRUE;
+ }
+
+-void intel_uxa_create_screen_resources(ScreenPtr screen)
++Bool intel_uxa_create_screen_resources(ScreenPtr screen)
+ {
+ ScrnInfoPtr scrn = xf86Screens[screen->myNum];
+ intel_screen_private *intel = intel_get_screen_private(scrn);
+ dri_bo *bo = intel->front_buffer;
+
++ if (!uxa_resources_init(screen))
++ return FALSE;
++
+ drm_intel_gem_bo_map_gtt(bo);
+
+ if (intel->use_shadow) {
+@@ -1111,6 +1114,8 @@ void intel_uxa_create_screen_resources(ScreenPtr screen)
+ NULL);
+ scrn->displayWidth = intel->front_pitch / intel->cpp;
+ }
++
++ return TRUE;
+ }
+
+ static void
+
From c6dc27562abbc8ca9e873ad502ca49ae010461d2 Mon Sep 17 00:00:00 2001
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Mon, 24 Jan 2011 20:25:27 +0000
Reply to: