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: