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

xserver-xorg-video-nouveau: Changes to 'ubuntu'



 ChangeLog                 |17250 ++++++++++++++++++++++++++++++++++++++++++++++
 configure.ac              |    5 
 debian/changelog          |   50 
 debian/control            |   10 
 debian/patches/xmir.patch |  189 
 debian/rules              |    4 
 src/Makefile.am           |   20 
 src/drmmode_display.c     |   52 
 src/nouveau_xv.c          |   38 
 src/nv_driver.c           |    2 
 src/nvc0_accel.c          |   33 
 src/shader/Makefile       |   15 
 src/shader/exac8nvf0.fp   |   42 
 src/shader/exac8nvf0.fpc  |   28 
 src/shader/exacanvf0.fp   |   43 
 src/shader/exacanvf0.fpc  |   30 
 src/shader/exacmnvf0.fp   |   43 
 src/shader/exacmnvf0.fpc  |   30 
 src/shader/exas8nvf0.fp   |   38 
 src/shader/exas8nvf0.fpc  |   20 
 src/shader/exasanvf0.fp   |   43 
 src/shader/exasanvf0.fpc  |   30 
 src/shader/exascnvf0.fp   |   35 
 src/shader/exascnvf0.fpc  |   14 
 src/shader/videonvf0.fp   |   47 
 src/shader/videonvf0.fpc  |   38 
 src/shader/xfrm2nvf0.vp   |   82 
 src/shader/xfrm2nvf0.vpc  |   90 
 28 files changed, 18194 insertions(+), 127 deletions(-)

New commits:
commit 63b75449ff7d5e810c03a18ccf66e309cea385d4
Author: Christopher James Halse Rogers <raof@ubuntu.com>
Date:   Thu Aug 29 21:34:30 2013 +1000

    Fix xserver build-dep version

diff --git a/debian/control b/debian/control
index cf706e6..91a555e 100644
--- a/debian/control
+++ b/debian/control
@@ -8,7 +8,7 @@ Build-Depends:
  debhelper (>= 8),
  dh-autoreconf,
  pkg-config,
- xserver-xorg-dev (>= 2:1.14.2.901-2ubuntu2+xmirMM14~),
+ xserver-xorg-dev (>= 2:1.14.2.901-2ubuntu4~),
  x11proto-video-dev,
  x11proto-core-dev,
  x11proto-fonts-dev,

commit bcd598c2d7d3b22496514312d3b0801f6d2e7e81
Author: Christopher James Halse Rogers <raof@ubuntu.com>
Date:   Mon Aug 26 17:29:29 2013 +1000

    Update for new XMir API

diff --git a/debian/changelog b/debian/changelog
index a14fe33..306bbb3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+xserver-xorg-video-nouveau (1:1.0.8-0ubuntu4) saucy; urgency=low
+
+  * Update for new XMir API
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com>  Thu, 22 Aug 2013 14:42:58 +1000
+
 xserver-xorg-video-nouveau (1:1.0.8-0ubuntu3) saucy; urgency=low
 
   * Fix build against servers without XMir support
diff --git a/debian/control b/debian/control
index 70ce991..9c347e0 100644
--- a/debian/control
+++ b/debian/control
@@ -8,7 +8,7 @@ Build-Depends:
  debhelper (>= 8),
  dh-autoreconf,
  pkg-config,
- xserver-xorg-dev (>= 2:1.14.2-0ubuntu4~),
+ xserver-xorg-dev (>= 2:1.14.2.901-2ubuntu2+xmirMM14~),
  x11proto-video-dev,
  x11proto-core-dev,
  x11proto-fonts-dev,
diff --git a/debian/patches/xmir.patch b/debian/patches/xmir.patch
index ae77249..45324eb 100644
--- a/debian/patches/xmir.patch
+++ b/debian/patches/xmir.patch
@@ -6,10 +6,8 @@ Date:   Mon Jul 22 17:46:58 2013 +1000
     
     Signed-off-by: Christopher James Halse Rogers <raof@ubuntu.com>
 
-Index: xf86-video-nouveau/src/nouveau_dri2.c
-===================================================================
---- xf86-video-nouveau.orig/src/nouveau_dri2.c	2013-08-06 12:40:27.802943906 +1000
-+++ xf86-video-nouveau/src/nouveau_dri2.c	2013-08-06 12:40:27.798943906 +1000
+--- a/src/nouveau_dri2.c
++++ b/src/nouveau_dri2.c
 @@ -267,7 +267,7 @@
  	NVPtr pNv = NVPTR(scrn);
  	int i;
@@ -60,10 +58,8 @@ Index: xf86-video-nouveau/src/nouveau_dri2.c
  #if DRI2INFOREC_VERSION >= 9
  	dri2.version = 9;
  	dri2.CreateBuffer2 = nouveau_dri2_create_buffer2;
-Index: xf86-video-nouveau/src/nv_driver.c
-===================================================================
---- xf86-video-nouveau.orig/src/nv_driver.c	2013-08-06 12:40:27.802943906 +1000
-+++ xf86-video-nouveau/src/nv_driver.c	2013-08-06 12:44:47.126932579 +1000
+--- a/src/nv_driver.c
++++ b/src/nv_driver.c
 @@ -226,6 +226,8 @@
  	case GET_REQUIRED_HW_INTERFACES:
  	    flag = (CARD32 *)data;
@@ -117,7 +113,17 @@ Index: xf86-video-nouveau/src/nv_driver.c
  	if (!NVHasKMS(dev->pdev))
  		return FALSE;
  
-@@ -424,9 +449,11 @@
+@@ -406,7 +431,8 @@
+ NVAdjustFrame(ADJUST_FRAME_ARGS_DECL)
+ {
+ 	SCRN_INFO_PTR(arg);
+-	drmmode_adjust_frame(pScrn, x, y);
++	if (!xorgMir)
++		drmmode_adjust_frame(pScrn, x, y);
+ }
+ 
+ /*
+@@ -424,9 +450,11 @@
  
  	xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVEnterVT is called.\n");
  
@@ -132,7 +138,7 @@ Index: xf86-video-nouveau/src/nv_driver.c
  
  	if (XF86_CRTC_CONFIG_PTR(pScrn)->num_crtc && !xf86SetDesiredModes(pScrn))
  		return FALSE;
-@@ -452,6 +479,9 @@
+@@ -452,6 +480,9 @@
  
  	xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVLeaveVT is called.\n");
  
@@ -142,106 +148,89 @@ Index: xf86-video-nouveau/src/nv_driver.c
  	ret = drmDropMaster(pNv->dev->fd);
  	if (ret && errno != EIO && errno != ENODEV)
  		ErrorF("Error dropping master: %i(%m)\n", -errno);
-@@ -501,6 +531,86 @@
+@@ -501,6 +532,50 @@
  }
  #endif
  
 +#ifdef XMIR
 +static void
-+nouveau_xmir_copy_pixmap_to_mir(PixmapPtr src, int fd)
++nouveau_xmir_copy_to_mir(xmir_window *xmir_win, RegionPtr region)
 +{
++	WindowPtr win = xmir_window_to_windowptr(xmir_win);
++	PixmapPtr src = (*win->drawable.pScreen->GetWindowPixmap)(win);
 +	ScreenPtr pScreen = src->drawable.pScreen;
 +	ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
 +	NVPtr pNv = NVPTR(pScrn);
-+	ExaDriverPtr exa = pNv->EXADriverPtr;
++	BoxPtr dst_box = xmir_window_get_drawable_region(xmir_win);
++	BoxPtr damage_box = RegionExtents(region);
 +
-+	PixmapPtr dst = NULL;
 +	int ret;
-+	struct nouveau_bo *bo_dst = NULL;
++	int w = damage_box->x2 - damage_box->x1;
++	int h = damage_box->y2 - damage_box->y1;
++	struct nouveau_bo *dst = NULL;
 +
-+	ret = nouveau_bo_prime_handle_ref(pNv->dev, fd, &bo_dst);
-+	ErrorF("ret = %i for buffer %i\n", ret, fd);
++	ret = nouveau_bo_prime_handle_ref(pNv->dev, xmir_window_get_fd(xmir_win), &dst);
 +	assert(!ret);
 +
-+	dst = pScreen->CreatePixmap(pScreen, 0, 0, pScrn->depth, 0);
-+	if (dst == NullPixmap)
-+		goto cleanup_bo;
-+
-+	pScreen->ModifyPixmapHeader(dst, pScrn->virtualX, pScrn->virtualY, pScrn->depth, pScrn->depth,
-+				    pScrn->virtualX, NULL);
-+	nouveau_bo_ref(bo_dst, &nouveau_pixmap(dst)->bo);
-+
-+	ret = exa->PrepareCopy (src, dst, 0, 0, GXcopy, FB_ALLONES);
-+	if (ret) {
-+		exa->Copy (dst, 0, 0, 0, 0, pScrn->virtualX, pScrn->virtualY);
-+		exa->DoneCopy (dst);
++	NVAccelM2MF(pNv, w, h, src->drawable.bitsPerPixel >> 3, 0, 0,
++		    nouveau_pixmap_bo(src), NOUVEAU_BO_VRAM,
++		    exaGetPixmapPitch(src),
++		    src->drawable.height,
++		    damage_box->x1, damage_box->y1,
++		    dst, NOUVEAU_BO_VRAM,
++		    xmir_window_get_stride(xmir_win),
++		    dst_box->y2 - dst_box->y1,
++		    damage_box->x1 - dst_box->x1, damage_box->y1 - dst_box->y1);
++	if (pNv->NvCopy)
++		PUSH_KICK(pNv->ce_pushbuf);
++	else
 +		PUSH_KICK(pNv->pushbuf);
-+	}
-+
-+cleanup_bo:
-+	nouveau_bo_ref(NULL, &bo_dst);
-+}
-+
-+static void
-+nouveau_xmir_buffer_available(WindowPtr win)
-+{
-+    int fd;
-+    PixmapPtr window_pixmap;
-+    ScreenPtr screen = win->drawable.pScreen;
-+
-+    if (!xmir_window_is_dirty(win))
-+        return;
-+
-+    fd = xmir_prime_fd_for_window(win);
-+
-+    window_pixmap = (*win->drawable.pScreen->GetWindowPixmap)(win);
-+
-+    assert(window_pixmap == screen->GetScreenPixmap(screen));
-+
-+    nouveau_xmir_copy_pixmap_to_mir(window_pixmap, fd);
-+
-+    xmir_submit_rendering_for_window(win, NULL);
-+}
-+
-+static void
-+nouveau_submit_dirty_window(WindowPtr win)
-+{
-+	PixmapPtr window_pixmap;
-+	int fd;
-+
-+	if (!xmir_window_has_free_buffer(win))
-+		return;
-+
-+	fd = xmir_prime_fd_for_window(win);
-+
-+	window_pixmap = (*win->drawable.pScreen->GetWindowPixmap)(win);
-+	nouveau_xmir_copy_pixmap_to_mir(window_pixmap, fd);
 +
-+	xmir_submit_rendering_for_window(win, NULL);
++	xmir_submit_rendering_for_window(xmir_win, region);
++	nouveau_bo_ref(NULL, &dst);
 +}
 +
 +static xmir_driver xmir_nouveau_driver = {
 +    XMIR_DRIVER_VERSION,
-+    nouveau_xmir_buffer_available
++    nouveau_xmir_copy_to_mir
 +};
 +#endif
 +
  static void 
  NVBlockHandler (BLOCKHANDLER_ARGS_DECL)
  {
-@@ -516,6 +626,11 @@
+@@ -516,6 +591,11 @@
  	nouveau_dirty_update(pScreen);
  #endif
  
 +#ifdef XMIR
 +	if (pNv->xmir)
-+		xmir_screen_for_each_damaged_window(pNv->xmir, nouveau_submit_dirty_window);
++		xmir_screen_for_each_damaged_window(pNv->xmir, nouveau_xmir_copy_to_mir);
 +#endif
 +
  	if (pScrn->vtSema && !pNv->NoAccel)
  		nouveau_pushbuf_kick(pNv->pushbuf, pNv->pushbuf->channel);
  
-@@ -535,7 +650,10 @@
+@@ -523,6 +603,18 @@
+ 		(*pNv->VideoTimerCallback)(pScrn, currentTime.milliseconds);
+ }
+ 
++static void
++NVSetScreenPixmap(PixmapPtr ppix)
++{
++	ScrnInfoPtr pScrn = xf86ScreenToScrn(ppix->drawable.pScreen);
++	NVPtr pNv = NVPTR(pScrn);
++
++	exaMoveInPixmap(ppix);
++	if (!pNv->NoAccel)
++		nouveau_bo_ref(nouveau_pixmap(ppix)->bo, &pNv->scanout);
++	ppix->drawable.pScreen->devPrivate = ppix;
++}
++
+ static Bool
+ NVCreateScreenResources(ScreenPtr pScreen)
+ {
+@@ -535,7 +627,10 @@
  		return FALSE;
  	pScreen->CreateScreenResources = NVCreateScreenResources;
  
@@ -253,7 +242,7 @@ Index: xf86-video-nouveau/src/nv_driver.c
  	if (!NVEnterVT(VT_FUNC_ARGS(0)))
  		return FALSE;
  
-@@ -561,7 +679,7 @@
+@@ -561,7 +656,7 @@
  	ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
  	NVPtr pNv = NVPTR(pScrn);
  
@@ -262,7 +251,7 @@ Index: xf86-video-nouveau/src/nv_driver.c
  		drmmode_screen_fini(pScreen);
  
  	if (!pNv->NoAccel)
-@@ -688,7 +806,7 @@
+@@ -688,7 +783,7 @@
  	NVPtr pNv = NVPTR(pScrn);
  	NVEntPtr pNVEnt = NVEntPriv(pScrn);
  	struct pci_device *dev = pNv->PciInfo;
@@ -271,7 +260,7 @@ Index: xf86-video-nouveau/src/nv_driver.c
  	drmSetVersion sv;
  	int err;
  	int ret;
-@@ -712,8 +830,11 @@
+@@ -712,8 +807,11 @@
  	busid = XNFprintf("pci:%04x:%02x:%02x.%d",
  			  dev->domain, dev->bus, dev->dev, dev->func);
  #endif
@@ -284,7 +273,7 @@ Index: xf86-video-nouveau/src/nv_driver.c
  	if (ret) {
  		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
  			   "[drm] Failed to open DRM device for %s: %d\n",
-@@ -723,6 +844,9 @@
+@@ -723,6 +821,9 @@
  	}
  	free(busid);
  
@@ -294,7 +283,7 @@ Index: xf86-video-nouveau/src/nv_driver.c
  	sv.drm_di_major = 1;
  	sv.drm_di_minor = 1;
  	sv.drm_dd_major = -1;
-@@ -818,6 +942,14 @@
+@@ -818,6 +919,14 @@
  		)
  		return FALSE;
  
@@ -309,7 +298,7 @@ Index: xf86-video-nouveau/src/nv_driver.c
  	if (xf86IsEntityShared(pScrn->entityList[0])) {
  		if(!xf86IsPrimInitDone(pScrn->entityList[0])) {
  			pNv->Primary = TRUE;
-@@ -965,6 +1097,8 @@
+@@ -965,6 +1074,8 @@
  		from = X_CONFIG;
  		pNv->HWCursor = FALSE;
  	}
@@ -318,7 +307,16 @@ Index: xf86-video-nouveau/src/nv_driver.c
  	xf86DrvMsg(pScrn->scrnIndex, from, "Using %s cursor\n",
  		pNv->HWCursor ? "HW" : "SW");
  
-@@ -1062,7 +1196,13 @@
+@@ -997,7 +1108,7 @@
+ 				      &pNv->glx_vblank))
+ 			from = X_CONFIG;
+ 		else
+-			pNv->glx_vblank = TRUE;
++			pNv->glx_vblank = !xorgMir;
+ 
+ 		xf86DrvMsg(pScrn->scrnIndex, from, "GLX sync to VBlank %s.\n",
+ 			   pNv->glx_vblank ? "enabled" : "disabled");
+@@ -1062,7 +1173,13 @@
  	xf86DrvMsg(pScrn->scrnIndex, from, "Swap limit set to %d [Max allowed %d]%s\n",
  		   pNv->swap_limit, pNv->max_swap_limit, reason);
  
@@ -333,7 +331,7 @@ Index: xf86-video-nouveau/src/nv_driver.c
  	if (ret == FALSE)
  		NVPreInitFail("Kernel modesetting failed to initialize\n");
  
-@@ -1170,7 +1310,8 @@
+@@ -1170,7 +1287,8 @@
  {
  	NVPtr pNv = NVPTR(pScrn);
  
@@ -343,19 +341,28 @@ Index: xf86-video-nouveau/src/nv_driver.c
  
  	nouveau_bo_ref(NULL, &pNv->transfer);
  	nouveau_bo_ref(NULL, &pNv->scanout);
-@@ -1370,6 +1511,11 @@
- 	else
- 		fbPictureInit (pScreen, 0, 0);
+@@ -1384,6 +1502,11 @@
+ 	 */
+ 	miDCInitialize(pScreen, xf86GetPointerScreenFuncs());
  
 +#ifdef XMIR
 +	if (pNv->xmir)
 +		xmir_screen_init(pScreen, pNv->xmir);
 +#endif
 +
- 	xf86SetBlackWhitePixels(pScreen);
+ 	/*
+ 	 * Initialize HW cursor layer. 
+ 	 * Must follow software cursor initialization.
+@@ -1427,6 +1550,8 @@
+ 	pNv->CreateScreenResources = pScreen->CreateScreenResources;
+ 	pScreen->CreateScreenResources = NVCreateScreenResources;
  
- 	if (!pNv->NoAccel && !nouveau_exa_init(pScreen))
-@@ -1443,19 +1589,19 @@
++	pScreen->SetScreenPixmap = NVSetScreenPixmap;
++
+ #ifdef NOUVEAU_PIXMAP_SHARING
+ 	pScreen->StartPixmapTracking = PixmapStartDirtyTracking;
+ 	pScreen->StopPixmapTracking = PixmapStopDirtyTracking;
+@@ -1443,19 +1568,19 @@
  	 * Initialize colormap layer.
  	 * Must follow initialization of the default colormap 
  	 */
@@ -378,10 +385,8 @@ Index: xf86-video-nouveau/src/nv_driver.c
  	return TRUE;
  }
  
-Index: xf86-video-nouveau/src/nv_type.h
-===================================================================
---- xf86-video-nouveau.orig/src/nv_type.h	2013-08-06 12:40:27.802943906 +1000
-+++ xf86-video-nouveau/src/nv_type.h	2013-08-06 12:40:27.798943906 +1000
+--- a/src/nv_type.h
++++ b/src/nv_type.h
 @@ -9,6 +9,14 @@
  #include <stdint.h>
  #include "xf86Crtc.h"

commit 4b5b4e9a9e1be2b6e5dd14dc0343727463a1fe25
Author: Sven Joachim <svenjoac@gmx.de>
Date:   Wed Jul 31 19:37:54 2013 +0200

    Upload to unstable

diff --git a/debian/changelog b/debian/changelog
index eddedcb..9c9f3a5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,9 @@
-xserver-xorg-video-nouveau (1:1.0.9-2) UNRELEASED; urgency=low
+xserver-xorg-video-nouveau (1:1.0.9-2) unstable; urgency=low
 
   * Cherry-pick commit 1df177f35a05 from upstream to fix build
     failure on non-x86 architectures.
 
- -- Sven Joachim <svenjoac@gmx.de>  Wed, 31 Jul 2013 19:33:47 +0200
+ -- Sven Joachim <svenjoac@gmx.de>  Wed, 31 Jul 2013 19:37:44 +0200
 
 xserver-xorg-video-nouveau (1:1.0.9-1) unstable; urgency=low
 

commit f0217d26f3a32f4bd004534656042c1b0d3ccc55
Author: Sven Joachim <svenjoac@gmx.de>
Date:   Wed Jul 31 19:36:28 2013 +0200

    Document the merging/cherry-pick of commit 1df177f35a05

diff --git a/ChangeLog b/ChangeLog
index a73b0e1..3282916 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+commit 1df177f35a05db505577cdc929e63fde906a704b
+Author: Dave Airlie <airlied@gmail.com>
+Date:   Wed Jul 31 10:51:03 2013 +1000
+
+    nouveau: fix build on ppc by wrapping immintrin include.
+    
+    Signed-off-by: Dave Airlie <airlied@redhat.com>
+
 commit 300c5a32d79cf507b5fede96710335bcd316eccb
 Author: Dave Airlie <airlied@redhat.com>
 Date:   Tue Jul 30 15:28:06 2013 +1000
diff --git a/debian/changelog b/debian/changelog
index 9337e75..eddedcb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+xserver-xorg-video-nouveau (1:1.0.9-2) UNRELEASED; urgency=low
+
+  * Cherry-pick commit 1df177f35a05 from upstream to fix build
+    failure on non-x86 architectures.
+
+ -- Sven Joachim <svenjoac@gmx.de>  Wed, 31 Jul 2013 19:33:47 +0200
+
 xserver-xorg-video-nouveau (1:1.0.9-1) unstable; urgency=low
 
   * New upstream release.

commit a13611b401a8ad1a5245738198f9d79d1f05b957
Author: Sven Joachim <svenjoac@gmx.de>
Date:   Wed Jul 31 18:09:20 2013 +0200

    Upload to unstable

diff --git a/debian/changelog b/debian/changelog
index 9431754..9337e75 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,11 +1,11 @@
-xserver-xorg-video-nouveau (1:1.0.9-1) UNRELEASED; urgency=low
+xserver-xorg-video-nouveau (1:1.0.9-1) unstable; urgency=low
 
   * New upstream release.
   * Remove patch 02-link-against-libdrm.diff, applied upstream.
   * Bump Recommends on libgl1-mesa-dri to (>= 9.0), AIGLX does
     not work with older versions.
 
- -- Sven Joachim <svenjoac@gmx.de>  Tue, 30 Jul 2013 08:47:33 +0200
+ -- Sven Joachim <svenjoac@gmx.de>  Wed, 31 Jul 2013 18:09:09 +0200
 
 xserver-xorg-video-nouveau (1:1.0.8-1) unstable; urgency=low
 

commit d7f6adb4dee8c6111c395ab965a8f09c95616b16
Author: Sven Joachim <svenjoac@gmx.de>
Date:   Wed Jul 31 18:08:32 2013 +0200

    Bump Recommends on libgl1-mesa-dri to (>= 9.0)
    
    AIGLX does not work if the DDX and the DRI driver are linked with
    different versions of libdrm-nouveau.

diff --git a/debian/changelog b/debian/changelog
index d13c255..9431754 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,8 @@ xserver-xorg-video-nouveau (1:1.0.9-1) UNRELEASED; urgency=low
 
   * New upstream release.
   * Remove patch 02-link-against-libdrm.diff, applied upstream.
+  * Bump Recommends on libgl1-mesa-dri to (>= 9.0), AIGLX does
+    not work with older versions.
 
  -- Sven Joachim <svenjoac@gmx.de>  Tue, 30 Jul 2013 08:47:33 +0200
 
diff --git a/debian/control b/debian/control
index dcc7c04..6fe2823 100644
--- a/debian/control
+++ b/debian/control
@@ -34,7 +34,7 @@ Depends:
  ${shlibs:Depends},
  ${misc:Depends},
  ${xviddriver:Depends},
-Recommends: libgl1-mesa-dri (>= 7.11.1)
+Recommends: libgl1-mesa-dri (>= 9.0)
 Provides: ${xviddriver:Provides}
 Description: X.Org X server -- Nouveau display driver
  This driver for the X.Org X server (see xserver-xorg for a further description)

commit 1df177f35a05db505577cdc929e63fde906a704b
Author: Dave Airlie <airlied@gmail.com>
Date:   Wed Jul 31 10:51:03 2013 +1000

    nouveau: fix build on ppc by wrapping immintrin include.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/src/nouveau_xv.c b/src/nouveau_xv.c
index 5569b7c..e19378d 100644
--- a/src/nouveau_xv.c
+++ b/src/nouveau_xv.c
@@ -25,7 +25,9 @@
 #include "config.h"
 #endif
 
+#ifdef __SSE2__
 #include <immintrin.h>
+#endif
 
 #include "xf86xv.h"
 #include <X11/extensions/Xv.h>

commit 0897ccb715da88e1038d80b82928ebeccff8e254
Author: Sven Joachim <svenjoac@gmx.de>
Date:   Tue Jul 30 08:53:01 2013 +0200

    Remove patch 02-link-against-libdrm.diff, applied upstream

diff --git a/debian/changelog b/debian/changelog
index 47df922..d13c255 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
 xserver-xorg-video-nouveau (1:1.0.9-1) UNRELEASED; urgency=low
 
   * New upstream release.
+  * Remove patch 02-link-against-libdrm.diff, applied upstream.
 
  -- Sven Joachim <svenjoac@gmx.de>  Tue, 30 Jul 2013 08:47:33 +0200
 
diff --git a/debian/patches/02-link-against-libdrm.diff b/debian/patches/02-link-against-libdrm.diff
deleted file mode 100644
index 602562a..0000000
--- a/debian/patches/02-link-against-libdrm.diff
+++ /dev/null
@@ -1,42 +0,0 @@
-commit 3a48b65b5bfc9cf4c3049923cfdba18d78097c88
-Author: Sven Joachim <svenjoac@gmx.de>
-Date:   Thu Jun 13 20:33:28 2013 +0200
-
-    Link against libdrm
-    
-    The DDX uses symbols from libdrm but currently does not link against
-    it, but rather relies on indirect linkage from libdrm_nouveau.  This
-    could lead to insufficient dependencies in distribution packages, seen
-    in http://bugs.debian.org/633786.
-    
-    Signed-off-by: Sven Joachim <svenjoac@gmx.de>
-
-diff --git a/configure.ac b/configure.ac
-index 6f7f870..b54b8cd 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -80,6 +80,7 @@ XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto)
- XORG_DRIVER_CHECK_EXT(DRI2, [dri2proto >= 2.6])
- 
- # Checks for pkg-config packages
-+PKG_CHECK_MODULES(LIBDRM, [libdrm >= 2.4.17])
- PKG_CHECK_MODULES(LIBDRM_NOUVEAU, [libdrm_nouveau >= 2.4.25])
- AC_SUBST(LIBDRM_NOUVEAU_CFLAGS)
- AC_SUBST(LIBDRM_NOUVEAU_LIBS)
-diff --git a/src/Makefile.am b/src/Makefile.am
-index f54e135..5836ead 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -23,10 +23,10 @@
- # -avoid-version prevents gratuitous .0.0.0 version numbers on the end
- # _ladir passes a dummy rpath to libtool so the thing will actually link
- # TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc.
--AM_CFLAGS = @XORG_CFLAGS@ @LIBUDEV_CFLAGS@ @LIBDRM_NOUVEAU_CFLAGS@
-+AM_CFLAGS = @XORG_CFLAGS@ @LIBUDEV_CFLAGS@ @LIBDRM_NOUVEAU_CFLAGS@ @LIBDRM_CFLAGS@
- nouveau_drv_la_LTLIBRARIES = nouveau_drv.la
- nouveau_drv_la_LDFLAGS = -module -avoid-version @LIBDRM_NOUVEAU_LIBS@ \
--			 @LIBUDEV_LIBS@
-+			 @LIBUDEV_LIBS@ @LIBDRM_LIBS@
- nouveau_drv_ladir = @moduledir@/drivers
- 
- nouveau_drv_la_SOURCES = \
diff --git a/debian/patches/series b/debian/patches/series
index 90907d4..d6892cf 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1 @@
 01-set-NV_DRIVER_DATE-from-ChangeLog.diff
-02-link-against-libdrm.diff

commit 48b29eedcfcf7ac3ae48e32a844332116e7c15fc
Author: Sven Joachim <svenjoac@gmx.de>
Date:   Tue Jul 30 08:51:03 2013 +0200

    New upstream release

diff --git a/ChangeLog b/ChangeLog
index cb76802..a73b0e1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,104 @@
+commit 300c5a32d79cf507b5fede96710335bcd316eccb
+Author: Dave Airlie <airlied@redhat.com>
+Date:   Tue Jul 30 15:28:06 2013 +1000
+
+    bump to 1.0.9 for release
+    
+    Signed-off-by: Dave Airlie <airlied@redhat.com>
+
+commit be44e7804862b4c276ed4d4717b1212920f428e6
+Author: Dave Airlie <airlied@gmail.com>
+Date:   Tue Jul 30 15:26:46 2013 +1000
+
+    nouveau: fix crash when xinerama is enabled.
+    
+    Signed-off-by: Dave Airlie <airlied@redhat.com>
+
+commit 588252556d1c84bf6793bc22edd48e6650a0f1b9
+Author: Dave Airlie <airlied@gmail.com>
+Date:   Tue Jul 30 15:14:22 2013 +1000
+
+    fix make distcheck.
+    
+    add all the nvf0 stuff.
+    
+    Signed-off-by: Dave Airlie <airlied@redhat.com>
+
+commit 29aecda1b5bdb95700894083874492a6d5dfc08a
+Author: Dave Airlie <airlied@gmail.com>
+Date:   Tue Jul 30 14:10:51 2013 +1000
+
+    drmmode: add support for multi-screen reverse optimus
+    
+    Initial reverse optimus didn't consider multiple screens, so
+    this overhauls the code to use the new X server interface,
+    and allows for multiple outputs on the nvidia to be used with
+    the intel doing the rendering.
+    
+    Signed-off-by: Dave Airlie <airlied@redhat.com>
+
+commit d7ae886260b480da0ea4cad22eb6f7b7d12f07b0
+Author: Ilia Mirkin <imirkin@alum.mit.edu>
+Date:   Mon Jul 29 21:03:54 2013 -0400
+
+    nouveau: use uppercase for chipset name
+    
+    Right now the log will output e.g. NVaa instead of NVAA, which is how we
+    usually talk about it.
+    
+    Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
+    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+
+commit 4492cf90c2a7fe27badf6f3f0f296755a65e1e83
+Author: Ilia Mirkin <imirkin@alum.mit.edu>
+Date:   Mon Jul 29 02:40:39 2013 -0400
+
+    xv: speed up YV12 -> NV12 conversion using SSE2 if available
+    
+    memcpy() goes from taking 45% to 66% of total function time, which
+    translates to a 30% decrease in NVPutImage runtime.
+    
+    Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
+    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+
+commit 08c667b06d28756d0d32f82bd736b0bdf2b4448e
+Author: Ilia Mirkin <imirkin@alum.mit.edu>
+Date:   Mon Jul 29 02:40:38 2013 -0400
+
+    xv: fix last pixel for big-endian machines in YV12 -> NV12 conversion
+    
+    Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
+    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+
+commit 8c1c5d4f212958559132506d51dcfeeb17f60371
+Author: Ben Skeggs <bskeggs@redhat.com>
+Date:   Wed May 15 21:34:13 2013 +1000
+
+    nvf0: implement EXA and XVideo acceleration
+    
+    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+
+commit 779b8d44b5ff84b87b52600a2f010ac19cd396ad
+Author: Sven Joachim <svenjoac@gmx.de>
+Date:   Thu Jun 13 20:41:53 2013 +0200
+
+    Link against libdrm
+    
+    The DDX uses symbols from libdrm but currently does not link against
+    it, but rather relies on indirect linkage from libdrm_nouveau.  This
+    could lead to insufficient dependencies in distribution packages, seen
+    in http://bugs.debian.org/633786.
+    
+    Signed-off-by: Sven Joachim <svenjoac@gmx.de>
+
+commit e96ae2b129df2a50d1d3839084df4fb1868d914d
+Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
+Date:   Wed Jun 12 11:05:23 2013 +0200
+
+    fixup the dri2 check
+    
+    Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
+
 commit 7f20a6af25ae28452ec9c971bfa2227857e6ee93
 Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
 Date:   Wed Jun 12 10:46:39 2013 +0200
diff --git a/debian/changelog b/debian/changelog
index 2c27520..47df922 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+xserver-xorg-video-nouveau (1:1.0.9-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+
+ -- Sven Joachim <svenjoac@gmx.de>  Tue, 30 Jul 2013 08:47:33 +0200
+
 xserver-xorg-video-nouveau (1:1.0.8-1) unstable; urgency=low
 
   [ Maarten Lankhorst ]

commit 300c5a32d79cf507b5fede96710335bcd316eccb
Author: Dave Airlie <airlied@redhat.com>
Date:   Tue Jul 30 15:28:06 2013 +1000

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

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

commit be44e7804862b4c276ed4d4717b1212920f428e6
Author: Dave Airlie <airlied@gmail.com>
Date:   Tue Jul 30 15:26:46 2013 +1000

    nouveau: fix crash when xinerama is enabled.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index ed9e186..570a9e4 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -348,7 +348,7 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
 
 	fb_id = drmmode->fb_id;
 #ifdef NOUVEAU_PIXMAP_SHARING
-	if (crtc->randr_crtc->scanout_pixmap) {
+	if (crtc->randr_crtc && crtc->randr_crtc->scanout_pixmap) {
 		x = drmmode_crtc->scanout_pixmap_x;
 		y = 0;
 	} else

commit 588252556d1c84bf6793bc22edd48e6650a0f1b9
Author: Dave Airlie <airlied@gmail.com>
Date:   Tue Jul 30 15:14:22 2013 +1000

    fix make distcheck.
    
    add all the nvf0 stuff.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/src/Makefile.am b/src/Makefile.am
index 5836ead..82d7c14 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -70,34 +70,50 @@ EXTRA_DIST = hwdefs/nv_3ddefs.xml.h \
 	     shader/exac8nvc0.fpc \
 	     shader/exac8nve0.fp \
 	     shader/exac8nve0.fpc \
+	     shader/exac8nvf0.fp \
+	     shader/exac8nvf0.fpc \
 	     shader/exacanvc0.fp \
 	     shader/exacanvc0.fpc \
 	     shader/exacanve0.fp \
 	     shader/exacanve0.fpc \
+	     shader/exacanvf0.fp \
+	     shader/exacanvf0.fpc \
 	     shader/exacmnvc0.fp \
 	     shader/exacmnvc0.fpc \
 	     shader/exacmnve0.fp \
 	     shader/exacmnve0.fpc \
+	     shader/exacmnvf0.fp \
+	     shader/exacmnvf0.fpc \
 	     shader/exas8nvc0.fp \
 	     shader/exas8nvc0.fpc \
 	     shader/exas8nve0.fp \
 	     shader/exas8nve0.fpc \
+	     shader/exas8nvf0.fp \
+	     shader/exas8nvf0.fpc \
 	     shader/exasanvc0.fp \
 	     shader/exasanvc0.fpc \
 	     shader/exasanve0.fp \
 	     shader/exasanve0.fpc \
+	     shader/exasanvf0.fp \
+	     shader/exasanvf0.fpc \
 	     shader/exascnvc0.fp \
 	     shader/exascnvc0.fpc \
 	     shader/exascnve0.fp \
 	     shader/exascnve0.fpc \
+	     shader/exascnvf0.fp \
+	     shader/exascnvf0.fpc \
 	     shader/videonvc0.fp \
 	     shader/videonvc0.fpc \
 	     shader/videonve0.fp \
 	     shader/videonve0.fpc \
+	     shader/videonvf0.fp \
+	     shader/videonvf0.fpc \
 	     shader/xfrm2nvc0.vp \
 	     shader/xfrm2nvc0.vpc \
 	     shader/xfrm2nve0.vp \
 	     shader/xfrm2nve0.vpc \
+	     shader/xfrm2nvf0.vp \
+	     shader/xfrm2nvf0.vpc \
 	     shader/Makefile \
 	     nouveau_local.h \
 	     nv_const.h \

commit 29aecda1b5bdb95700894083874492a6d5dfc08a
Author: Dave Airlie <airlied@gmail.com>
Date:   Tue Jul 30 14:10:51 2013 +1000

    drmmode: add support for multi-screen reverse optimus
    
    Initial reverse optimus didn't consider multiple screens, so
    this overhauls the code to use the new X server interface,
    and allows for multiple outputs on the nvidia to be used with
    the intel doing the rendering.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index b9b7164..ed9e186 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -63,6 +63,7 @@ typedef struct {
     PixmapPtr rotate_pixmap;
     uint32_t rotate_fb_id;
     Bool cursor_visible;
+    int scanout_pixmap_x;
 } drmmode_crtc_private_rec, *drmmode_crtc_private_ptr;
 
 typedef struct {
@@ -347,9 +348,10 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
 
 	fb_id = drmmode->fb_id;
 #ifdef NOUVEAU_PIXMAP_SHARING
-	if (crtc->randr_crtc->scanout_pixmap)
-		x = y = 0;
-	else
+	if (crtc->randr_crtc->scanout_pixmap) {
+		x = drmmode_crtc->scanout_pixmap_x;
+		y = 0;
+	} else
 #endif
 	if (drmmode_crtc->rotate_fb_id) {
 		fb_id = drmmode_crtc->rotate_fb_id;
@@ -548,25 +550,57 @@ drmmode_set_scanout_pixmap(xf86CrtcPtr crtc, PixmapPtr ppix)
 {
 	ScreenPtr screen = xf86ScrnToScreen(crtc->scrn);
 	PixmapPtr screenpix = screen->GetScreenPixmap(screen);
-
+	xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(crtc->scrn);
+	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
+	int c, total_width = 0, max_height = 0, this_x = 0;
 	if (!ppix) {
 		if (crtc->randr_crtc->scanout_pixmap)
 			PixmapStopDirtyTracking(crtc->randr_crtc->scanout_pixmap, screenpix);
+		drmmode_crtc->scanout_pixmap_x = 0;
 		return TRUE;
 	}
 
-	if (ppix->drawable.width > screenpix->drawable.width ||
-	    ppix->drawable.height > screenpix->drawable.height) {
+	/* iterate over all the attached crtcs -
+	   work out bounding box */
+	for (c = 0; c < xf86_config->num_crtc; c++) {
+		xf86CrtcPtr iter = xf86_config->crtc[c];
+		if (!iter->enabled && iter != crtc)
+			continue;
+		if (iter == crtc) {
+			this_x = total_width;
+			total_width += ppix->drawable.width;
+			if (max_height < ppix->drawable.height)
+				max_height = ppix->drawable.height;
+		} else {
+			total_width += iter->mode.HDisplay;
+			if (max_height < iter->mode.VDisplay)
+				max_height = iter->mode.VDisplay;
+		}
+#ifndef HAS_DIRTYTRACKING2
+	if (iter != crtc) {
+		ErrorF("Cannot do multiple crtcs without X server dirty tracking 2 interface\n");
+		return FALSE;
+	}
+#endif
+	}
+
+	if (total_width != screenpix->drawable.width ||
+	    max_height != screenpix->drawable.height) {
 		Bool ret;
-		ret = drmmode_xf86crtc_resize(crtc->scrn, ppix->drawable.width, ppix->drawable.height);
+		ret = drmmode_xf86crtc_resize(crtc->scrn, total_width, max_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;
+		screen->width = screenpix->drawable.width = total_width;
+		screen->height = screenpix->drawable.height = max_height;
 	}
+	drmmode_crtc->scanout_pixmap_x = this_x;
+#ifdef HAS_DIRTYTRACKING2
+	PixmapStartDirtyTracking2(ppix, screenpix, 0, 0, this_x, 0);
+#else
 	PixmapStartDirtyTracking(ppix, screenpix, 0, 0);
+#endif
 	return TRUE;
 }
 #endif

commit d7ae886260b480da0ea4cad22eb6f7b7d12f07b0
Author: Ilia Mirkin <imirkin@alum.mit.edu>
Date:   Mon Jul 29 21:03:54 2013 -0400

    nouveau: use uppercase for chipset name
    
    Right now the log will output e.g. NVaa instead of NVAA, which is how we
    usually talk about it.
    
    Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


Reply to: