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

xserver-xorg-video-nouveau: Changes to 'upstream-unstable'



 configure.ac          |    2 
 src/drmmode_display.c |   70 +++++++
 src/nouveau_dri2.c    |  216 +++++++++++++++++++-----
 src/nouveau_exa.c     |   65 ++++++-
 src/nouveau_local.h   |    1 
 src/nv04_accel.h      |   10 +
 src/nv30_exa.c        |  272 +++++++++++++++----------------
 src/nv40_exa.c        |  438 +++++++++++++++++++++++++-------------------------
 src/nv50_exa.c        |    9 -
 src/nv_accel_common.c |   13 +
 src/nv_driver.c       |  274 +++++++++++++++++++++++++------
 src/nv_include.h      |    9 -
 src/nv_proto.h        |    1 
 src/nv_shadow.c       |    7 
 src/nv_type.h         |   10 -
 src/nvc0_accel.c      |   59 ++++++
 src/nvc0_accel.h      |    1 
 src/nvc0_exa.c        |   43 ++--
 src/nvc0_shader.h     |    4 
 src/nvc0_xv.c         |    4 
 src/nve0_shader.h     |    4 
 21 files changed, 997 insertions(+), 515 deletions(-)

New commits:
commit 6771424d79e541d2fa7253a582db3dc9108fd97d
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Wed Mar 27 09:50:03 2013 +0100

    bump to 1.0.7
    
    Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>

diff --git a/configure.ac b/configure.ac
index 7535bfe..137de9c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
 
 AC_PREREQ([2.60])
 AC_INIT([xf86-video-nouveau],
-        [1.0.6],
+        [1.0.7],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-video-nouveau])
 

commit 84998320162a74a0861b7be1fcc230e50f08424a
Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date:   Mon Mar 25 13:55:37 2013 +0100

    Clean up some errors on closing.
    
    If forced close happens, all ioctl's will fail. Some of the handlers
    also need to be unregistered before the module is unloaded entirely.

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 9eca60f..6033a6d 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -627,6 +627,9 @@ drmmode_output_detect(xf86OutputPtr output)
 	drmmode_output->mode_output =
 		drmModeGetConnector(drmmode->fd, drmmode_output->output_id);
 
+	if (!drmmode_output->mode_output)
+		return XF86OutputStatusDisconnected;
+
 	switch (drmmode_output->mode_output->connection) {
 	case DRM_MODE_CONNECTED:
 		status = XF86OutputStatusConnected;
@@ -663,6 +666,9 @@ drmmode_output_get_modes(xf86OutputPtr output)
 	drmModePropertyPtr props;
 	xf86MonPtr ddc_mon = NULL;
 
+	if (!koutput)
+		return NULL;
+
 	/* look for an EDID property */
 	for (i = 0; i < koutput->count_props; i++) {
 		props = drmModeGetProperty(drmmode->fd, koutput->props[i]);
@@ -927,6 +933,9 @@ drmmode_output_get_property(xf86OutputPtr output, Atom property)
 			drmModeGetConnector(drmmode->fd, drmmode_output->output_id);
 	}
 
+	if (!drmmode_output->mode_output)
+		return FALSE;
+
 	for (i = 0; i < drmmode_output->num_props; i++) {
 		drmmode_prop_ptr p = &drmmode_output->props[i];
 		if (p->atoms[0] != property)
@@ -1437,6 +1446,7 @@ drmmode_uevent_fini(ScrnInfoPtr scrn)
 	if (drmmode->uevent_monitor) {
 		struct udev *u = udev_monitor_get_udev(drmmode->uevent_monitor);
 
+		RemoveGeneralSocket(udev_monitor_get_fd(drmmode->uevent_monitor));
 		udev_monitor_unref(drmmode->uevent_monitor);
 		udev_unref(u);
 	}
@@ -1524,6 +1534,12 @@ void
 drmmode_screen_fini(ScreenPtr pScreen)
 {
 	ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
+	drmmode_ptr drmmode = drmmode_from_scrn(scrn);
 
 	drmmode_uevent_fini(scrn);
+
+	/* Register a wakeup handler to get informed on DRM events */
+	RemoveBlockAndWakeupHandlers((BlockHandlerProcPtr)NoopDDA,
+				     drmmode_wakeup_handler, scrn);
+	RemoveGeneralSocket(drmmode->fd);
 }
diff --git a/src/nv_driver.c b/src/nv_driver.c
index 9f62fe2..2b74fc6 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -432,8 +432,8 @@ NVLeaveVT(VT_FUNC_ARGS_DECL)
 	xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVLeaveVT is called.\n");
 
 	ret = drmDropMaster(pNv->dev->fd);
-	if (ret)
-		ErrorF("Error dropping master: %d\n", ret);
+	if (ret && errno != EIO && errno != ENODEV)
+		ErrorF("Error dropping master: %i(%m)\n", -errno);
 }
 
 static void
@@ -624,8 +624,9 @@ NVCloseDRM(ScrnInfoPtr pScrn)
 {
 	NVPtr pNv = NVPTR(pScrn);
 
-	nouveau_device_del(&pNv->dev);
 	drmFree(pNv->drm_device_name);
+	nouveau_client_del(&pNv->client);
+	nouveau_device_del(&pNv->dev);
 }
 
 static Bool

commit a80785f79268ed3701fc69cbd9194ad12822c82c
Author: Dave Airlie <airlied@redhat.com>
Date:   Mon Feb 11 09:56:25 2013 +1000

    nouveau: fix build against old servers (part 2)
    
    Should fix next bit of
    https://bugs.freedesktop.org/show_bug.cgi?id=60369
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 71c9ff9..9eca60f 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -346,9 +346,12 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
 	drmmode_ConvertToKMode(crtc->scrn, &kmode, mode);
 
 	fb_id = drmmode->fb_id;
+#ifdef NOUVEAU_PIXMAP_SHARING
 	if (crtc->randr_crtc->scanout_pixmap)
 		x = y = 0;
-	else if (drmmode_crtc->rotate_fb_id) {
+	else
+#endif
+	if (drmmode_crtc->rotate_fb_id) {
 		fb_id = drmmode_crtc->rotate_fb_id;
 		x = 0;
 		y = 0;
@@ -539,11 +542,11 @@ drmmode_gamma_set(xf86CrtcPtr crtc, CARD16 *red, CARD16 *green, CARD16 *blue,
 	}
 }
 
+#ifdef NOUVEAU_PIXMAP_SHARING
 static Bool
 drmmode_set_scanout_pixmap(xf86CrtcPtr crtc, PixmapPtr ppix)
 {
 	ScreenPtr screen = xf86ScrnToScreen(crtc->scrn);
-	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
 	PixmapPtr screenpix = screen->GetScreenPixmap(screen);
 
 	if (!ppix) {
@@ -566,6 +569,7 @@ drmmode_set_scanout_pixmap(xf86CrtcPtr crtc, PixmapPtr ppix)
 	PixmapStartDirtyTracking(ppix, screenpix, 0, 0);
 	return TRUE;
 }
+#endif
 
 static const xf86CrtcFuncsRec drmmode_crtc_funcs = {
 	.dpms = drmmode_crtc_dpms,
@@ -579,7 +583,9 @@ static const xf86CrtcFuncsRec drmmode_crtc_funcs = {
 	.shadow_destroy = drmmode_crtc_shadow_destroy,
 	.gamma_set = drmmode_gamma_set,
 
+#ifdef NOUVEAU_PIXMAP_SHARING
 	.set_scanout_pixmap = drmmode_set_scanout_pixmap,
+#endif
 };
 
 

commit 05dc9b57896689a3dbd9e6aeb16d57c49515b02e
Author: Marcin Slusarz <marcin.slusarz@gmail.com>
Date:   Sun Feb 3 21:12:46 2013 +0100

    nv30/exa: fix shaders on big-endian machines
    
    Direct port of commit d1bc38b6673c54af61196056c489383fba8dced8
    "nv40/exa: fix shaders on big-endian machines" to nv30.
    
    Fixes https://bugs.freedesktop.org/show_bug.cgi?id=60050
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>

diff --git a/src/nv30_exa.c b/src/nv30_exa.c
index 95509bc..21586e9 100644
--- a/src/nv30_exa.c
+++ b/src/nv30_exa.c
@@ -820,146 +820,146 @@ NVAccelInitNV30TCL(ScrnInfoPtr pScrn)
 	PUSH_DATA (push, 4096<<16);
 
 	PUSH_DATAu(push, pNv->scratch, PFP_PASS, 2 * 4);
-	PUSH_DATA (push, 0x18009e80); /* txph r0, a[tex0], t[0] */
-	PUSH_DATA (push, 0x1c9dc801);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x3fe1c800);
-	PUSH_DATA (push, 0x1802be83); /* txph r1, a[tex1], t[1] */
-	PUSH_DATA (push, 0x1c9dc801); /* exit */
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x3fe1c800);
+	PUSH_DATAs(push, 0x18009e80); /* txph r0, a[tex0], t[0] */
+	PUSH_DATAs(push, 0x1c9dc801);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x3fe1c800);
+	PUSH_DATAs(push, 0x1802be83); /* txph r1, a[tex1], t[1] */
+	PUSH_DATAs(push, 0x1c9dc801); /* exit */
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x3fe1c800);
 
 	PUSH_DATAu(push, pNv->scratch, PFP_NV12_BILINEAR, 8 * 4);
-	PUSH_DATA (push, 0x17028200); /* texr r0.x, a[tex0], t[1] */
-	PUSH_DATA (push, 0x1c9dc801);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x3fe1c800);
-	PUSH_DATA (push, 0x04000e02); /* madr r1.xyz, r0.x, imm.x, imm.yzww */
-	PUSH_DATA (push, 0x1c9c0000);
-	PUSH_DATA (push, 0x00000002);
-	PUSH_DATA (push, 0x0001f202);
-	PUSH_DATA (push, 0x3f9507c8); /* { 1.16, -0.87, 0.53, -1.08 } */
-	PUSH_DATA (push, 0xbf5ee393);
-	PUSH_DATA (push, 0x3f078fef);
-	PUSH_DATA (push, 0xbf8a6762);
-	PUSH_DATA (push, 0x1704ac80); /* texr r0.yz, a[tex1], t[2] */
-	PUSH_DATA (push, 0x1c9dc801);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x3fe1c800);
-	PUSH_DATA (push, 0x04000e02); /* madr r1.xyz, r0.y, imm, r1 */
-	PUSH_DATA (push, 0x1c9cab00);
-	PUSH_DATA (push, 0x0001c802);
-	PUSH_DATA (push, 0x0001c804);
-	PUSH_DATA (push, 0x00000000); /* { 0.00, -0.39, 2.02, 0.00 } */
-	PUSH_DATA (push, 0xbec890d6);
-	PUSH_DATA (push, 0x40011687);
-	PUSH_DATA (push, 0x00000000);
-	PUSH_DATA (push, 0x04000e81); /* madr r0.xyz, r0.z, imm, r1 */
-	PUSH_DATA (push, 0x1c9d5500);
-	PUSH_DATA (push, 0x0001c802);
-	PUSH_DATA (push, 0x0001c804);
-	PUSH_DATA (push, 0x3fcc432d); /* { 1.60, -0.81, 0.00, 0.00 } */
-	PUSH_DATA (push, 0xbf501a37);
-	PUSH_DATA (push, 0x00000000);
-	PUSH_DATA (push, 0x00000000);
+	PUSH_DATAs(push, 0x17028200); /* texr r0.x, a[tex0], t[1] */
+	PUSH_DATAs(push, 0x1c9dc801);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x3fe1c800);
+	PUSH_DATAs(push, 0x04000e02); /* madr r1.xyz, r0.x, imm.x, imm.yzww */
+	PUSH_DATAs(push, 0x1c9c0000);
+	PUSH_DATAs(push, 0x00000002);
+	PUSH_DATAs(push, 0x0001f202);
+	PUSH_DATAs(push, 0x3f9507c8); /* { 1.16, -0.87, 0.53, -1.08 } */
+	PUSH_DATAs(push, 0xbf5ee393);
+	PUSH_DATAs(push, 0x3f078fef);
+	PUSH_DATAs(push, 0xbf8a6762);
+	PUSH_DATAs(push, 0x1704ac80); /* texr r0.yz, a[tex1], t[2] */
+	PUSH_DATAs(push, 0x1c9dc801);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x3fe1c800);
+	PUSH_DATAs(push, 0x04000e02); /* madr r1.xyz, r0.y, imm, r1 */
+	PUSH_DATAs(push, 0x1c9cab00);
+	PUSH_DATAs(push, 0x0001c802);
+	PUSH_DATAs(push, 0x0001c804);
+	PUSH_DATAs(push, 0x00000000); /* { 0.00, -0.39, 2.02, 0.00 } */
+	PUSH_DATAs(push, 0xbec890d6);
+	PUSH_DATAs(push, 0x40011687);
+	PUSH_DATAs(push, 0x00000000);
+	PUSH_DATAs(push, 0x04000e81); /* madr r0.xyz, r0.z, imm, r1 */
+	PUSH_DATAs(push, 0x1c9d5500);
+	PUSH_DATAs(push, 0x0001c802);
+	PUSH_DATAs(push, 0x0001c804);
+	PUSH_DATAs(push, 0x3fcc432d); /* { 1.60, -0.81, 0.00, 0.00 } */
+	PUSH_DATAs(push, 0xbf501a37);
+	PUSH_DATAs(push, 0x00000000);
+	PUSH_DATAs(push, 0x00000000);
 
 	PUSH_DATAu(push, pNv->scratch, PFP_NV12_BICUBIC, 24 * 4);
-	PUSH_DATA (push, 0x01008604); /* movr r2.xy, a[tex0] */
-	PUSH_DATA (push, 0x1c9dc801);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x03000600); /* addr r0.xy, r2, imm.x */
-	PUSH_DATA (push, 0x1c9dc808);
-	PUSH_DATA (push, 0x00000002);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x3f000000); /* { 0.50, 0.00, 0.00, 0.00 } */
-	PUSH_DATA (push, 0x00000000);
-	PUSH_DATA (push, 0x00000000);
-	PUSH_DATA (push, 0x00000000);
-	PUSH_DATA (push, 0x17000e06); /* texr r3.xyz, r0, t[0] */
-	PUSH_DATA (push, 0x1c9dc800);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x17000e00); /* texr r0.xyz, r0.y, t[0] */
-	PUSH_DATA (push, 0x1c9caa00);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x02000a02); /* mulr r1.xz, r3.xxyy, imm.xxyy */
-	PUSH_DATA (push, 0x1c9ca00c);
-	PUSH_DATA (push, 0x0000a002);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0xbf800000); /* { -1.00, 1.00, 0.00, 0.00 } */
-	PUSH_DATA (push, 0x3f800000);
-	PUSH_DATA (push, 0x00000000);
-	PUSH_DATA (push, 0x00000000);
-	PUSH_DATA (push, 0x02001402); /* mulr r1.yw, r0.xxyy, imm.xxyy */
-	PUSH_DATA (push, 0x1c9ca000);
-	PUSH_DATA (push, 0x0000a002);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0xbf800000); /* { -1.00, 1.00, 0.00, 0.00 } */
-	PUSH_DATA (push, 0x3f800000);
-	PUSH_DATA (push, 0x00000000);
-	PUSH_DATA (push, 0x00000000);
-	PUSH_DATA (push, 0x03001e04); /* addr r2, r2.xyxy, r1 */
-	PUSH_DATA (push, 0x1c9c8808);
-	PUSH_DATA (push, 0x0001c804);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x17020200); /* texr r0.x, r2, t[1] */
-	PUSH_DATA (push, 0x1c9dc808);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x17020402); /* texr r1.y, r2.xwxw, t[1] */
-	PUSH_DATA (push, 0x1c9d9808);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x17020202); /* texr r1.x, r2.zyxy, t[1] */
-	PUSH_DATA (push, 0x1c9c8c08);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x1f400280); /* lrph r0.x, r0.z, r0, r1.y */
-	PUSH_DATA (push, 0x1c9d5400);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x0000aa04);
-	PUSH_DATA (push, 0x17020400); /* texr r0.y, r2.zwzz, t[1] */
-	PUSH_DATA (push, 0x1c9d5c08);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x1f400480); /* lrph r0.y, r0.z, r1.x, r0 */
-	PUSH_DATA (push, 0x1c9d5400);
-	PUSH_DATA (push, 0x00000004);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x1f400280); /* lrph r0.x, r3.z, r0, r0.y */
-	PUSH_DATA (push, 0x1c9d540c);
-	PUSH_DATA (push, 0x0001c900);
-	PUSH_DATA (push, 0x0000ab00);
-	PUSH_DATA (push, 0x04400e80); /* madh r0.xyz, r0.x, imm.x, imm.yzww */
-	PUSH_DATA (push, 0x1c9c0100);
-	PUSH_DATA (push, 0x00000002);
-	PUSH_DATA (push, 0x0001f202);
-	PUSH_DATA (push, 0x3f9507c8); /* { 1.16, -0.87, 0.53, -1.08 } */
-	PUSH_DATA (push, 0xbf5ee393);
-	PUSH_DATA (push, 0x3f078fef);
-	PUSH_DATA (push, 0xbf8a6762);
-	PUSH_DATA (push, 0x1704ac02); /* texr r1.yz, a[tex1], t[2] */
-	PUSH_DATA (push, 0x1c9dc801);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x0001c800);
-	PUSH_DATA (push, 0x04400e80); /* madh r0.xyz, r1.y, imm, r0 */
-	PUSH_DATA (push, 0x1c9caa04);
-	PUSH_DATA (push, 0x0001c802);
-	PUSH_DATA (push, 0x0001c900);
-	PUSH_DATA (push, 0x00000000); /* { 0.00, -0.39, 2.02, 0.00 } */
-	PUSH_DATA (push, 0xbec890d6);
-	PUSH_DATA (push, 0x40011687);
-	PUSH_DATA (push, 0x00000000);
-	PUSH_DATA (push, 0x04400e81); /* madh r0.xyz, r1.z, imm, r0 */
-	PUSH_DATA (push, 0x1c9d5404);
-	PUSH_DATA (push, 0x0001c802);
-	PUSH_DATA (push, 0x0001c900);
-	PUSH_DATA (push, 0x3fcc432d); /* { 1.60, -0.81, 0.00, 0.00 } */
-	PUSH_DATA (push, 0xbf501a37);
-	PUSH_DATA (push, 0x00000000);
-	PUSH_DATA (push, 0x00000000);
+	PUSH_DATAs(push, 0x01008604); /* movr r2.xy, a[tex0] */
+	PUSH_DATAs(push, 0x1c9dc801);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x03000600); /* addr r0.xy, r2, imm.x */
+	PUSH_DATAs(push, 0x1c9dc808);
+	PUSH_DATAs(push, 0x00000002);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x3f000000); /* { 0.50, 0.00, 0.00, 0.00 } */
+	PUSH_DATAs(push, 0x00000000);
+	PUSH_DATAs(push, 0x00000000);
+	PUSH_DATAs(push, 0x00000000);
+	PUSH_DATAs(push, 0x17000e06); /* texr r3.xyz, r0, t[0] */
+	PUSH_DATAs(push, 0x1c9dc800);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x17000e00); /* texr r0.xyz, r0.y, t[0] */
+	PUSH_DATAs(push, 0x1c9caa00);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x02000a02); /* mulr r1.xz, r3.xxyy, imm.xxyy */
+	PUSH_DATAs(push, 0x1c9ca00c);
+	PUSH_DATAs(push, 0x0000a002);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0xbf800000); /* { -1.00, 1.00, 0.00, 0.00 } */
+	PUSH_DATAs(push, 0x3f800000);
+	PUSH_DATAs(push, 0x00000000);
+	PUSH_DATAs(push, 0x00000000);
+	PUSH_DATAs(push, 0x02001402); /* mulr r1.yw, r0.xxyy, imm.xxyy */
+	PUSH_DATAs(push, 0x1c9ca000);
+	PUSH_DATAs(push, 0x0000a002);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0xbf800000); /* { -1.00, 1.00, 0.00, 0.00 } */
+	PUSH_DATAs(push, 0x3f800000);
+	PUSH_DATAs(push, 0x00000000);
+	PUSH_DATAs(push, 0x00000000);
+	PUSH_DATAs(push, 0x03001e04); /* addr r2, r2.xyxy, r1 */
+	PUSH_DATAs(push, 0x1c9c8808);
+	PUSH_DATAs(push, 0x0001c804);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x17020200); /* texr r0.x, r2, t[1] */
+	PUSH_DATAs(push, 0x1c9dc808);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x17020402); /* texr r1.y, r2.xwxw, t[1] */
+	PUSH_DATAs(push, 0x1c9d9808);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x17020202); /* texr r1.x, r2.zyxy, t[1] */
+	PUSH_DATAs(push, 0x1c9c8c08);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x1f400280); /* lrph r0.x, r0.z, r0, r1.y */
+	PUSH_DATAs(push, 0x1c9d5400);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x0000aa04);
+	PUSH_DATAs(push, 0x17020400); /* texr r0.y, r2.zwzz, t[1] */
+	PUSH_DATAs(push, 0x1c9d5c08);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x1f400480); /* lrph r0.y, r0.z, r1.x, r0 */
+	PUSH_DATAs(push, 0x1c9d5400);
+	PUSH_DATAs(push, 0x00000004);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x1f400280); /* lrph r0.x, r3.z, r0, r0.y */
+	PUSH_DATAs(push, 0x1c9d540c);
+	PUSH_DATAs(push, 0x0001c900);
+	PUSH_DATAs(push, 0x0000ab00);
+	PUSH_DATAs(push, 0x04400e80); /* madh r0.xyz, r0.x, imm.x, imm.yzww */
+	PUSH_DATAs(push, 0x1c9c0100);
+	PUSH_DATAs(push, 0x00000002);
+	PUSH_DATAs(push, 0x0001f202);
+	PUSH_DATAs(push, 0x3f9507c8); /* { 1.16, -0.87, 0.53, -1.08 } */
+	PUSH_DATAs(push, 0xbf5ee393);
+	PUSH_DATAs(push, 0x3f078fef);
+	PUSH_DATAs(push, 0xbf8a6762);
+	PUSH_DATAs(push, 0x1704ac02); /* texr r1.yz, a[tex1], t[2] */
+	PUSH_DATAs(push, 0x1c9dc801);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x0001c800);
+	PUSH_DATAs(push, 0x04400e80); /* madh r0.xyz, r1.y, imm, r0 */
+	PUSH_DATAs(push, 0x1c9caa04);
+	PUSH_DATAs(push, 0x0001c802);
+	PUSH_DATAs(push, 0x0001c900);
+	PUSH_DATAs(push, 0x00000000); /* { 0.00, -0.39, 2.02, 0.00 } */
+	PUSH_DATAs(push, 0xbec890d6);
+	PUSH_DATAs(push, 0x40011687);
+	PUSH_DATAs(push, 0x00000000);
+	PUSH_DATAs(push, 0x04400e81); /* madh r0.xyz, r1.z, imm, r0 */
+	PUSH_DATAs(push, 0x1c9d5404);
+	PUSH_DATAs(push, 0x0001c802);
+	PUSH_DATAs(push, 0x0001c900);
+	PUSH_DATAs(push, 0x3fcc432d); /* { 1.60, -0.81, 0.00, 0.00 } */
+	PUSH_DATAs(push, 0xbf501a37);
+	PUSH_DATAs(push, 0x00000000);
+	PUSH_DATAs(push, 0x00000000);
 
 	return TRUE;
 }

commit 61a277488f7195914cbdda10355db0d758fc801c
Author: Dave Airlie <airlied@redhat.com>
Date:   Thu Feb 7 10:47:20 2013 +1000

    nouveau: fix build on older X servers
    
    should fix https://bugs.freedesktop.org/show_bug.cgi?id=60369
    
    Reported-by: fabio.ped@libero.it
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/src/nouveau_exa.c b/src/nouveau_exa.c
index b8e9bef..bcc0d4e 100644
--- a/src/nouveau_exa.c
+++ b/src/nouveau_exa.c
@@ -139,8 +139,10 @@ nouveau_exa_create_pixmap(ScreenPtr pScreen, int width, int height, int depth,
 		return NULL;
 	}
 
+#ifdef NOUVEAU_PIXMAP_SHARING
 	if ((usage_hint & 0xffff) == CREATE_PIXMAP_USAGE_SHARED)
 		nvpix->shared = TRUE;
+#endif
 
 	return nvpix;
 }
diff --git a/src/nv_accel_common.c b/src/nv_accel_common.c
index 09c14b3..b06fe0c 100644
--- a/src/nv_accel_common.c
+++ b/src/nv_accel_common.c
@@ -35,11 +35,15 @@ nouveau_allocate_surface(ScrnInfoPtr scrn, int width, int height, int bpp,
 	NVPtr pNv = NVPTR(scrn);
 	Bool scanout = (usage_hint & NOUVEAU_CREATE_PIXMAP_SCANOUT);
 	Bool tiled = (usage_hint & NOUVEAU_CREATE_PIXMAP_TILED);
-	Bool shared = ((usage_hint & 0xffff) == CREATE_PIXMAP_USAGE_SHARED);
+	Bool shared = FALSE;
 	union nouveau_bo_config cfg = {};
 	int flags = NOUVEAU_BO_MAP | (bpp >= 8 ? NOUVEAU_BO_VRAM : 0);
 	int cpp = bpp / 8, ret;
 
+#ifdef NOUVEAU_PIXMAP_SHARING
+	shared = ((usage_hint & 0xffff) == CREATE_PIXMAP_USAGE_SHARED);
+#endif
+
 	flags = NOUVEAU_BO_MAP;
 	if (bpp >= 8)
 		flags |= shared ? NOUVEAU_BO_GART : NOUVEAU_BO_VRAM;

commit e8f222fd10e21f39488d3d8c697e4948cd787cd0
Author: Dave Airlie <airlied@redhat.com>
Date:   Wed Feb 6 16:21:50 2013 +1000

    nouveau: make prime regression fix more robust.
    
    This makes this fix more robust and less crashy.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c
index 888e0b3..e462a86 100644
--- a/src/nouveau_dri2.c
+++ b/src/nouveau_dri2.c
@@ -189,7 +189,8 @@ nouveau_dri2_copy_region2(ScreenPtr pScreen, DrawablePtr pDraw, RegionPtr pRegio
 		if (extents->x1 == 0 && extents->y1 == 0 &&
 		    extents->x2 == pDraw->width &&
 		    extents->y2 == pDraw->height) {
-			struct nouveau_bo *bo = nouveau_pixmap_bo((PixmapPtr)dst_draw);
+			PixmapPtr fpix = get_drawable_pixmap(dst_draw);
+			struct nouveau_bo *bo = nouveau_pixmap_bo(fpix);
 			if (bo)
 				nouveau_bo_wait(bo, NOUVEAU_BO_RD, pNv->client);
 		}

commit d762631c9306b6580b34db1e7eb57bbcac901390
Author: Dave Airlie <airlied@redhat.com>
Date:   Wed Feb 6 15:52:33 2013 +1000

    nouveau: align shared buffers to 256
    
    We were getting 0xa5 error code on 2D transfers from tiled VRAM to untiled
    GART when using USB offload devices, this fixes this by upping the alignment
    on the 2D engine for shared buffers.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/src/nv_accel_common.c b/src/nv_accel_common.c
index e0d9938..09c14b3 100644
--- a/src/nv_accel_common.c
+++ b/src/nv_accel_common.c
@@ -55,7 +55,7 @@ nouveau_allocate_surface(ScrnInfoPtr scrn, int width, int height, int bpp,
 		} else {
 			if (bpp >= 8 && !shared)
 				tiled = TRUE;
-			*pitch = NOUVEAU_ALIGN(width * cpp, 64);
+			*pitch = NOUVEAU_ALIGN(width * cpp, shared ? 256 : 64);
 		}
 	} else {
 		if (scanout && pNv->tiled_scanout)

commit c6980b2add5752a7c285a846b2c9353c9d18afd4
Author: Dave Airlie <airlied@redhat.com>
Date:   Wed Feb 6 15:24:09 2013 +1000

    nouveau: fix regression in PRIME since 58284cf32778d54cde139423450bc33360784503
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c
index 0c2bdab..888e0b3 100644
--- a/src/nouveau_dri2.c
+++ b/src/nouveau_dri2.c
@@ -189,7 +189,7 @@ nouveau_dri2_copy_region2(ScreenPtr pScreen, DrawablePtr pDraw, RegionPtr pRegio
 		if (extents->x1 == 0 && extents->y1 == 0 &&
 		    extents->x2 == pDraw->width &&
 		    extents->y2 == pDraw->height) {
-			struct nouveau_bo *bo = nouveau_pixmap_bo(dst->ppix);
+			struct nouveau_bo *bo = nouveau_pixmap_bo((PixmapPtr)dst_draw);
 			if (bo)
 				nouveau_bo_wait(bo, NOUVEAU_BO_RD, pNv->client);
 		}

commit 59fb3f0252e9b769c5877cfe83d8dbc51cdff232
Author: Dave Airlie <airlied@redhat.com>
Date:   Wed Feb 6 14:58:08 2013 +1000

    nouveau: create shared pixmaps in GART
    
    this creates the shared pixmaps in GART, and makes sure they are untiled.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/src/nouveau_exa.c b/src/nouveau_exa.c
index 8191aeb..b8e9bef 100644
--- a/src/nouveau_exa.c
+++ b/src/nouveau_exa.c
@@ -139,6 +139,9 @@ nouveau_exa_create_pixmap(ScreenPtr pScreen, int width, int height, int depth,
 		return NULL;
 	}
 
+	if ((usage_hint & 0xffff) == CREATE_PIXMAP_USAGE_SHARED)
+		nvpix->shared = TRUE;
+
 	return nvpix;
 }
 
diff --git a/src/nv_accel_common.c b/src/nv_accel_common.c
index 57e52ff..e0d9938 100644
--- a/src/nv_accel_common.c
+++ b/src/nv_accel_common.c
@@ -35,10 +35,15 @@ nouveau_allocate_surface(ScrnInfoPtr scrn, int width, int height, int bpp,
 	NVPtr pNv = NVPTR(scrn);
 	Bool scanout = (usage_hint & NOUVEAU_CREATE_PIXMAP_SCANOUT);
 	Bool tiled = (usage_hint & NOUVEAU_CREATE_PIXMAP_TILED);
+	Bool shared = ((usage_hint & 0xffff) == CREATE_PIXMAP_USAGE_SHARED);
 	union nouveau_bo_config cfg = {};
 	int flags = NOUVEAU_BO_MAP | (bpp >= 8 ? NOUVEAU_BO_VRAM : 0);
 	int cpp = bpp / 8, ret;
 
+	flags = NOUVEAU_BO_MAP;
+	if (bpp >= 8)
+		flags |= shared ? NOUVEAU_BO_GART : NOUVEAU_BO_VRAM;
+
 	if (pNv->Architecture >= NV_ARCH_50) {
 		if (scanout) {
 			if (pNv->tiled_scanout) {
@@ -48,7 +53,7 @@ nouveau_allocate_surface(ScrnInfoPtr scrn, int width, int height, int bpp,
 				*pitch = NOUVEAU_ALIGN(width * cpp, 256);
 			}
 		} else {
-			if (bpp >= 8)
+			if (bpp >= 8 && !shared)
 				tiled = TRUE;
 			*pitch = NOUVEAU_ALIGN(width * cpp, 64);
 		}

commit 1fdd7db94b55c65ea62cc9eaefff620b20e9e4ea
Author: Dave Airlie <airlied@redhat.com>
Date:   Mon Jan 7 15:28:53 2013 +1000

    nouveau: add reverse prime support
    
    This allows the nvidia card to scanout Intel cards rendering.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 06f7a24..71c9ff9 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -42,6 +42,7 @@
 #include "libudev.h"
 #endif
 
+static Bool drmmode_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height);
 typedef struct {
     int fd;
     uint32_t fb_id;
@@ -345,7 +346,9 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
 	drmmode_ConvertToKMode(crtc->scrn, &kmode, mode);
 
 	fb_id = drmmode->fb_id;
-	if (drmmode_crtc->rotate_fb_id) {
+	if (crtc->randr_crtc->scanout_pixmap)
+		x = y = 0;
+	else if (drmmode_crtc->rotate_fb_id) {
 		fb_id = drmmode_crtc->rotate_fb_id;
 		x = 0;
 		y = 0;
@@ -536,6 +539,34 @@ drmmode_gamma_set(xf86CrtcPtr crtc, CARD16 *red, CARD16 *green, CARD16 *blue,
 	}
 }
 
+static Bool
+drmmode_set_scanout_pixmap(xf86CrtcPtr crtc, PixmapPtr ppix)
+{
+	ScreenPtr screen = xf86ScrnToScreen(crtc->scrn);
+	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
+	PixmapPtr screenpix = screen->GetScreenPixmap(screen);
+
+	if (!ppix) {
+		if (crtc->randr_crtc->scanout_pixmap)
+			PixmapStopDirtyTracking(crtc->randr_crtc->scanout_pixmap, screenpix);
+		return TRUE;
+	}
+
+	if (ppix->drawable.width > screenpix->drawable.width ||
+	    ppix->drawable.height > screenpix->drawable.height) {
+		Bool ret;
+		ret = drmmode_xf86crtc_resize(crtc->scrn, ppix->drawable.width, ppix->drawable.height);
+		if (ret == FALSE)
+			return FALSE;
+
+		screenpix = screen->GetScreenPixmap(screen);
+		screen->width = screenpix->drawable.width = ppix->drawable.width;
+		screen->height = screenpix->drawable.height = ppix->drawable.height;
+	}
+	PixmapStartDirtyTracking(ppix, screenpix, 0, 0);
+	return TRUE;
+}
+
 static const xf86CrtcFuncsRec drmmode_crtc_funcs = {
 	.dpms = drmmode_crtc_dpms,
 	.set_mode_major = drmmode_set_mode_major,
@@ -547,6 +578,8 @@ static const xf86CrtcFuncsRec drmmode_crtc_funcs = {
 	.shadow_allocate = drmmode_crtc_shadow_allocate,
 	.shadow_destroy = drmmode_crtc_shadow_destroy,
 	.gamma_set = drmmode_gamma_set,
+
+	.set_scanout_pixmap = drmmode_set_scanout_pixmap,
 };
 
 
diff --git a/src/nv_driver.c b/src/nv_driver.c
index f14c847..9f62fe2 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -452,7 +452,7 @@ redisplay_dirty(ScreenPtr screen, PixmapDirtyUpdatePtr dirty)
 {
 	RegionRec pixregion;
 
-	PixmapRegionInit(&pixregion, dirty->slave_dst->master_pixmap);
+	PixmapRegionInit(&pixregion, dirty->slave_dst);
 
 	DamageRegionAppend(&dirty->slave_dst->drawable, &pixregion);
 	PixmapSyncDirtyHelper(dirty, &pixregion);
@@ -676,7 +676,7 @@ nouveau_setup_capabilities(ScrnInfoPtr pScrn)
 		if (value & DRM_PRIME_CAP_EXPORT)
 			pScrn->capabilities |= RR_Capability_SourceOutput;
 		if (value & DRM_PRIME_CAP_IMPORT)
-			pScrn->capabilities |= RR_Capability_SourceOffload;
+			pScrn->capabilities |= RR_Capability_SourceOffload | RR_Capability_SinkOutput;
 	}
 #endif
 }

commit 58284cf32778d54cde139423450bc33360784503
Author: Christoph Bumiller <e0425955@student.tuwien.ac.at>
Date:   Tue Jan 29 16:38:21 2013 +1000

    dri2: fix missing frame throttle on copy_region buffer swaps
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>

diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c
index 036bcff..0c2bdab 100644
--- a/src/nouveau_dri2.c
+++ b/src/nouveau_dri2.c
@@ -134,6 +134,7 @@ nouveau_dri2_copy_region2(ScreenPtr pScreen, DrawablePtr pDraw, RegionPtr pRegio
 {
 	struct nouveau_dri2_buffer *src = nouveau_dri2_buffer(pSrcBuffer);
 	struct nouveau_dri2_buffer *dst = nouveau_dri2_buffer(pDstBuffer);
+	NVPtr pNv = NVPTR(xf86ScreenToScrn(pScreen));
 	RegionPtr pCopyClip;
 	GCPtr pGC;
 	DrawablePtr src_draw, dst_draw;
@@ -178,6 +179,22 @@ nouveau_dri2_copy_region2(ScreenPtr pScreen, DrawablePtr pDraw, RegionPtr pRegio
 	}
 	pGC->funcs->ChangeClip(pGC, CT_REGION, pCopyClip, 0);
 	ValidateGC(dst_draw, pGC);
+
+	/* If this is a full buffer swap or frontbuffer flush, throttle on
+	 * the previous one.
+	 */
+	if (dst->base.attachment == DRI2BufferFrontLeft &&
+	    REGION_NUM_RECTS(pRegion) == 1) {
+		BoxPtr extents = REGION_EXTENTS(pScreen, pRegion);
+		if (extents->x1 == 0 && extents->y1 == 0 &&
+		    extents->x2 == pDraw->width &&
+		    extents->y2 == pDraw->height) {
+			struct nouveau_bo *bo = nouveau_pixmap_bo(dst->ppix);
+			if (bo)
+				nouveau_bo_wait(bo, NOUVEAU_BO_RD, pNv->client);
+		}
+	}
+
 	pGC->ops->CopyArea(src_draw, dst_draw, pGC, 0, 0,
 			   pDraw->width, pDraw->height, off_x, off_y);
 

commit 912d418fdfd2e99eef1e5c631c76dda1d82cf451
Author: Marcin Slusarz <marcin.slusarz@gmail.com>
Date:   Mon Jan 21 00:15:38 2013 +0100

    nouveau: put cursor BO in GART
    
    Keeping it in VRAM wastes CPU time, because cursor_set ioctl reads
    handed BO back to RAM, just to write it to actual cursor BO.
    
    Here (nv92/core i7), this patch decreases overall cpu usage of
    drmmode_load_cursor_argb from 4.6ms to ~90us and lets nv50_crtc_cursor_set
    disappear from perf traces.
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 429e9cc..06f7a24 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -567,7 +567,7 @@ drmmode_crtc_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int num)
 						 drmmode->mode_res->crtcs[num]);
 	drmmode_crtc->drmmode = drmmode;
 
-	ret = nouveau_bo_new(pNv->dev, NOUVEAU_BO_VRAM | NOUVEAU_BO_MAP, 0,
+	ret = nouveau_bo_new(pNv->dev, NOUVEAU_BO_GART | NOUVEAU_BO_MAP, 0,
 			     64*64*4, NULL, &drmmode_crtc->cursor);
 	assert(ret == 0);
 

commit 8f934fad5d4934936b3265f272ca81e73c60d7dc
Author: Dave Airlie <airlied@redhat.com>
Date:   Mon Jan 7 14:13:10 2013 +1000

    bump to 1.0.6
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/configure.ac b/configure.ac
index 3428be1..7535bfe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
 
 AC_PREREQ([2.60])
 AC_INIT([xf86-video-nouveau],
-        [1.0.5],
+        [1.0.6],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-video-nouveau])
 

commit 00834273e22f7234a3755269100ea3f10b521e35
Author: Dave Airlie <airlied@redhat.com>
Date:   Mon Jan 7 14:04:40 2013 +1000

    nouveau: fix dirty redisplay damage handling
    
    This processes the damage in the correct order.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/src/nv_driver.c b/src/nv_driver.c
index de09f53..f14c847 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -454,9 +454,10 @@ redisplay_dirty(ScreenPtr screen, PixmapDirtyUpdatePtr dirty)
 
 	PixmapRegionInit(&pixregion, dirty->slave_dst->master_pixmap);
 
+	DamageRegionAppend(&dirty->slave_dst->drawable, &pixregion);
 	PixmapSyncDirtyHelper(dirty, &pixregion);
 
-	DamageRegionAppend(&dirty->slave_dst->drawable, &pixregion);
+	DamageRegionProcessPending(&dirty->slave_dst->drawable);
 	RegionUninit(&pixregion);
 }
 

commit 389b8a8dd91a48dee524eac96e60813c507f1a82
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Mon Jan 7 14:05:06 2013 +1000

    bump to 1.0.5
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>

diff --git a/configure.ac b/configure.ac
index ff9c337..3428be1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
 
 AC_PREREQ([2.60])
 AC_INIT([xf86-video-nouveau],
-        [1.0.4],
+        [1.0.5],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-video-nouveau])
 

commit efe9c57af6ff4c12936e49ac3e188c54b8b2d5bd
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Mon Jan 7 11:35:56 2013 +1000

    nvc0-/exa: fix typo which caused breakage in rendercheck tmcoords test
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>

diff --git a/src/nvc0_shader.h b/src/nvc0_shader.h
index 4d1679e..41bc065 100644
--- a/src/nvc0_shader.h
+++ b/src/nvc0_shader.h
@@ -73,8 +73,8 @@ NVC0VP_Transform2[] = {
 	0x58004000,
 	0x10011c40,
 	0x58004001,
-	0x00109c40,
-	0x30044001,
+	0xc0109c40,
+	0x30044000,
 	0xf010dc40,
 	0x30064000,
 	0x20111c40,
diff --git a/src/nve0_shader.h b/src/nve0_shader.h
index 4705075..5d8e9dd 100644
--- a/src/nve0_shader.h
+++ b/src/nve0_shader.h
@@ -67,8 +67,8 @@ NVE0VP_Transform2[] = {
 	0x58004000,
 	0x10011c40,
 	0x58004001,
-	0x00109c40,
-	0x30044001,
+	0xc0109c40,
+	0x30044000,
 	0xf010dc40,
 	0x30064000,
 	0x20111c40,

commit 5cd86445272818ec2f598f4685a5d7f24e403d07
Author: Marcin Slusarz <marcin.slusarz@gmail.com>
Date:   Sun Nov 25 22:59:49 2012 +0100

    add some missing newlines in error messages
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 8ec69f5..429e9cc 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -357,7 +357,7 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
 
 	if (ret) {
 		xf86DrvMsg(crtc->scrn->scrnIndex, X_ERROR,
-			   "failed to set mode: %s", strerror(-ret));
+			   "failed to set mode: %s\n", strerror(-ret));
 		return FALSE;
 	}
 
@@ -532,7 +532,7 @@ drmmode_gamma_set(xf86CrtcPtr crtc, CARD16 *red, CARD16 *green, CARD16 *blue,
 				  size, red, green, blue);
 	if (ret != 0) {
 		xf86DrvMsg(crtc->scrn->scrnIndex, X_ERROR,
-			   "failed to set gamma: %s", strerror(-ret));
+			   "failed to set gamma: %s\n", strerror(-ret));
 	}
 }
 

commit 3b33a0b426b8915f302247dcd40c64fb1a6dcdd2
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Sun Nov 4 18:06:18 2012 +0000

    kms: Let the server know if we got more than 1 EDID block
    
    Verbatim copy from xf86-video-radeon commit 809cacb
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=32341
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


Reply to: