[xorg-x11-drv-intel/f12/master] merge f13

Adam Jackson ajax at fedoraproject.org
Mon Aug 30 17:37:27 UTC 2010


commit ffcab5110c07404b706b4a0e863aa2aa61e7bd99
Author: Adam Jackson <ajax at redhat.com>
Date:   Mon Aug 30 13:37:14 2010 -0400

    merge f13

 .gitignore                           |    2 +
 copy-fb.patch                        |  125 ++++++++++++++--------------------
 intel-2.10.0-add-mbp-backlight.patch |   12 +++
 intel-2.11-lvds-first.patch          |   36 ++++++++++
 intel-2.11-no-pageflipping.patch     |   33 +++++++++
 intel-2.11.0-vga-clock-max.patch     |   16 ++++
 intel-2.12-fix-uxa-planemask.patch   |   40 +++++++++++
 intel-2.8.0-lvds-first.patch         |   25 ++++---
 sources                              |    4 +-
 uevent.patch                         |  103 ++++++++++++++--------------
 xorg-x11-drv-intel.spec              |   94 +++++++++++++++++++++----
 11 files changed, 337 insertions(+), 153 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index d1b046b..4a4721c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
 xf86-video-intel-2.9.0.tar.bz2
 intel-gpu-tools-20090908.tar.bz2
+xf86-video-intel-2.9.1.tar.bz2
+xf86-video-intel-2.10.0.tar.bz2
diff --git a/copy-fb.patch b/copy-fb.patch
index 2936cd7..df1e589 100644
--- a/copy-fb.patch
+++ b/copy-fb.patch
@@ -1,6 +1,6 @@
-diff -up xf86-video-intel-2.9.1/src/drmmode_display.c.jx xf86-video-intel-2.9.1/src/drmmode_display.c
---- xf86-video-intel-2.9.1/src/drmmode_display.c.jx	2009-10-26 10:52:16.000000000 -0400
-+++ xf86-video-intel-2.9.1/src/drmmode_display.c	2009-10-26 10:52:34.000000000 -0400
+diff -up xf86-video-intel-2.10.0/src/drmmode_display.c.jx xf86-video-intel-2.10.0/src/drmmode_display.c
+--- xf86-video-intel-2.10.0/src/drmmode_display.c.jx	2010-02-08 11:23:25.000000000 -0500
++++ xf86-video-intel-2.10.0/src/drmmode_display.c	2010-02-08 11:23:46.000000000 -0500
 @@ -35,6 +35,8 @@
  #include <unistd.h>
  #include <errno.h>
@@ -10,30 +10,7 @@ diff -up xf86-video-intel-2.9.1/src/drmmode_display.c.jx xf86-video-intel-2.9.1/
  #include "xorgVersion.h"
  
  #include "i830.h"
-@@ -315,7 +317,7 @@ drmmode_set_mode_major(xf86CrtcPtr crtc,
- 	unsigned int pitch = pScrn->displayWidth * pI830->cpp;
- 
- 	if (drmmode->fb_id == 0) {
--		ret = drmModeAddFB(drmmode->fd,
-+ 		ret = drmModeAddFB(drmmode->fd,
- 				   pScrn->virtualX, pScrn->virtualY,
- 				   pScrn->depth, pScrn->bitsPerPixel,
- 				   pitch, pI830->front_buffer->bo->handle,
-@@ -922,6 +924,13 @@ drmmode_output_dpms(xf86OutputPtr output
- 	drmmode_ptr drmmode = drmmode_output->drmmode;
- 	int i;
- 	drmModePropertyPtr props;
-+	I830Ptr     pI830 = I830PTR(output->scrn);
-+
-+	/* xf86Crtc.c calls dpms off in set desired modes, so ignore
-+	 * the request if we're starting up. */
-+
-+	if (pI830->starting)
-+		return;
- 
- 	for (i = 0; i < koutput->count_props; i++) {
- 		props = drmModeGetProperty(drmmode->fd, koutput->props[i]);
-@@ -1373,6 +1382,8 @@ drmmode_xf86crtc_resize (ScrnInfoPtr scr
+@@ -1375,6 +1377,8 @@ drmmode_xf86crtc_resize (ScrnInfoPtr scr
  	if (old_front)
  		i830_free_memory(scrn, old_front);
  
@@ -42,27 +19,27 @@ diff -up xf86-video-intel-2.9.1/src/drmmode_display.c.jx xf86-video-intel-2.9.1/
  	return TRUE;
  
   fail:
-@@ -1412,6 +1423,7 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn,
+@@ -1414,6 +1418,7 @@ Bool drmmode_pre_init(ScrnInfoPtr scrn, 
  		return FALSE;
  	}
  
-+	pScrn->canDoBGNoneRoot = TRUE;
- 	xf86CrtcSetSizeRange(pScrn, 320, 200, drmmode->mode_res->max_width,
++	scrn->canDoBGNoneRoot = TRUE;
+ 	xf86CrtcSetSizeRange(scrn, 320, 200, drmmode->mode_res->max_width,
  			     drmmode->mode_res->max_height);
  	for (i = 0; i < drmmode->mode_res->count_crtcs; i++)
-@@ -1447,3 +1459,98 @@ void drmmode_closefb(ScrnInfoPtr scrn)
+@@ -1458,3 +1463,98 @@ void drmmode_closefb(ScrnInfoPtr scrn)
  	drmModeRmFB(drmmode->fd, drmmode->fb_id);
  	drmmode->fb_id = 0;
  }
 +
 +static PixmapPtr
-+drmmode_create_pixmap_for_fbcon(ScrnInfoPtr pScrn)
++drmmode_create_pixmap_for_fbcon(ScrnInfoPtr scrn)
 +{
-+	xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
++	xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
 +	drmmode_crtc_private_ptr drmmode_crtc = xf86_config->crtc[0]->driver_private;
-+	ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex];
++	ScreenPtr pScreen = screenInfo.screens[scrn->scrnIndex];
 +	drmmode_ptr drmmode = drmmode_crtc->drmmode;
-+	I830Ptr pI830 = I830PTR(pScrn);
++	intel_screen_private *intel = intel_get_screen_private(scrn);
 +	drmModeFBPtr fbcon;
 +	struct drm_gem_flink flink;
 +	drm_intel_bo *bo;
@@ -83,15 +60,15 @@ diff -up xf86-video-intel-2.9.1/src/drmmode_display.c.jx xf86-video-intel-2.9.1/
 +
 +	flink.handle = fbcon->handle;
 +	if (ioctl(drmmode->fd, DRM_IOCTL_GEM_FLINK, &flink) < 0) {
-+		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
++		xf86DrvMsg(scrn->scrnIndex, X_ERROR,
 +			   "Couldn't flink fbcon handle\n");
 +		return NULL;
 +	}
 +
-+	bo = drm_intel_bo_gem_create_from_name(pI830->bufmgr,
++	bo = drm_intel_bo_gem_create_from_name(intel->bufmgr,
 +					       "fbcon", flink.name);
 +	if (bo == NULL) {
-+		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
++		xf86DrvMsg(scrn->scrnIndex, X_ERROR,
 +			   "Couldn't allocate bo for fbcon handle\n");
 +		return NULL;
 +	}
@@ -101,7 +78,7 @@ diff -up xf86-video-intel-2.9.1/src/drmmode_display.c.jx xf86-video-intel-2.9.1/
 +					fbcon->depth, fbcon->bpp,
 +					fbcon->pitch, NULL);
 +	if (pixmap == NULL) {
-+		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
++		xf86DrvMsg(scrn->scrnIndex, X_ERROR,
 +			   "Couldn't allocate pixmap fbcon contents\n");
 +		return NULL;
 +	}
@@ -113,62 +90,62 @@ diff -up xf86-video-intel-2.9.1/src/drmmode_display.c.jx xf86-video-intel-2.9.1/
 +	return pixmap;
 +}
 +
-+void drmmode_copy_fb(ScrnInfoPtr pScrn)
++void drmmode_copy_fb(ScrnInfoPtr scrn)
 +{
-+	ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex];
-+	I830Ptr pI830 = I830PTR(pScrn);
++	ScreenPtr pScreen = screenInfo.screens[scrn->scrnIndex];
++	intel_screen_private *intel = intel_get_screen_private(scrn);
 +	PixmapPtr src, dst;
-+	unsigned int pitch = pScrn->displayWidth * pI830->cpp;
++	unsigned int pitch = scrn->displayWidth * intel->cpp;
 +
-+	src = drmmode_create_pixmap_for_fbcon(pScrn);
++	src = drmmode_create_pixmap_for_fbcon(scrn);
 +	if (src == NULL) {
-+		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
++		xf86DrvMsg(scrn->scrnIndex, X_ERROR,
 +			   "Couldn't create pixmap for fbcon\n");
 +		return;
 +	}
 +
 +	/* We dont have a screen Pixmap yet */
 +	dst = GetScratchPixmapHeader(pScreen,
-+				     pScrn->virtualX, pScrn->virtualY,
-+				     pScrn->depth, pScrn->bitsPerPixel,
++				     scrn->virtualX, scrn->virtualY,
++				     scrn->depth, scrn->bitsPerPixel,
 +				     pitch,
 +				     NULL);
-+	i830_set_pixmap_bo(dst, pI830->front_buffer->bo);
++	i830_set_pixmap_bo(dst, intel->front_buffer->bo);
 +
-+	pI830->uxa_driver->prepare_copy(src, dst, -1, -1, GXcopy, FB_ALLONES);
++	intel->uxa_driver->prepare_copy(src, dst, -1, -1, GXcopy, FB_ALLONES);
 +
-+	pI830->uxa_driver->copy(dst, 0, 0, 0, 0,
-+				pScrn->virtualX, pScrn->virtualY);
++	intel->uxa_driver->copy(dst, 0, 0, 0, 0,
++				scrn->virtualX, scrn->virtualY);
 +
-+	pI830->uxa_driver->done_copy(dst);
++	intel->uxa_driver->done_copy(dst);
 +
-+	I830EmitFlush(pScrn);
-+	intel_batch_flush(pScrn, TRUE);
++	/* I830EmitFlush(scrn); */
++	intel_batch_submit(scrn);
 +
 +	(*pScreen->DestroyPixmap)(src);
 +	(*pScreen->DestroyPixmap)(dst);
 +}
 +
-diff -up xf86-video-intel-2.9.1/src/i830_driver.c.jx xf86-video-intel-2.9.1/src/i830_driver.c
---- xf86-video-intel-2.9.1/src/i830_driver.c.jx	2009-10-26 07:48:05.000000000 -0400
-+++ xf86-video-intel-2.9.1/src/i830_driver.c	2009-10-26 10:52:34.000000000 -0400
-@@ -3014,6 +3014,8 @@ I830EnterVT(int scrnIndex, int flags)
-        /* Clear the framebuffer */
-        memset(pI830->FbBase + pScrn->fbOffset, 0,
- 	      pScrn->virtualY * pScrn->displayWidth * pI830->cpp);
-+   } else {
-+	drmmode_copy_fb(pScrn);
-    }
+diff -up xf86-video-intel-2.10.0/src/i830_driver.c.jx xf86-video-intel-2.10.0/src/i830_driver.c
+--- xf86-video-intel-2.10.0/src/i830_driver.c.jx	2010-01-04 17:09:52.000000000 -0500
++++ xf86-video-intel-2.10.0/src/i830_driver.c	2010-02-08 11:23:46.000000000 -0500
+@@ -1507,6 +1507,8 @@ static Bool I830EnterVT(int scrnIndex, i
+ 	if (IS_I965G(intel))
+ 		gen4_render_state_init(scrn);
+ 
++	drmmode_copy_fb(scrn);
++
+ 	if (!xf86SetDesiredModes(scrn))
+ 		return FALSE;
  
-    if (!xf86SetDesiredModes (pScrn))
-diff -up xf86-video-intel-2.9.1/src/i830.h.jx xf86-video-intel-2.9.1/src/i830.h
---- xf86-video-intel-2.9.1/src/i830.h.jx	2009-10-26 07:48:05.000000000 -0400
-+++ xf86-video-intel-2.9.1/src/i830.h	2009-10-26 10:52:34.000000000 -0400
-@@ -694,6 +694,7 @@ extern Bool drmmode_pre_init(ScrnInfoPtr
- extern int drmmode_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, xf86CrtcPtr crtc);
- extern void drmmode_closefb(ScrnInfoPtr scrn);
+diff -up xf86-video-intel-2.10.0/src/i830.h.jx xf86-video-intel-2.10.0/src/i830.h
+--- xf86-video-intel-2.10.0/src/i830.h.jx	2010-01-04 17:09:52.000000000 -0500
++++ xf86-video-intel-2.10.0/src/i830.h	2010-02-08 11:23:46.000000000 -0500
+@@ -430,6 +430,7 @@ extern void drmmode_closefb(ScrnInfoPtr 
+ extern int drmmode_get_pipe_from_crtc_id(drm_intel_bufmgr * bufmgr,
+ 					 xf86CrtcPtr crtc);
  extern int drmmode_output_dpms_status(xf86OutputPtr output);
-+extern void drmmode_copy_fb(ScrnInfoPtr pScrn);
- void
- drmmode_crtc_set_cursor_bo(xf86CrtcPtr crtc, dri_bo *cursor);
++extern void drmmode_copy_fb(ScrnInfoPtr scrn);
+ extern int drmmode_crtc_id(xf86CrtcPtr crtc);
+ void drmmode_crtc_set_cursor_bo(xf86CrtcPtr crtc, dri_bo * cursor);
  
diff --git a/intel-2.10.0-add-mbp-backlight.patch b/intel-2.10.0-add-mbp-backlight.patch
new file mode 100644
index 0000000..ddaab89
--- /dev/null
+++ b/intel-2.10.0-add-mbp-backlight.patch
@@ -0,0 +1,12 @@
+Index: xf86-video-intel-2.11.0/src/drmmode_display.c
+===================================================================
+--- xf86-video-intel-2.11.0/src/drmmode_display.c
++++ xf86-video-intel-2.11.0/src/drmmode_display.c	2010-04-29 00:18:34.000000000 +0200
+@@ -103,6 +103,7 @@
+     "asus-laptop",
+     "eeepc",
+     "thinkpad_screen",
++    "mbp_backlight",
+     "acpi_video1",
+     "acpi_video0",
+     "fujitsu-laptop",
diff --git a/intel-2.11-lvds-first.patch b/intel-2.11-lvds-first.patch
new file mode 100644
index 0000000..3177b0b
--- /dev/null
+++ b/intel-2.11-lvds-first.patch
@@ -0,0 +1,36 @@
+diff -up xf86-video-intel-20100319/src/drmmode_display.c.jx xf86-video-intel-20100319/src/drmmode_display.c
+--- xf86-video-intel-20100319/src/drmmode_display.c.jx	2010-03-22 13:24:13.483183499 -0400
++++ xf86-video-intel-20100319/src/drmmode_display.c	2010-03-22 13:25:59.810184060 -0400
+@@ -1452,7 +1452,7 @@ Bool drmmode_pre_init(ScrnInfoPtr scrn, 
+ 	intel_screen_private *intel = intel_get_screen_private(scrn);
+ 	struct drm_i915_getparam gp;
+ 	drmmode_ptr drmmode;
+-	unsigned int i;
++	unsigned int i, lvds = -1;
+ 	int has_flipping = 0;
+ 
+ 	drmmode = xnfalloc(sizeof *drmmode);
+@@ -1473,9 +1473,22 @@ Bool drmmode_pre_init(ScrnInfoPtr scrn, 
+ 			     drmmode->mode_res->max_height);
+ 	for (i = 0; i < drmmode->mode_res->count_crtcs; i++)
+ 		drmmode_crtc_init(scrn, drmmode, i);
++ 
++        /* do LVDS first */
++        for (i = 0; i < drmmode->mode_res->count_connectors; i++) {
++                drmModeConnectorPtr koutput =
++                    drmModeGetConnector(drmmode->fd,
++                                        drmmode->mode_res->connectors[i]);
++                if (koutput->connector_type == DRM_MODE_CONNECTOR_LVDS) {
++                        drmmode_output_init(scrn, drmmode, i);
++                        lvds = i;
++                }
++                drmModeFreeConnector(koutput);
++        }
+ 
+ 	for (i = 0; i < drmmode->mode_res->count_connectors; i++)
+-		drmmode_output_init(scrn, drmmode, i);
++                if (i != lvds)
++		        drmmode_output_init(scrn, drmmode, i);
+ 
+ 	xf86InitialConfiguration(scrn, TRUE);
+ 
diff --git a/intel-2.11-no-pageflipping.patch b/intel-2.11-no-pageflipping.patch
new file mode 100644
index 0000000..39500e2
--- /dev/null
+++ b/intel-2.11-no-pageflipping.patch
@@ -0,0 +1,33 @@
+diff -up xf86-video-intel-2.11.0/src/drmmode_display.c.no-flip xf86-video-intel-2.11.0/src/drmmode_display.c
+--- xf86-video-intel-2.11.0/src/drmmode_display.c.no-flip	2010-05-03 15:30:19.000000000 -0400
++++ xf86-video-intel-2.11.0/src/drmmode_display.c	2010-05-03 15:30:59.000000000 -0400
+@@ -1504,10 +1504,15 @@ Bool drmmode_pre_init(ScrnInfoPtr scrn, 
+ 	gp.value = &has_flipping;
+ 	(void)drmCommandWriteRead(intel->drmSubFD, DRM_I915_GETPARAM, &gp,
+ 				  sizeof(gp));
++
++        xf86DrvMsg(scrn->scrnIndex, X_INFO,
++                   "Pageflipping %s in kernel, %s disabled in X\n",
++                   has_flipping ? "enabled" : "disabled",
++                   has_flipping ? "but" : "and");
+ 	if (has_flipping) {
+ 		xf86DrvMsg(scrn->scrnIndex, X_INFO,
+-			   "Kernel page flipping support detected, enabling\n");
+-		intel->use_pageflipping = TRUE;
++			   "Don't panic: https://bugzilla.redhat.com/588421\n");
++		intel->use_pageflipping = FALSE;
+ 		drmmode->flip_count = 0;
+ 		drmmode->event_context.version = DRM_EVENT_CONTEXT_VERSION;
+ 		drmmode->event_context.vblank_handler = drmmode_vblank_handler;
+diff -up xf86-video-intel-2.11.0/src/i830_dri.c.no-flip xf86-video-intel-2.11.0/src/i830_dri.c
+--- xf86-video-intel-2.11.0/src/i830_dri.c.no-flip	2010-03-29 14:23:02.000000000 -0400
++++ xf86-video-intel-2.11.0/src/i830_dri.c	2010-05-03 15:30:19.000000000 -0400
+@@ -1013,7 +1013,7 @@ Bool I830DRI2ScreenInit(ScreenPtr screen
+ 
+ 	info.CopyRegion = I830DRI2CopyRegion;
+ #if DRI2INFOREC_VERSION >= 4
+-	if (intel->use_pageflipping) {
++	if (intel->use_pageflipping || 1) {
+ 	    info.version = 4;
+ 	    info.ScheduleSwap = I830DRI2ScheduleSwap;
+ 	    info.GetMSC = I830DRI2GetMSC;
diff --git a/intel-2.11.0-vga-clock-max.patch b/intel-2.11.0-vga-clock-max.patch
new file mode 100644
index 0000000..80eeb07
--- /dev/null
+++ b/intel-2.11.0-vga-clock-max.patch
@@ -0,0 +1,16 @@
+diff -up xf86-video-intel-2.11.0/src/drmmode_display.c.jx xf86-video-intel-2.11.0/src/drmmode_display.c
+--- xf86-video-intel-2.11.0/src/drmmode_display.c.jx	2010-04-16 10:28:08.000000000 -0400
++++ xf86-video-intel-2.11.0/src/drmmode_display.c	2010-04-26 15:28:58.000000000 -0400
+@@ -689,6 +689,12 @@ drmmode_output_mode_valid(xf86OutputPtr 
+ 		else
+ 			return MODE_OK;
+ 	}
++
++	/* I don't actually believe any VGA is this good */
++	if (koutput->connector_type == DRM_MODE_CONNECTOR_VGA)
++		if (pModes->Clock > 250000)
++			return MODE_CLOCK_HIGH;
++
+ 	return MODE_OK;
+ }
+ 
diff --git a/intel-2.12-fix-uxa-planemask.patch b/intel-2.12-fix-uxa-planemask.patch
new file mode 100644
index 0000000..eb89433
--- /dev/null
+++ b/intel-2.12-fix-uxa-planemask.patch
@@ -0,0 +1,40 @@
+From feff2ec80eeeba5074d19efcddf4867adf639b4f Mon Sep 17 00:00:00 2001
+From: Dave Airlie <airlied at redhat.com>
+Date: Mon, 5 Jul 2010 09:07:08 +1000
+Subject: [PATCH] uxa: don't compare planemask with FB_ALLONES.
+
+planemask is an unsigned long initialised to ~0, on 64-bit this is not equal
+to an (unsigned int)-1.
+
+Use the macro provided to do this.
+
+Signed-off-by: Dave Airlie <airlied at redhat.com>
+---
+ uxa/uxa-accel.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/uxa/uxa-accel.c b/uxa/uxa-accel.c
+index ded66a1..633b433 100644
+--- a/uxa/uxa-accel.c
++++ b/uxa/uxa-accel.c
+@@ -81,7 +81,7 @@ uxa_fill_spans(DrawablePtr pDrawable, GCPtr pGC, int n,
+ 	if (!dst_pixmap)
+ 		goto fallback;
+ 
+-	if (pGC->alu != GXcopy || pGC->planemask != FB_ALLONES)
++	if (pGC->alu != GXcopy || !UXA_PM_IS_SOLID(pDrawable, pGC->planemask))
+ 		goto solid;
+ 
+ 	format = PictureMatchFormat(screen,
+@@ -1048,7 +1048,7 @@ uxa_fill_region_solid(DrawablePtr pDrawable,
+ 	extents = REGION_EXTENTS(screen, pRegion);
+ 
+ 	/* Using GEM, the relocation costs outweigh the advantages of the blitter */
+-	if (nbox == 1 || (alu != GXcopy && alu != GXclear) || planemask != FB_ALLONES) {
++	if (nbox == 1 || (alu != GXcopy && alu != GXclear) || !UXA_PM_IS_SOLID(&pixmap->drawable, planemask)) {
+ try_solid:
+ 		if (uxa_screen->info->check_solid &&
+ 		    !uxa_screen->info->check_solid(&pixmap->drawable, alu, planemask))
+-- 
+1.7.1
+
diff --git a/intel-2.8.0-lvds-first.patch b/intel-2.8.0-lvds-first.patch
index 7f843a3..ff2ff43 100644
--- a/intel-2.8.0-lvds-first.patch
+++ b/intel-2.8.0-lvds-first.patch
@@ -1,7 +1,7 @@
-diff -up xf86-video-intel-2.8.0/src/drmmode_display.c.jx xf86-video-intel-2.8.0/src/drmmode_display.c
---- xf86-video-intel-2.8.0/src/drmmode_display.c.jx	2009-07-28 14:10:36.000000000 -0400
-+++ xf86-video-intel-2.8.0/src/drmmode_display.c	2009-07-28 14:20:10.000000000 -0400
-@@ -1131,7 +1131,7 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn,
+diff -up xf86-video-intel-2.10.0/src/drmmode_display.cda xf86-video-intel-2.10.0/src/drmmode_display.c
+--- xf86-video-intel-2.10.0/src/drmmode_display.cda	2010-01-13 18:45:02.000000000 +1000
++++ xf86-video-intel-2.10.0/src/drmmode_display.c	2010-01-13 18:46:22.000000000 +1000
+@@ -1419,7 +1419,7 @@ Bool drmmode_pre_init(ScrnInfoPtr scrn, 
  {
  	xf86CrtcConfigPtr   xf86_config;
  	drmmode_ptr drmmode;
@@ -10,26 +10,27 @@ diff -up xf86-video-intel-2.8.0/src/drmmode_display.c.jx xf86-video-intel-2.8.0/
  
  	drmmode = xnfalloc(sizeof *drmmode);
  	drmmode->fd = fd;
-@@ -1153,8 +1153,21 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn,
+@@ -1441,9 +1441,22 @@ Bool drmmode_pre_init(ScrnInfoPtr scrn, 
+ 			     drmmode->mode_res->max_height);
  	for (i = 0; i < drmmode->mode_res->count_crtcs; i++)
- 		drmmode_crtc_init(pScrn, drmmode, i);
- 
+ 		drmmode_crtc_init(scrn, drmmode, i);
++ 
 +        /* do LVDS first */
 +        for (i = 0; i < drmmode->mode_res->count_connectors; i++) {
 +                drmModeConnectorPtr koutput =
 +                    drmModeGetConnector(drmmode->fd,
 +                                        drmmode->mode_res->connectors[i]);
 +                if (koutput->connector_type == DRM_MODE_CONNECTOR_LVDS) {
-+                        drmmode_output_init(pScrn, drmmode, i);
++                        drmmode_output_init(scrn, drmmode, i);
 +                        lvds = i;
 +                }
 +                drmModeFreeConnector(koutput);
 +        }
-+
+ 
  	for (i = 0; i < drmmode->mode_res->count_connectors; i++)
--		drmmode_output_init(pScrn, drmmode, i);
+-		drmmode_output_init(scrn, drmmode, i);
 +                if (i != lvds)
-+		        drmmode_output_init(pScrn, drmmode, i);
++		        drmmode_output_init(scrn, drmmode, i);
  
- 	xf86InitialConfiguration(pScrn, TRUE);
+ 	xf86InitialConfiguration(scrn, TRUE);
  
diff --git a/sources b/sources
index 9adbfdb..c4c0e0c 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-d64507d329cff1228f8a88ec2e9f58cb  intel-gpu-tools-20090908.tar.bz2
-8951d0366c16991badb7f9050556f4f3  xf86-video-intel-2.9.1.tar.bz2
+8314def847dcdc4f2970e2d193054f96  xf86-video-intel-2.12.0.tar.bz2
+29d469beab04ee3ca8da86362b44a418  intel-gpu-tools-20100625.tar.bz2
diff --git a/uevent.patch b/uevent.patch
index 4a91dff..ab040fa 100644
--- a/uevent.patch
+++ b/uevent.patch
@@ -1,7 +1,7 @@
-diff -up xf86-video-intel-20090812/src/i830_driver.c.uevent xf86-video-intel-20090812/src/i830_driver.c
---- xf86-video-intel-20090812/src/i830_driver.c.uevent	2009-09-01 15:41:32.803946753 -0400
-+++ xf86-video-intel-20090812/src/i830_driver.c	2009-09-01 15:41:32.836946701 -0400
-@@ -84,6 +84,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
+diff -up xf86-video-intel-2.12.0/src/i830_driver.c.uevent xf86-video-intel-2.12.0/src/i830_driver.c
+--- xf86-video-intel-2.12.0/src/i830_driver.c.uevent	2010-06-24 16:29:49.000000000 -0400
++++ xf86-video-intel-2.12.0/src/i830_driver.c	2010-06-25 11:40:01.335975581 -0400
+@@ -81,6 +81,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
  #include "i915_drm.h"
  #include <xf86drmMode.h>
  
@@ -10,18 +10,18 @@ diff -up xf86-video-intel-20090812/src/i830_driver.c.uevent xf86-video-intel-200
  #define BIT(x) (1 << (x))
  #define MAX(a,b) ((a) > (b) ? (a) : (b))
  #define NB_OF(x) (sizeof (x) / sizeof (*x))
-@@ -2526,6 +2528,80 @@ i830_disable_render_standby(ScrnInfoPtr 
-    }
+@@ -996,6 +998,80 @@ int i830_crtc_to_pipe(xf86CrtcPtr crtc)
+ 	return drmmode_get_pipe_from_crtc_id(intel->bufmgr, crtc);
  }
  
 +static void
 +I830HandleUEvents(int fd, void *closure)
 +{
-+    ScrnInfoPtr pScrn = closure;
-+    I830Ptr pI830 = I830PTR(pScrn);
++    ScrnInfoPtr scrn = closure;
++	intel_screen_private *intel = intel_get_screen_private(scrn);
 +    struct udev_device *dev;
 +
-+    dev = udev_monitor_receive_device(pI830->uevent_monitor);
++    dev = udev_monitor_receive_device(intel->uevent_monitor);
 +    if (!dev)
 +	return;
 +
@@ -31,15 +31,15 @@ diff -up xf86-video-intel-20090812/src/i830_driver.c.uevent xf86-video-intel-200
 +     * XXX but we should definitely trim by drm node
 +     */
 +
-+    RRGetInfo(screenInfo.screens[pScrn->scrnIndex], TRUE);
++    RRGetInfo(screenInfo.screens[scrn->scrnIndex], TRUE);
 +
 +    udev_device_unref(dev);
 +}
 +
 +static void
-+I830UeventInit(ScrnInfoPtr pScrn)
++I830UeventInit(ScrnInfoPtr scrn)
 +{
-+    I830Ptr pI830 = I830PTR(pScrn);
++	intel_screen_private *intel = intel_get_screen_private(scrn);
 +    struct udev *u;
 +    struct udev_monitor *mon;
 +
@@ -64,53 +64,55 @@ diff -up xf86-video-intel-20090812/src/i830_driver.c.uevent xf86-video-intel-200
 +	return;
 +    }
 +
-+    pI830->uevent_handler =
++    intel->uevent_handler =
 +	xf86AddGeneralHandler(udev_monitor_get_fd(mon),
 +			      I830HandleUEvents,
-+			      pScrn);
++			      scrn);
 +
-+    pI830->uevent_monitor = mon;
++    intel->uevent_monitor = mon;
 +}
 +
 +static void
-+I830UeventFini(ScrnInfoPtr pScrn)
++I830UeventFini(ScrnInfoPtr scrn)
 +{
-+    I830Ptr pI830 = I830PTR(pScrn);
++	intel_screen_private *intel = intel_get_screen_private(scrn);
 +
-+    if (pI830->uevent_handler)
++    if (intel->uevent_handler)
 +    {
-+	struct udev *u = udev_monitor_get_udev(pI830->uevent_monitor);
++	struct udev *u = udev_monitor_get_udev(intel->uevent_monitor);
 +
-+	xf86RemoveGeneralHandler(pI830->uevent_handler);
++	xf86RemoveGeneralHandler(intel->uevent_handler);
 +
-+	udev_monitor_unref(pI830->uevent_monitor);
++	udev_monitor_unref(intel->uevent_monitor);
 +	udev_unref(u);
 +    }
 +}
 +
  static Bool
- I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv)
  {
-@@ -2834,6 +2910,8 @@ I830ScreenInit(int scrnIndex, ScreenPtr 
-    pI830->closing = FALSE;
-    pI830->suspended = FALSE;
+@@ -1233,6 +1309,8 @@ I830ScreenInit(int scrnIndex, ScreenPtr 
  
-+   I830UeventInit(pScrn);
+ 	intel->suspended = FALSE;
+ 
++	I830UeventInit(scrn);
 +
-    return TRUE;
+ 	return uxa_resources_init(screen);
  }
  
-@@ -3093,6 +3171,8 @@ I830CloseScreen(int scrnIndex, ScreenPtr
- 
-    pI830->closing = TRUE;
- 
-+   I830UeventFini(pScrn);
-+
-    if (pScrn->vtSema == TRUE) {
-       I830LeaveVT(scrnIndex, 0);
-    }
---- xf86-video-intel-20090812/src/i830.h.uevent	2009-09-01 15:41:32.825975679 -0400
-+++ xf86-video-intel-20090812/src/i830.h	2009-09-01 15:41:32.838947026 -0400
+@@ -1306,7 +1384,8 @@ static Bool I830CloseScreen(int scrnInde
+ {
+ 	ScrnInfoPtr scrn = xf86Screens[scrnIndex];
+ 	intel_screen_private *intel = intel_get_screen_private(scrn);
+-
++ 
++	I830UeventFini(scrn);
+ 	if (scrn->vtSema == TRUE) {
+ 		I830LeaveVT(scrnIndex, 0);
+ 	}
+diff -up xf86-video-intel-2.12.0/src/i830.h.uevent xf86-video-intel-2.12.0/src/i830.h
+--- xf86-video-intel-2.12.0/src/i830.h.uevent	2010-06-24 16:29:49.000000000 -0400
++++ xf86-video-intel-2.12.0/src/i830.h	2010-06-25 11:39:15.665029821 -0400
 @@ -47,6 +47,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN
  #ifndef _I830_H_
  #define _I830_H_
@@ -120,19 +122,20 @@ diff -up xf86-video-intel-20090812/src/i830_driver.c.uevent xf86-video-intel-200
  #include "xf86_OSproc.h"
  #include "compiler.h"
  #include "xf86PciInfo.h"
-@@ -618,6 +620,9 @@ typedef struct _I830Rec {
-     /** User option to print acceleration fallback info to the server log. */
-    Bool fallback_debug;
-    struct sdvo_device_mapping sdvo_mappings[2];
-+
-+   struct udev_monitor *uevent_monitor;
-+   InputHandlerProc uevent_handler;
- } I830Rec;
+@@ -432,6 +434,9 @@ typedef struct intel_screen_private {
+ 	 */
+ 	Bool fallback_debug;
+ 	unsigned debug_flush;
++
++	struct udev_monitor *uevent_monitor;
++	InputHandlerProc uevent_handler;
+ } intel_screen_private;
  
- #define I830PTR(p) ((I830Ptr)((p)->driverPrivate))
---- xf86-video-intel-20090812/src/Makefile.am.uevent	2009-08-11 14:50:03.000000000 -0400
-+++ xf86-video-intel-20090812/src/Makefile.am	2009-09-01 15:44:06.552076300 -0400
-@@ -32,7 +32,7 @@ AM_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ 
+ enum {
+diff -up xf86-video-intel-2.12.0/src/Makefile.am.uevent xf86-video-intel-2.12.0/src/Makefile.am
+--- xf86-video-intel-2.12.0/src/Makefile.am.uevent	2010-06-24 16:29:37.000000000 -0400
++++ xf86-video-intel-2.12.0/src/Makefile.am	2010-06-25 11:39:15.665029821 -0400
+@@ -32,7 +32,7 @@ AM_CFLAGS = @CWARNFLAGS@ @XORG_CFLAGS@ @
  intel_drv_la_LTLIBRARIES = intel_drv.la
  intel_drv_la_LDFLAGS = -module -avoid-version
  intel_drv_ladir = @moduledir@/drivers
diff --git a/xorg-x11-drv-intel.spec b/xorg-x11-drv-intel.spec
index bf1cd26..6055656 100644
--- a/xorg-x11-drv-intel.spec
+++ b/xorg-x11-drv-intel.spec
@@ -2,18 +2,20 @@
 %define legacyver   2.6.0-8
 %define moduledir %(pkg-config xorg-server --variable=moduledir )
 %define driverdir	%{moduledir}/drivers
-%define gputoolsdate 20090908
+%define gputoolsdate 20100625
+#define gitdate 20100326
 
 Summary:   Xorg X11 Intel video driver
 Name:      xorg-x11-drv-intel
-Version:   2.9.1
-Release:   1%{?dist}
+Version:   2.12.0
+Release:   5%{?dist}
 URL:       http://www.x.org
 License:   MIT
 Group:     User Interface/X Hardware Support
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 Source0:    http://xorg.freedesktop.org/archive/individual/driver/xf86-video-intel-%{version}.tar.bz2 
+#Source0:    xf86-video-intel-%{gitdate}.tar.bz2
 Source1:    make-intel-gpu-tools-snapshot.sh
 Source2:    intel.xinf
 Source3:    intel-gpu-tools-%{gputoolsdate}.tar.bz2
@@ -24,10 +26,19 @@ Patch2: copy-fb.patch
 
 # needs to be upstreamed
 Patch20: intel-2.8.0-kms-get-crtc.patch
-Patch21: intel-2.8.0-lvds-first.patch
+Patch21: intel-2.11-lvds-first.patch
+Patch22: intel-2.11.0-vga-clock-max.patch
+
+# backported
+Patch23: intel-2.12-fix-uxa-planemask.patch
 
 Patch60: uevent.patch
-Patch70: lvds-modes.patch
+
+# https://bugs.freedesktop.org/show_bug.cgi?id=27885
+Patch61: intel-2.10.0-add-mbp-backlight.patch
+
+# https://bugzilla.redhat.com/588421
+Patch62: intel-2.11-no-pageflipping.patch
 
 ExclusiveArch: %{ix86} x86_64 ia64
 
@@ -35,12 +46,16 @@ BuildRequires: autoconf automake libtool
 BuildRequires: xorg-x11-server-devel >= 1.4.99.1
 BuildRequires: libXvMC-devel
 BuildRequires: mesa-libGL-devel >= 6.5-9
-BuildRequires: libdrm-devel >= 2.4.6
-BuildRequires: kernel-headers
+BuildRequires: libdrm-devel >= 2.4.17-1
+BuildRequires: kernel-headers >= 2.6.32.3
 BuildRequires: libudev-devel
+BuildRequires: libxcb-devel >= 1.5 
+BuildRequires: xcb-util-devel
 
 Requires:  hwdata
 Requires:  xorg-x11-server-Xorg >= 1.4.99.1
+Requires:  libxcb >= 1.5
+Requires:  xcb-util
 
 Requires:  kernel >= 2.6.29-0.203.rc7.fc11
 Provides:   %{legacyname} = %{legacyver}
@@ -76,18 +91,21 @@ Debugging tools for Intel graphics chips
 %prep
 %setup -q -n xf86-video-intel-%{dirsuffix} -b3
 %patch1 -p1 -b .svideo
-%patch2 -p1 -b .copy-fb
+#patch2 -p1 -b .copy-fb
 %patch20 -p1 -b .get-crtc
 %patch21 -p1 -b .lvds-first
+%patch22 -p1 -b .vga-clock
+%patch23 -p1 -b .uxa-fix
 %patch60 -p1 -b .uevent
-%patch70 -p1 -b .lvds-modes
+%patch61 -p1 -b .mbp-backlight
+%patch62 -p1 -b .no-flip
 
 %build
  
 # Need autoreconf also when patching a release (to pick up -ludev)
 autoreconf -vi
 
-%configure --disable-static --libdir=%{_libdir} --mandir=%{_mandir} --enable-dri --enable-kms
+%configure --disable-static --libdir=%{_libdir} --mandir=%{_mandir} --enable-dri --enable-xvmc
 make
 
 pushd ../intel-gpu-tools-%{gputoolsdate}
@@ -114,12 +132,8 @@ rm -rf $RPM_BUILD_ROOT
 
 %files
 %defattr(-,root,root,-)
+%doc COPYING
 %{driverdir}/intel_drv.so
-%{driverdir}/ch7xxx.so
-%{driverdir}/sil164.so
-%{driverdir}/ch7017.so
-%{driverdir}/ivch.so
-%{driverdir}/tfp410.so
 %{_datadir}/hwdata/videoaliases/intel.xinf
 %{_libdir}/libI810XvMC.so.1*
 %{_libdir}/libIntelXvMC.so.1*
@@ -132,10 +146,60 @@ rm -rf $RPM_BUILD_ROOT
 
 %files -n intel-gpu-tools
 %defattr(-,root,root,-)
+%doc COPYING
 %{_bindir}/intel_*
 %{_mandir}/man1/intel_*.1*
 
 %changelog
+* Thu Jul 08 2010 Adam Jackson <ajax at redhat.com> 2.12.0-5
+- Install COPYING.
+
+* Mon Jul 05 2010 Dave Airlie <airlied at redhat.com> 2.12.0-4
+- rebuild for fixed patch.
+
+* Mon Jul 05 2010 Peter Hutterer <peter.hutterer at redhat.com> - 2.12.0-3
+- rebuild for X Server 1.9
+
+* Mon Jul 05 2010 Dave Airlie <airlied at redhat.com> 2.12.0-2
+- add fix for UXA planemask issue
+
+* Fri Jun 25 2010 Adam Jackson <ajax at redhat.com> 2.12.0-1
+- intel 2.12.0
+- new gpu-tools snapshot
+
+* Fri Jun 25 2010 Dave Airlie <airlied at redhat.com> 2.11.0-5
+- intel-2.11.0-fix-rotate-flushing-965.patch: fix rotation issues
+
+* Mon May 03 2010 Adam Jackson <ajax at redhat.com> 2.11.0-4
+- intel-2.11-no-pageflipping.patch: Disable pageflipping (#588421)
+
+* Fri Apr 30 2010 Bastien Nocera <bnocera at redhat.com> 2.11.0-3
+- Add MacBook backlight support
+
+* Mon Apr 26 2010 Adam Jackson <ajax at redhat.com> 2.11.0-2
+- intel-2.11.0-vga-clock-max.patch: Clamp VGA pixel clock to 250MHz,
+  anything higher's going to look awful anyway. (#559426)
+
+* Fri Apr 16 2010 Adam Jackson <ajax at redhat.com> 2.11.0-1
+- intel 2.11.0
+- new gpu tools snapshot
+
+* Fri Mar 26 2010 Adam Jackson <ajax at redhat.com> 2.10.0-5
+- New driver snapshot (2.10.92ish).
+- New GPU tools snapshot.
+
+* Wed Feb 10 2010 Adam Jackson <ajax at redhat.com> 2.10.0-4
+- Remove call to I830EmitFlush (#563212)
+
+* Mon Feb 08 2010 Adam Jackson <ajax at redhat.com> 2.10.0-3
+- Re-apply patches.
+
+* Thu Jan 21 2010 Peter Hutterer <peter.hutterer at redhat.com> - 2.10.0-2
+- Rebuild for server 1.8
+
+* Wed Jan 13 2010 Dave Airlie <airlied at redhat.com> 2.10.0-1
+- intel 2.10.0 - needs libxcb for XvMC client
+
 * Mon Oct 26 2009 Adam Jackson <ajax at redhat.com> 2.9.1-1
 - intel 2.9.1
 


More information about the scm-commits mailing list