[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-video-intel: Changes to 'ubuntu-precise'



 debian/changelog                                    |   14 -
 debian/patches/101_copy-fb.patch                    |  263 +++++++++-----------
 debian/patches/104_uxa_fix_gtt_mapping_limits.patch |    4 
 debian/patches/107-uxa-fix-pageflip-race.patch      |  126 +++++++++
 debian/patches/series                               |    1 
 5 files changed, 263 insertions(+), 145 deletions(-)

New commits:
commit 56a451cf57a479279e431e5ad1ff73bae231acba
Author: Timo Aaltonen <tjaalton@ubuntu.com>
Date:   Sat Oct 6 07:32:29 2012 +0300

    close a bug with patch 106

diff --git a/debian/changelog b/debian/changelog
index d17e9e8..20fa358 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,7 @@ xserver-xorg-video-intel (2:2.17.0-1ubuntu4.2) precise-proposed; urgency=low
   * Add 106-uxa-only-consider-attached-outputs-valid.patch, two upstream
     commits merged together that fix GPU hangs on resume, due to outputs
     getting marked valid before the kernel reports them attached.
+    (LP: #992391)
   * Replace 101_copy-fb.patch with the patch that went upstream, backported
     to build against the older xserver. Needed for other backports.
     - refreshed patch 104 to apply.

commit 697e87fda6f44a0e0565501d32e300db4a3b2c62
Author: Timo Aaltonen <tjaalton@ubuntu.com>
Date:   Fri Oct 5 22:40:59 2012 +0300

    release to precise-proposed

diff --git a/debian/changelog b/debian/changelog
index 77d2f2e..d17e9e8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xserver-xorg-video-intel (2:2.17.0-1ubuntu4.1.1) precise; urgency=low
+xserver-xorg-video-intel (2:2.17.0-1ubuntu4.2) precise-proposed; urgency=low
 
   * Add 106-uxa-only-consider-attached-outputs-valid.patch, two upstream
     commits merged together that fix GPU hangs on resume, due to outputs
@@ -11,7 +11,7 @@ xserver-xorg-video-intel (2:2.17.0-1ubuntu4.1.1) precise; urgency=low
     - consists of five upstream commits merged as one and backported to
       build against the xserver in precise
 
- -- Timo Aaltonen <tjaalton@ubuntu.com>  Fri, 24 Aug 2012 13:07:41 +0300
+ -- Timo Aaltonen <tjaalton@ubuntu.com>  Fri, 05 Oct 2012 22:40:38 +0300
 
 xserver-xorg-video-intel (2:2.17.0-1ubuntu4.1) precise-proposed; urgency=low
 

commit 9c089b408bf29faa0469160553a1ff4ee4b55841
Author: Timo Aaltonen <tjaalton@ubuntu.com>
Date:   Fri Oct 5 22:40:27 2012 +0300

    Add 107-uxa-fix-pageflip-race.patch
    
    * Add 107-uxa-fix-pageflip-race.patch, fixes a race with pageflip and
      dpms, resulting in for instance compiz hanging. (LP: #966744)
      - consists of five upstream commits merged as one and backported to
        build against the xserver in precise

diff --git a/debian/changelog b/debian/changelog
index b31067a..77d2f2e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,6 +6,10 @@ xserver-xorg-video-intel (2:2.17.0-1ubuntu4.1.1) precise; urgency=low
   * Replace 101_copy-fb.patch with the patch that went upstream, backported
     to build against the older xserver. Needed for other backports.
     - refreshed patch 104 to apply.
+  * Add 107-uxa-fix-pageflip-race.patch, fixes a race with pageflip and
+    dpms, resulting in for instance compiz hanging. (LP: #966744)
+    - consists of five upstream commits merged as one and backported to
+      build against the xserver in precise
 
  -- Timo Aaltonen <tjaalton@ubuntu.com>  Fri, 24 Aug 2012 13:07:41 +0300
 
diff --git a/debian/patches/107-uxa-fix-pageflip-race.patch b/debian/patches/107-uxa-fix-pageflip-race.patch
new file mode 100644
index 0000000..c61395d
--- /dev/null
+++ b/debian/patches/107-uxa-fix-pageflip-race.patch
@@ -0,0 +1,126 @@
+commit edc5b7f741a4bb8e9a58b5eb2201fa9304f94ef7
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Thu Sep 27 13:27:20 2012 +0100
+
+commit 5a45cbacb777e478d8fbda9223b0fb5c705d7249
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Thu Sep 27 13:31:27 2012 +0100
+
+commit feef53005b57d6b4489a15f8d0db8245dcb0cfaa
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Thu Sep 27 13:36:55 2012 +0100
+
+commit cb0b72c4fbb7b1bc941522d8679fef856f2f8936
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Thu Sep 27 14:53:46 2012 +0100
+
+commit 88cfd23379950d1fe4e682519c48ef6e3091c2f3
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Thu Sep 27 16:16:39 2012 +0100
+
+diff --git a/src/intel_display.c b/src/intel_display.c
+index 4ab7dd3..fae7066 100644
+--- a/src/intel_display.c
++++ b/src/intel_display.c
+@@ -1449,15 +1449,15 @@ intel_do_pageflip(intel_screen_private *intel,
+ 	struct intel_mode *mode = crtc->mode;
+ 	unsigned int pitch = scrn->displayWidth * intel->cpp;
+ 	struct intel_pageflip *flip;
+-	int i, old_fb_id;
++	uint32_t new_fb_id;
++	int i;
+ 
+ 	/*
+ 	 * Create a new handle for the back buffer
+ 	 */
+-	old_fb_id = mode->fb_id;
+ 	if (drmModeAddFB(mode->fd, scrn->virtualX, scrn->virtualY,
+ 			 scrn->depth, scrn->bitsPerPixel, pitch,
+-			 new_front->handle, &mode->fb_id))
++			 new_front->handle, &new_fb_id))
+ 		goto error_out;
+ 
+ 	intel_batch_submit(scrn);
+@@ -1476,7 +1476,7 @@ intel_do_pageflip(intel_screen_private *intel,
+ 	mode->fe_tv_usec = 0;
+ 
+ 	for (i = 0; i < config->num_crtc; i++) {
+-		if (!config->crtc[i]->enabled)
++		if (!intel_crtc_on(config->crtc[i]))
+ 			continue;
+ 
+ 		mode->flip_info = flip_info;
+@@ -1499,7 +1499,7 @@ intel_do_pageflip(intel_screen_private *intel,
+ 
+ 		if (drmModePageFlip(mode->fd,
+ 				    crtc_id(crtc),
+-				    mode->fb_id,
++				    new_fb_id,
+ 				    DRM_MODE_PAGE_FLIP_EVENT, flip)) {
+ 			xf86DrvMsg(scrn->scrnIndex, X_WARNING,
+ 				   "flip queue failed: %s\n", strerror(errno));
+@@ -1508,12 +1508,16 @@ intel_do_pageflip(intel_screen_private *intel,
+ 		}
+ 	}
+ 
+-	mode->old_fb_id = old_fb_id;
++	mode->old_fb_id = mode->fb_id;
++	mode->fb_id = new_fb_id;
+ 	return TRUE;
+ 
+ error_undo:
+-	drmModeRmFB(mode->fd, mode->fb_id);
+-	mode->fb_id = old_fb_id;
++	drmModeRmFB(mode->fd, new_fb_id);
++	for (i = 0; i < config->num_crtc; i++) {
++		if (config->crtc[i]->enabled)
++			intel_crtc_apply(config->crtc[i]);
++	}
+ 
+ error_out:
+ 	xf86DrvMsg(scrn->scrnIndex, X_WARNING, "Page flip failed: %s\n",
+diff --git a/src/intel_dri.c b/src/intel_dri.c
+index 135ba4e..c4dbd72 100644
+--- a/src/intel_dri.c
++++ b/src/intel_dri.c
+@@ -473,7 +473,7 @@ I830DRI2CopyRegion(DrawablePtr drawable, RegionPtr pRegion,
+ 		BoxPtr box;
+ 		BoxRec crtcbox;
+ 		int y1, y2;
+-		int pipe = -1, event, load_scan_lines_pipe;
++		int event, load_scan_lines_pipe;
+ 		xf86CrtcPtr crtc;
+ 		Bool full_height = FALSE;
+ 
+@@ -485,7 +485,7 @@ I830DRI2CopyRegion(DrawablePtr drawable, RegionPtr pRegion,
+ 		 * buffer
+ 		 */
+ 		if (crtc != NULL && !crtc->rotatedData) {
+-			pipe = intel_crtc_to_pipe(crtc);
++			int pipe = intel_crtc_to_pipe(crtc);
+ 
+ 			/*
+ 			 * Make sure we don't wait for a scanline that will
+@@ -874,7 +874,8 @@ I830DRI2ScheduleFlip(struct intel_screen_private *intel,
+ static Bool
+ can_exchange(DrawablePtr drawable, DRI2BufferPtr front, DRI2BufferPtr back)
+ {
+-	struct intel_screen_private *intel = intel_get_screen_private(xf86Screens[drawable->pScreen->myNum]);
++	ScrnInfoPtr pScrn = xf86Screens[drawable->pScreen->myNum];
++	struct intel_screen_private *intel = intel_get_screen_private(pScrn);
+ 	I830DRI2BufferPrivatePtr front_priv = front->driverPrivate;
+ 	I830DRI2BufferPrivatePtr back_priv = back->driverPrivate;
+ 	PixmapPtr front_pixmap = front_priv->pixmap;
+@@ -885,6 +886,12 @@ can_exchange(DrawablePtr drawable, DRI2BufferPtr front, DRI2BufferPtr back)
+ 	if (drawable == NULL)
+ 		return FALSE;
+ 
++	if (!pScrn->vtSema)
++		return FALSE;
++
++	if (I830DRI2DrawablePipe(drawable) < 0)
++		return FALSE;
++
+ 	if (!DRI2CanFlip(drawable))
+ 		return FALSE;
+ 
diff --git a/debian/patches/series b/debian/patches/series
index 45470d9..c086e8a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -6,3 +6,4 @@
 104_uxa_fix_gtt_mapping_limits.patch
 105_reduce_ivb_gt1_max_thread_count.patch
 106-uxa-only-consider-attached-outputs-valid.patch
+107-uxa-fix-pageflip-race.patch

commit 2d4a44aa7f1778de1de0c67eef2fcac46b608d75
Author: Timo Aaltonen <tjaalton@ubuntu.com>
Date:   Fri Oct 5 22:09:47 2012 +0300

    Replace 101_copy-fb.patch with the patch that went upstream
    
    * Replace 101_copy-fb.patch with the patch that went upstream, backported
      to build against the older xserver. Needed for other backports.
      - refreshed patch 104 to apply.

diff --git a/debian/changelog b/debian/changelog
index cb3b106..b31067a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,11 @@
-xserver-xorg-video-intel (2:2.17.0-1ubuntu4.1.1) UNRELEASED; urgency=low
+xserver-xorg-video-intel (2:2.17.0-1ubuntu4.1.1) precise; urgency=low
 
   * Add 106-uxa-only-consider-attached-outputs-valid.patch, two upstream
     commits merged together that fix GPU hangs on resume, due to outputs
     getting marked valid before the kernel reports them attached.
+  * Replace 101_copy-fb.patch with the patch that went upstream, backported
+    to build against the older xserver. Needed for other backports.
+    - refreshed patch 104 to apply.
 
  -- Timo Aaltonen <tjaalton@ubuntu.com>  Fri, 24 Aug 2012 13:07:41 +0300
 
diff --git a/debian/patches/101_copy-fb.patch b/debian/patches/101_copy-fb.patch
index a84dc77..7290df9 100644
--- a/debian/patches/101_copy-fb.patch
+++ b/debian/patches/101_copy-fb.patch
@@ -1,16 +1,27 @@
-Index: xserver-xorg-video-intel/src/intel.h
-===================================================================
---- xserver-xorg-video-intel.orig/src/intel.h	2011-12-20 15:47:35.802985779 +1100
-+++ xserver-xorg-video-intel/src/intel.h	2011-12-20 15:47:38.618985789 +1100
-@@ -432,6 +432,7 @@
- 	OptionInfoPtr Options;
- 
- 	/* Driver phase/state information */
-+	Bool starting;
- 	Bool suspended;
- 
- 	enum last_3d last_3d;
-@@ -461,6 +462,7 @@
+commit 3b9b64c7c9b5b0bfaafb97c9a9fe5849bbb412da
+Author: Dave Airlie <airlied@gmail.com>
+Date:   Tue Jun 12 10:26:34 2012 +0100
+
+    uxa: do copy fb at startup.
+    
+    Copy the current framebuffer for smooth wayland->gdm handoff.
+    
+    This has been hanging around in Fedora for too long now, and we've
+    dropped the feature a few times, and yes I know the Simpsons did it^W^W^W
+    SNA does it.
+    
+    I've updated the code to have some of the better fixes from nouveau.
+    
+    I've no idea who wrote this code either, krh or ajax. [ickle: The
+    earliest version I've found had krh's fingerprints on it, though it may
+    still have been a joint effort.]
+    
+    Signed-off-by: Dave Airlie <airlied@redhat.com>
+    [ickle: improve error handling, only copy the fb during initial takeover]
+
+--- a/src/intel.h
++++ b/src/intel.h
+@@ -461,6 +461,7 @@
  extern int intel_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, xf86CrtcPtr crtc);
  extern int intel_crtc_id(xf86CrtcPtr crtc);
  extern int intel_output_dpms_status(xf86OutputPtr output);
@@ -18,90 +29,80 @@ Index: xserver-xorg-video-intel/src/intel.h
  
  enum DRI2FrameEventType {
  	DRI2_SWAP,
-Index: xserver-xorg-video-intel/src/intel_display.c
-===================================================================
---- xserver-xorg-video-intel.orig/src/intel_display.c	2011-12-20 15:47:35.778985780 +1100
-+++ xserver-xorg-video-intel/src/intel_display.c	2011-12-20 15:54:45.422987131 +1100
-@@ -36,6 +36,8 @@
+--- a/src/intel_display.c
++++ b/src/intel_display.c
+@@ -35,6 +35,7 @@
+ #include <unistd.h>
  #include <errno.h>
  #include <poll.h>
- 
 +#include <sys/ioctl.h>
-+
+ 
  #include "xorgVersion.h"
  
- #include "intel.h"
-@@ -45,6 +47,8 @@
+@@ -44,6 +45,8 @@
+ #include "X11/Xatom.h"
  #include "X11/extensions/dpmsconst.h"
  #include "xf86DDC.h"
- 
++#include "fb.h"
 +#include "uxa.h"
-+
+ 
  struct intel_mode {
  	int fd;
- 	uint32_t fb_id;
-@@ -939,6 +943,13 @@
- 	drmModeConnectorPtr koutput = intel_output->mode_output;
- 	struct intel_mode *mode = intel_output->mode;
- 	int i;
-+	intel_screen_private *intel = intel_get_screen_private(output->scrn);
-+
-+	/* xf86Crtc.c calls dpms off in set desired modes, so ignore
-+	 * the request if we're starting up. */
-+
-+	if (intel->starting)
-+		return;
- 
- 	for (i = 0; i < koutput->count_props; i++) {
- 		drmModePropertyPtr props;
-@@ -1632,6 +1643,11 @@
- 	}
- 
- 	intel->modes = mode;
-+
-+#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 9
-+	scrn->canDoBGNoneRoot = TRUE;
-+#endif
-+
- 	return TRUE;
- }
- 
-@@ -1701,3 +1717,100 @@
+@@ -1701,3 +1704,129 @@
  	struct intel_crtc *intel_crtc = crtc->driver_private;
  	return intel_crtc->pipe;
  }
 +
 +static PixmapPtr
-+intel_create_pixmap_for_fbcon(ScrnInfoPtr scrn)
++intel_create_pixmap_for_bo(ScreenPtr pScreen, dri_bo *bo,
++			   int width, int height,
++			   int depth, int bpp,
++			   int pitch)
++{
++	PixmapPtr pixmap;
++
++	pixmap = pScreen->CreatePixmap(pScreen, 0, 0, depth, 0);
++	if (pixmap == NullPixmap)
++		return pixmap;
++
++	if (!pScreen->ModifyPixmapHeader(pixmap,
++					 width, height,
++					 depth, bpp,
++					 pitch, NULL)) {
++		pScreen->DestroyPixmap(pixmap);
++		return NullPixmap;
++	}
++
++	intel_set_pixmap_bo(pixmap, bo);
++	return pixmap;
++}
++
++static PixmapPtr
++intel_create_pixmap_for_fbcon(ScrnInfoPtr scrn, int fbcon_id)
 +{
-+	xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
-+	struct intel_crtc *intel_crtc = xf86_config->crtc[0]->driver_private;
 +	ScreenPtr pScreen = screenInfo.screens[scrn->scrnIndex];
-+	struct intel_mode *mode = intel_crtc->mode;
 +	intel_screen_private *intel = intel_get_screen_private(scrn);
-+	drmModeFBPtr fbcon = NULL;
++	struct intel_mode *mode = intel->modes;
++	int fd = mode->fd;
++	drmModeFBPtr fbcon;
 +	struct drm_gem_flink flink;
 +	drm_intel_bo *bo;
-+	PixmapPtr pixmap = NULL;
-+	int i;
++	PixmapPtr pixmap = NullPixmap;
 +
-+	for (i = 0; i < mode->mode_res->count_crtcs; i++) {
-+		intel_crtc = xf86_config->crtc[i]->driver_private;
-+		if (intel_crtc->mode_crtc->buffer_id == 0)
-+			continue;
-+		fbcon = drmModeGetFB(mode->fd,
-+				     intel_crtc->mode_crtc->buffer_id);
-+		if (fbcon != NULL)
-+			break;
-+	}
-+	if (i == mode->mode_res->count_crtcs)
++	fbcon = drmModeGetFB(fd, fbcon_id);
++	if (fbcon == NULL)
 +		return NULL;
 +
++	if (fbcon->depth != scrn->depth ||
++	    fbcon->width != scrn->virtualX ||
++	    fbcon->height != scrn->virtualY)
++		goto out_free_fb;
++
 +	flink.handle = fbcon->handle;
-+	if (ioctl(mode->fd, DRM_IOCTL_GEM_FLINK, &flink) < 0) {
++	if (ioctl(fd, DRM_IOCTL_GEM_FLINK, &flink) < 0) {
 +		xf86DrvMsg(scrn->scrnIndex, X_ERROR,
 +			   "Couldn't flink fbcon handle\n");
-+		return NULL;
++		goto out_free_fb;
 +	}
 +
 +	bo = drm_intel_bo_gem_create_from_name(intel->bufmgr,
@@ -109,23 +110,18 @@ Index: xserver-xorg-video-intel/src/intel_display.c
 +	if (bo == NULL) {
 +		xf86DrvMsg(scrn->scrnIndex, X_ERROR,
 +			   "Couldn't allocate bo for fbcon handle\n");
-+		return NULL;
++		goto out_free_fb;
 +	}
-+	if (!CreateScratchPixmapsForScreen(pScreen->myNum))
-+		return NULL;
 +
-+	pixmap = GetScratchPixmapHeader(pScreen,
-+					fbcon->width, fbcon->height,
-+					fbcon->depth, fbcon->bpp,
-+					fbcon->pitch, NULL);
-+	if (pixmap == NULL) {
++	pixmap = intel_create_pixmap_for_bo(pScreen, bo,
++					    fbcon->width, fbcon->height,
++					    fbcon->depth, fbcon->bpp,
++					    fbcon->pitch);
++	if (pixmap == NullPixmap)
 +		xf86DrvMsg(scrn->scrnIndex, X_ERROR,
 +			   "Couldn't allocate pixmap fbcon contents\n");
-+		return NULL;
-+	}
-+
-+	intel_set_pixmap_bo(pixmap, bo);
 +	drm_intel_bo_unreference(bo);
++out_free_fb:
 +	drmModeFreeFB(fbcon);
 +
 +	return pixmap;
@@ -133,78 +129,67 @@ Index: xserver-xorg-video-intel/src/intel_display.c
 +
 +void intel_copy_fb(ScrnInfoPtr scrn)
 +{
++	xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
 +	ScreenPtr pScreen = screenInfo.screens[scrn->scrnIndex];
 +	intel_screen_private *intel = intel_get_screen_private(scrn);
 +	PixmapPtr src, dst;
 +	unsigned int pitch = scrn->displayWidth * intel->cpp;
++	struct intel_crtc *intel_crtc;
++	int i, fbcon_id;
 +
-+	src = intel_create_pixmap_for_fbcon(scrn);
-+	if (src == NULL) {
-+		xf86DrvMsg(scrn->scrnIndex, X_ERROR,
-+			   "Couldn't create pixmap for fbcon\n");
++	if (intel->force_fallback)
 +		return;
-+	}
 +
-+	/* We dont have a screen Pixmap yet */
-+	dst = GetScratchPixmapHeader(pScreen,
-+				     scrn->virtualX, scrn->virtualY,
-+				     scrn->depth, scrn->bitsPerPixel,
-+				     pitch,
-+				     NULL);
-+	intel_set_pixmap_bo(dst, intel->front_buffer);
++	fbcon_id = 0;
++	for (i = 0; i < xf86_config->num_crtc; i++) {
++		intel_crtc = xf86_config->crtc[i]->driver_private;
++		if (intel_crtc->mode_crtc->buffer_id)
++			fbcon_id = intel_crtc->mode_crtc->buffer_id;
++	}
++	if (!fbcon_id)
++		return;
 +
-+	intel->uxa_driver->prepare_copy(src, dst, -1, -1, GXcopy, FB_ALLONES);
++	src = intel_create_pixmap_for_fbcon(scrn, fbcon_id);
++	if (src == NULL)
++		return;
 +
-+	intel->uxa_driver->copy(dst, 0, 0, 0, 0,
++	/* We dont have a screen Pixmap yet */
++	dst = intel_create_pixmap_for_bo(pScreen, intel->front_buffer,
++					 scrn->virtualX, scrn->virtualY,
++					 scrn->depth, scrn->bitsPerPixel,
++					 pitch);
++	if (dst == NullPixmap)
++		goto cleanup_src;
++
++	if (!intel->uxa_driver->prepare_copy(src, dst,
++					     -1, -1,
++					     GXcopy, FB_ALLONES))
++		goto cleanup_dst;
++
++	intel->uxa_driver->copy(dst,
++				0, 0,
++				0, 0,
 +				scrn->virtualX, scrn->virtualY);
-+
 +	intel->uxa_driver->done_copy(dst);
++	pScreen->canDoBGNoneRoot = TRUE;
 +
-+	intel_batch_submit(scrn);
-+
-+	(*pScreen->DestroyPixmap)(src);
++cleanup_dst:
 +	(*pScreen->DestroyPixmap)(dst);
-+	FreeScratchPixmapsForScreen(pScreen->myNum);
++cleanup_src:
++	(*pScreen->DestroyPixmap)(src);
 +}
-+
-Index: xserver-xorg-video-intel/src/intel_driver.c
-===================================================================
---- xserver-xorg-video-intel.orig/src/intel_driver.c	2011-12-20 15:47:35.762985780 +1100
-+++ xserver-xorg-video-intel/src/intel_driver.c	2011-12-20 15:47:38.618985789 +1100
-@@ -950,6 +950,10 @@
- 		intel->directRenderingType = DRI_DRI2;
- #endif
- 
-+#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) >= 9
-+	screen->canDoBGNoneRoot = TRUE;
-+#endif
-+
- 	if (!intel_init_initial_framebuffer(scrn))
+--- a/src/intel_driver.c
++++ b/src/intel_driver.c
+@@ -238,7 +238,11 @@
+ 	if (!(*screen->CreateScreenResources) (screen))
  		return FALSE;
  
-@@ -958,6 +962,8 @@
- 	if (INTEL_INFO(intel)->gen >= 40)
- 		gen4_render_state_init(scrn);
- 
-+	intel->starting = FALSE;
+-	return intel_uxa_create_screen_resources(screen);
++	if (!intel_uxa_create_screen_resources(screen))
++		return FALSE;
 +
- 	miClearVisualTypes();
- 	if (!miSetVisualTypes(scrn->depth,
- 			      miGetDefaultVisualMask(scrn->depth),
-@@ -1093,6 +1099,7 @@
- 
- 	intel_mode_init(intel);
- 
-+	intel->starting = FALSE;
- 	intel->suspended = FALSE;
- 
- #if HAVE_UDEV
-@@ -1159,6 +1166,8 @@
- 
- 	intel_set_gem_max_sizes(scrn);
- 
 +	intel_copy_fb(scrn);
-+
- 	if (!xf86SetDesiredModes(scrn))
- 		return FALSE;
++	return TRUE;
+ }
  
+ static void PreInitCleanup(ScrnInfoPtr scrn)
diff --git a/debian/patches/104_uxa_fix_gtt_mapping_limits.patch b/debian/patches/104_uxa_fix_gtt_mapping_limits.patch
index 97ebcc0..ba701a2 100644
--- a/debian/patches/104_uxa_fix_gtt_mapping_limits.patch
+++ b/debian/patches/104_uxa_fix_gtt_mapping_limits.patch
@@ -30,14 +30,12 @@ diff -Nurp patched/src/intel_display.c build/src/intel_display.c
 diff -Nurp patched/src/intel_driver.c build/src/intel_driver.c
 --- patched/src/intel_driver.c	2012-02-15 17:31:03.643780719 -0800
 +++ build/src/intel_driver.c	2012-02-15 17:28:59.439522179 -0800
-@@ -1164,8 +1164,6 @@ static Bool I830EnterVT(int scrnIndex, i
+@@ -1164,6 +1164,4 @@ static Bool I830EnterVT(int scrnIndex, i
  			   strerror(errno));
  	}
  
 -	intel_set_gem_max_sizes(scrn);
 -
- 	intel_copy_fb(scrn);
- 
  	if (!xf86SetDesiredModes(scrn))
 diff -Nurp patched/src/intel.h build/src/intel.h
 --- patched/src/intel.h	2012-02-15 17:31:03.643780719 -0800


Reply to: