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

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



 ChangeLog                                  |  101 +++++++++++++++++++++++++++++
 configure.ac                               |    5 -
 debian/changelog                           |    7 ++
 debian/patches/02-link-against-libdrm.diff |   42 ------------
 debian/patches/series                      |    1 
 src/Makefile.am                            |   20 +++++
 src/drmmode_display.c                      |   52 ++++++++++++--
 src/nouveau_xv.c                           |   36 ++++++++--
 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 +++++++++++++++++++++++++
 27 files changed, 898 insertions(+), 69 deletions(-)

New commits:
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>

diff --git a/src/nv_driver.c b/src/nv_driver.c
index b83b822..44e7496 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -836,7 +836,7 @@ NVPreInit(ScrnInfoPtr pScrn, int flags)
 	dev = pNv->dev;
 
 	pScrn->chipset = malloc(sizeof(char) * 25);
-	sprintf(pScrn->chipset, "NVIDIA NV%02x", dev->chipset);
+	sprintf(pScrn->chipset, "NVIDIA NV%02X", dev->chipset);
 	xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "Chipset: \"%s\"\n", pScrn->chipset);
 
 	switch (dev->chipset & 0xf0) {

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>

diff --git a/src/nouveau_xv.c b/src/nouveau_xv.c
index 567e30c..5569b7c 100644
--- a/src/nouveau_xv.c
+++ b/src/nouveau_xv.c
@@ -25,6 +25,8 @@
 #include "config.h"
 #endif
 
+#include <immintrin.h>
+
 #include "xf86xv.h"
 #include <X11/extensions/Xv.h>
 #include "exa.h"
@@ -532,30 +534,47 @@ NVCopyNV12ColorPlanes(unsigned char *src1, unsigned char *src2,
 
 	w >>= 1;
 	h >>= 1;
+#ifdef __SSE2__
+	l = w >> 3;
+	e = w & 7;
+#else
 	l = w >> 1;
 	e = w & 1;
+#endif
 
 	for (j = 0; j < h; j++) {
 		unsigned char *us = src1;
 		unsigned char *vs = src2;
 		unsigned int *vuvud = (unsigned int *) dst;
+		unsigned short *vud;
 
 		for (i = 0; i < l; i++) {
-#if X_BYTE_ORDER == X_BIG_ENDIAN
+#ifdef __SSE2__
+			_mm_storeu_si128(
+				(void*)vuvud,
+				_mm_unpacklo_epi8(
+					_mm_loadl_epi64((void*)vs),
+					_mm_loadl_epi64((void*)us)));
+			vuvud+=4;
+			us+=8;
+			vs+=8;
+#else /* __SSE2__ */
+#  if X_BYTE_ORDER == X_BIG_ENDIAN
 			*vuvud++ = (vs[0]<<24) | (us[0]<<16) | (vs[1]<<8) | us[1];
-#else
+#  else
 			*vuvud++ = vs[0] | (us[0]<<8) | (vs[1]<<16) | (us[1]<<24);
-#endif
+#  endif
 			us+=2;
 			vs+=2;
+#endif /* __SSE2__ */
 		}
 
-		if (e) {
-			unsigned short *vud = (unsigned short *) vuvud;
+		vud = (unsigned short *)vuvud;
+		for (i = 0; i < e; i++) {
 #if X_BYTE_ORDER == X_BIG_ENDIAN
-			*vud = us[0] | (vs[0]<<8);
+			vud[i] = us[i] | (vs[i]<<8);
 #else
-			*vud = vs[0] | (us[0]<<8);
+			vud[i] = vs[i] | (us[i]<<8);
 #endif
 		}
 

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>

diff --git a/src/nouveau_xv.c b/src/nouveau_xv.c
index 8eafcf0..567e30c 100644
--- a/src/nouveau_xv.c
+++ b/src/nouveau_xv.c
@@ -552,8 +552,11 @@ NVCopyNV12ColorPlanes(unsigned char *src1, unsigned char *src2,
 
 		if (e) {
 			unsigned short *vud = (unsigned short *) vuvud;
-
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+			*vud = us[0] | (vs[0]<<8);
+#else
 			*vud = vs[0] | (us[0]<<8);
+#endif
 		}
 
 		dst += dstPitch;

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>

diff --git a/src/nvc0_accel.c b/src/nvc0_accel.c
index df6a6b8..0694402 100644
--- a/src/nvc0_accel.c
+++ b/src/nvc0_accel.c
@@ -43,6 +43,16 @@
 #include "shader/exas8nve0.fp"
 #include "shader/exac8nve0.fp"
 
+#include "shader/xfrm2nvf0.vp"
+#include "shader/videonvf0.fp"
+
+#include "shader/exascnvf0.fp"
+#include "shader/exacmnvf0.fp"
+#include "shader/exacanvf0.fp"
+#include "shader/exasanvf0.fp"
+#include "shader/exas8nvf0.fp"
+#include "shader/exac8nvf0.fp"
+
 #define NVC0PushProgram(pNv,addr,code) do {                                    \
 	const unsigned size = sizeof(code) / sizeof(code[0]);                  \
 	PUSH_DATAu((pNv)->pushbuf, (pNv)->scratch, (addr), size);              \
@@ -136,10 +146,11 @@ NVAccelInitP2MF_NVE0(ScrnInfoPtr pScrn)
 {
 	NVPtr pNv = NVPTR(pScrn);
 	struct nouveau_pushbuf *push = pNv->pushbuf;
+	uint32_t class = (pNv->dev->chipset < 0xf0) ? 0xa040 : 0xa140;
 	int ret;
 
-	ret = nouveau_object_new(pNv->channel, 0x0000a040, 0xa040,
-				 NULL, 0, &pNv->NvMemFormat);
+	ret = nouveau_object_new(pNv->channel, class, class, NULL, 0,
+				&pNv->NvMemFormat);
 	if (ret)
 		return FALSE;
 
@@ -224,9 +235,13 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn)
 	if (pNv->Architecture < NV_ARCH_E0) {
 		class  = 0x9097;
 		handle = 0x001f906e;
-	} else {
+	} else
+	if (pNv->dev->chipset < 0xf0) {
 		class  = 0xa097;
 		handle = 0x0000906e;
+	} else {
+		class  = 0xa197;
+		handle = 0x0000906e;
 	}
 
 	ret = nouveau_object_new(pNv->channel, class, class,
@@ -325,7 +340,8 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn)
 
 		BEGIN_NVC0(push, NVC0_3D(MEM_BARRIER), 1);
 		PUSH_DATA (push, 0x1111);
-	} else {
+	} else
+	if (pNv->dev->chipset < 0xf0) {
 		NVC0PushProgram(pNv, PVP_PASS, NVE0VP_Transform2);
 		NVC0PushProgram(pNv, PFP_S, NVE0FP_Source);
 		NVC0PushProgram(pNv, PFP_C, NVE0FP_Composite);
@@ -334,6 +350,15 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn)
 		NVC0PushProgram(pNv, PFP_S_A8, NVE0FP_Source_A8);
 		NVC0PushProgram(pNv, PFP_C_A8, NVE0FP_Composite_A8);
 		NVC0PushProgram(pNv, PFP_NV12, NVE0FP_NV12);
+	} else {
+		NVC0PushProgram(pNv, PVP_PASS, NVF0VP_Transform2);
+		NVC0PushProgram(pNv, PFP_S, NVF0FP_Source);
+		NVC0PushProgram(pNv, PFP_C, NVF0FP_Composite);
+		NVC0PushProgram(pNv, PFP_CCA, NVF0FP_CAComposite);
+		NVC0PushProgram(pNv, PFP_CCASA, NVF0FP_CACompositeSrcAlpha);
+		NVC0PushProgram(pNv, PFP_S_A8, NVF0FP_Source_A8);
+		NVC0PushProgram(pNv, PFP_C_A8, NVF0FP_Composite_A8);
+		NVC0PushProgram(pNv, PFP_NV12, NVF0FP_NV12);
 	}
 
 	BEGIN_NVC0(push, NVC0_3D(SP_SELECT(1)), 4);
diff --git a/src/shader/Makefile b/src/shader/Makefile
index 59e549f..46658e9 100644
--- a/src/shader/Makefile
+++ b/src/shader/Makefile
@@ -14,8 +14,16 @@ NVE0_SHADERS = xfrm2nve0.vpc \
 	       exas8nve0.fpc \
 	       exac8nve0.fpc \
 	       videonve0.fpc
+NVF0_SHADERS = xfrm2nvf0.vpc \
+	       exascnvf0.fpc \
+	       exacmnvf0.fpc \
+	       exacanvf0.fpc \
+	       exasanvf0.fpc \
+	       exas8nvf0.fpc \
+	       exac8nvf0.fpc \
+	       videonvf0.fpc
 
-SHADERS = $(NVC0_SHADERS) $(NVE0_SHADERS)
+SHADERS = $(NVC0_SHADERS) $(NVE0_SHADERS) $(NVF0_SHADERS)
 
 all: $(SHADERS)
 
@@ -28,3 +36,8 @@ $(filter %nve0.vpc,$(SHADERS)): %.vpc: %.vp
 	cpp -DENVYAS $< | sed -e '/^#/d' | envyas -w -m nvc0 -V nve4 -o $@
 $(filter %nve0.fpc,$(SHADERS)): %.fpc: %.fp
 	cpp -DENVYAS $< | sed -e '/^#/d' | envyas -w -m nvc0 -V nve4 -o $@
+
+$(filter %nvf0.vpc,$(SHADERS)): %.vpc: %.vp
+	cpp -DENVYAS $< | sed -e '/^#/d' | envyas -w -m gk110 -o $@
+$(filter %nvf0.fpc,$(SHADERS)): %.fpc: %.fp
+	cpp -DENVYAS $< | sed -e '/^#/d' | envyas -w -m gk110 -o $@
diff --git a/src/shader/exac8nvf0.fp b/src/shader/exac8nvf0.fp
new file mode 100644
index 0000000..e4a7b04
--- /dev/null
+++ b/src/shader/exac8nvf0.fp
@@ -0,0 +1,42 @@
+#ifndef ENVYAS
+static uint32_t
+NVF0FP_Composite_A8[] = {
+	0x00001462,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x80000000,
+	0x00000a0a,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x0000000f,
+	0x00000000,
+#include "exac8nvf0.fpc"
+};
+#else
+
+interp pass f32 $r0 a[0x7c] 0x0 0x0 0x0
+rcp f32 $r0 $r0
+interp mul f32 $r3 a[0x94] $r0 0x0 0x0
+interp mul f32 $r2 a[0x90] $r0 0x0 0x0
+tex t lauto #:#:#:$r1 t2d c[0x4] xy__ $r2:$r3 0x0
+interp mul f32 $r3 a[0x84] $r0 0x0 0x0
+interp mul f32 $r2 a[0x80] $r0 0x0 0x0
+tex t lauto #:#:#:$r0 t2d c[0x0] xy__ $r2:$r3 0x0
+texbar 0x0
+mul ftz rn f32 $r3 $r0 $r1
+mov b32 $r2 $r3
+mov b32 $r1 $r3
+mov b32 $r0 $r3
+exit
+#endif
diff --git a/src/shader/exac8nvf0.fpc b/src/shader/exac8nvf0.fpc
new file mode 100644
index 0000000..465cabf
--- /dev/null
+++ b/src/shader/exac8nvf0.fpc
@@ -0,0 +1,28 @@
+0x7f9ffc02,
+0x7483fc3e,
+0x021c0002,
+0x84000000,
+0x001ffc0e,
+0x74a3fc4a,
+0x001ffc0a,
+0x74a3fc48,
+0x7f9c0805,
+0x600080a1,
+0x001ffc0e,
+0x74a3fc42,
+0x001ffc0a,
+0x74a3fc40,
+0x7f9c0801,
+0x600000a1,
+0x001c0002,
+0x77000000,
+0x009c000e,
+0xe3408000,
+0x019c000a,
+0xe4c03c00,
+0x019c0006,
+0xe4c03c00,
+0x019c0002,
+0xe4c03c00,
+0x001c003c,
+0x18000000,
diff --git a/src/shader/exacanvf0.fp b/src/shader/exacanvf0.fp
new file mode 100644
index 0000000..338a1e1
--- /dev/null
+++ b/src/shader/exacanvf0.fp
@@ -0,0 +1,43 @@
+#ifndef ENVYAS
+static uint32_t
+NVF0FP_CAComposite[] = {
+	0x00001462, /* 0x0000c000 = USES_KIL, MULTI_COLORS */
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x80000000, /* FRAG_COORD_UMASK = 0x8 */
+	0x00000a0a, /* FP_INTERP[0x080], 0022 0022 */
+	0x00000000, /* FP_INTERP[0x0c0], 0 = OFF */
+	0x00000000, /* FP_INTERP[0x100], 1 = FLAT */
+	0x00000000, /* FP_INTERP[0x140], 2 = PERSPECTIVE */
+	0x00000000, /* FP_INTERP[0x180], 3 = LINEAR */
+	0x00000000, /* FP_INTERP[0x1c0] */
+	0x00000000, /* FP_INTERP[0x200] */
+	0x00000000, /* FP_INTERP[0x240] */
+	0x00000000, /* FP_INTERP[0x280] */
+	0x00000000, /* FP_INTERP[0x2c0] */
+	0x00000000, /* FP_INTERP[0x300] */
+	0x00000000,
+	0x0000000f, /* FP_RESULT_MASK (0x8000 Face ?) */
+	0x00000000, /* 0x2 = FragDepth, 0x1 = SampleMask */
+#include "exacanvf0.fpc"
+};
+#else
+
+interp pass f32 $r0 a[0x7c] 0x0 0x0 0x0
+rcp f32 $r0 $r0
+interp mul f32 $r3 a[0x94] $r0 0x0 0x0
+interp mul f32 $r2 a[0x90] $r0 0x0 0x0
+tex t lauto $r4:$r5:$r6:$r7 t2d c[0x4] xy__ $r2:$r3 0x0
+texbar 0x0
+interp mul f32 $r1 a[0x84] $r0 0x0 0x0
+interp mul f32 $r0 a[0x80] $r0 0x0 0x0
+tex t lauto $r0:$r1:$r2:$r3 t2d c[0x0] xy__ $r0:$r1 0x0
+texbar 0x0
+mul ftz rn f32 $r3 $r3 $r7
+mul ftz rn f32 $r2 $r2 $r6
+mul ftz rn f32 $r1 $r1 $r5
+mul ftz rn f32 $r0 $r0 $r4
+exit
+#endif
diff --git a/src/shader/exacanvf0.fpc b/src/shader/exacanvf0.fpc
new file mode 100644
index 0000000..70dd4b1
--- /dev/null
+++ b/src/shader/exacanvf0.fpc
@@ -0,0 +1,30 @@
+0x7f9ffc02,
+0x7483fc3e,
+0x021c0002,
+0x84000000,
+0x001ffc0e,
+0x74a3fc4a,
+0x001ffc0a,
+0x74a3fc48,
+0x7f9c0811,
+0x600080bd,
+0x001c0002,
+0x77000000,
+0x001ffc06,
+0x74a3fc42,
+0x001ffc02,
+0x74a3fc40,
+0x7f9c0001,
+0x600000bd,
+0x001c0002,
+0x77000000,
+0x039c0c0e,
+0xe3408000,
+0x031c080a,
+0xe3408000,
+0x029c0406,
+0xe3408000,
+0x021c0002,
+0xe3408000,
+0x001c003c,
+0x18000000,
diff --git a/src/shader/exacmnvf0.fp b/src/shader/exacmnvf0.fp
new file mode 100644
index 0000000..787b4f5
--- /dev/null
+++ b/src/shader/exacmnvf0.fp
@@ -0,0 +1,43 @@
+#ifndef ENVYAS
+static uint32_t
+NVF0FP_Composite[] = {
+	0x00001462,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x80000000,
+	0x00000a0a,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x0000000f,
+	0x00000000,
+#include "exacmnvf0.fpc"
+};
+#else
+
+interp pass f32 $r0 a[0x7c] 0x0 0x0 0x0
+rcp f32 $r0 $r0
+interp mul f32 $r3 a[0x94] $r0 0x0 0x0
+interp mul f32 $r2 a[0x90] $r0 0x0 0x0
+tex t lauto #:#:#:$r4 t2d c[0x4] xy__ $r2:$r3 0x0
+texbar 0x0
+interp mul f32 $r1 a[0x84] $r0 0x0 0x0
+interp mul f32 $r0 a[0x80] $r0 0x0 0x0
+tex t lauto $r0:$r1:$r2:$r3 t2d c[0x0] xy__ $r0:$r1 0x0
+texbar 0x0
+mul ftz rn f32 $r3 $r3 $r4
+mul ftz rn f32 $r2 $r2 $r4
+mul ftz rn f32 $r1 $r1 $r4
+mul ftz rn f32 $r0 $r0 $r4
+exit
+#endif
diff --git a/src/shader/exacmnvf0.fpc b/src/shader/exacmnvf0.fpc
new file mode 100644
index 0000000..b2acf6f
--- /dev/null
+++ b/src/shader/exacmnvf0.fpc
@@ -0,0 +1,30 @@
+0x7f9ffc02,
+0x7483fc3e,
+0x021c0002,
+0x84000000,
+0x001ffc0e,
+0x74a3fc4a,
+0x001ffc0a,
+0x74a3fc48,
+0x7f9c0811,
+0x600080a1,
+0x001c0002,
+0x77000000,
+0x001ffc06,
+0x74a3fc42,
+0x001ffc02,
+0x74a3fc40,
+0x7f9c0001,
+0x600000bd,
+0x001c0002,
+0x77000000,
+0x021c0c0e,
+0xe3408000,
+0x021c080a,
+0xe3408000,
+0x021c0406,
+0xe3408000,
+0x021c0002,
+0xe3408000,
+0x001c003c,
+0x18000000,
diff --git a/src/shader/exas8nvf0.fp b/src/shader/exas8nvf0.fp
new file mode 100644
index 0000000..3804b27
--- /dev/null
+++ b/src/shader/exas8nvf0.fp
@@ -0,0 +1,38 @@
+#ifndef ENVYAS
+static uint32_t
+NVF0FP_Source_A8[] = {
+	0x00001462,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x80000000,
+	0x0000000a,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x00000000,
+	0x0000000f,
+	0x00000000,
+#include "exas8nvf0.fpc"
+};
+#else
+
+interp pass f32 $r0 a[0x7c] 0x0 0x0 0x0
+rcp f32 $r0 $r0
+interp mul f32 $r1 a[0x84] $r0 0x0 0x0
+interp mul f32 $r0 a[0x80] $r0 0x0 0x0
+tex t lauto #:#:#:$r0 t2d c[0x0] xy__ $r0:$r1 0x0
+texbar 0x0
+mov b32 $r3 $r0
+mov b32 $r2 $r0
+mov b32 $r1 $r0
+exit
+#endif
diff --git a/src/shader/exas8nvf0.fpc b/src/shader/exas8nvf0.fpc
new file mode 100644
index 0000000..4ec3bb7
--- /dev/null
+++ b/src/shader/exas8nvf0.fpc
@@ -0,0 +1,20 @@
+0x7f9ffc02,


Reply to: