Hello community,

here is the log from the commit of package xorg-x11-driver-video-nouveau for 
openSUSE:Factory checked in at 2013-04-02 13:39:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xorg-x11-driver-video-nouveau (Old)
 and      /work/SRC/openSUSE:Factory/.xorg-x11-driver-video-nouveau.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xorg-x11-driver-video-nouveau", Maintainer is "[email protected]"

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/xorg-x11-driver-video-nouveau/xorg-x11-driver-video-nouveau.changes
      2013-03-20 10:05:19.000000000 +0100
+++ 
/work/SRC/openSUSE:Factory/.xorg-x11-driver-video-nouveau.new/xorg-x11-driver-video-nouveau.changes
 2013-04-02 13:39:21.000000000 +0200
@@ -1,0 +2,16 @@
+Fri Mar 29 19:33:25 UTC 2013 - [email protected]
+
+- Update to version 1.0.7
+  + dri2: fix missing frame throttle on copy_region buffer swaps
+  + nouveau: add reverse prime support
+  + nouveau: create shared pixmaps in GART
+  + nouveau: fix regression in PRIME since 
58284cf32778d54cde139423450bc33360784503
+  + nouveau: align shared buffers to 256
+  + nouveau: make prime regression fix more robust.
+  + nouveau: fix build on older X servers
+  + nouveau: fix build against old servers (part 2)
+  + Clean up some errors on closing.
+  + nouveau: put cursor BO in GART
+  + nv30/exa: fix shaders on big-endian machines
+
+-------------------------------------------------------------------

Old:
----
  xf86-video-nouveau-1.0.6.tar.bz2

New:
----
  xf86-video-nouveau-1.0.7.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xorg-x11-driver-video-nouveau.spec ++++++
--- /var/tmp/diff_new_pack.l4swkx/_old  2013-04-02 13:39:23.000000000 +0200
+++ /var/tmp/diff_new_pack.l4swkx/_new  2013-04-02 13:39:23.000000000 +0200
@@ -25,7 +25,7 @@
 BuildRequires:  pkgconfig(libdrm_nouveau) >= 2.4.25
 Url:            http://nouveau.freedesktop.org/wiki/
 
-Version:        1.0.6
+Version:        1.0.7
 Release:        0
 Summary:        Accelerated Open Source driver for nVidia cards
 License:        MIT

++++++ xf86-video-nouveau-1.0.6.tar.bz2 -> xf86-video-nouveau-1.0.7.tar.bz2 
++++++
++++ 3558 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-nouveau-1.0.6/ChangeLog new/xf86-video-nouveau-1.0.7/ChangeLog
--- old/xf86-video-nouveau-1.0.6/ChangeLog      2013-01-07 05:14:06.000000000 
+0100
+++ new/xf86-video-nouveau-1.0.7/ChangeLog      2013-03-27 09:52:21.000000000 
+0100
@@ -1,3 +1,128 @@
+commit 6771424d79e541d2fa7253a582db3dc9108fd97d
+Author: Maarten Lankhorst <[email protected]>
+Date:   Wed Mar 27 09:50:03 2013 +0100
+
+    bump to 1.0.7
+    
+    Signed-off-by: Maarten Lankhorst <[email protected]>
+
+commit 84998320162a74a0861b7be1fcc230e50f08424a
+Author: Maarten Lankhorst <[email protected]>
+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.
+
+commit a80785f79268ed3701fc69cbd9194ad12822c82c
+Author: Dave Airlie <[email protected]>
+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 <[email protected]>
+
+commit 05dc9b57896689a3dbd9e6aeb16d57c49515b02e
+Author: Marcin Slusarz <[email protected]>
+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 <[email protected]>
+
+commit 61a277488f7195914cbdda10355db0d758fc801c
+Author: Dave Airlie <[email protected]>
+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: [email protected]
+    Signed-off-by: Dave Airlie <[email protected]>
+
+commit e8f222fd10e21f39488d3d8c697e4948cd787cd0
+Author: Dave Airlie <[email protected]>
+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 <[email protected]>
+
+commit d762631c9306b6580b34db1e7eb57bbcac901390
+Author: Dave Airlie <[email protected]>
+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 <[email protected]>
+
+commit c6980b2add5752a7c285a846b2c9353c9d18afd4
+Author: Dave Airlie <[email protected]>
+Date:   Wed Feb 6 15:24:09 2013 +1000
+
+    nouveau: fix regression in PRIME since 
58284cf32778d54cde139423450bc33360784503
+    
+    Signed-off-by: Dave Airlie <[email protected]>
+
+commit 59fb3f0252e9b769c5877cfe83d8dbc51cdff232
+Author: Dave Airlie <[email protected]>
+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 <[email protected]>
+
+commit 1fdd7db94b55c65ea62cc9eaefff620b20e9e4ea
+Author: Dave Airlie <[email protected]>
+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 <[email protected]>
+
+commit 58284cf32778d54cde139423450bc33360784503
+Author: Christoph Bumiller <[email protected]>
+Date:   Tue Jan 29 16:38:21 2013 +1000
+
+    dri2: fix missing frame throttle on copy_region buffer swaps
+    
+    Signed-off-by: Ben Skeggs <[email protected]>
+
+commit 912d418fdfd2e99eef1e5c631c76dda1d82cf451
+Author: Marcin Slusarz <[email protected]>
+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 <[email protected]>
+
 commit 8f934fad5d4934936b3265f272ca81e73c60d7dc
 Author: Dave Airlie <[email protected]>
 Date:   Mon Jan 7 14:13:10 2013 +1000
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-nouveau-1.0.6/configure.ac 
new/xf86-video-nouveau-1.0.7/configure.ac
--- old/xf86-video-nouveau-1.0.6/configure.ac   2013-01-07 05:13:03.000000000 
+0100
+++ new/xf86-video-nouveau-1.0.7/configure.ac   2013-03-27 09:49:55.000000000 
+0100
@@ -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])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-nouveau-1.0.6/missing new/xf86-video-nouveau-1.0.7/missing
--- old/xf86-video-nouveau-1.0.6/missing        2013-01-07 05:10:11.000000000 
+0100
+++ new/xf86-video-nouveau-1.0.7/missing        2013-03-27 09:52:13.000000000 
+0100
@@ -1,9 +1,10 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
 
-scriptversion=2012-01-06.18; # UTC
+scriptversion=2012-01-06.13; # UTC
 
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
 # Originally by Fran,cois Pinard <[email protected]>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
@@ -25,7 +26,7 @@
 # the same distribution terms that you use for the rest of that program.
 
 if test $# -eq 0; then
-  echo 1>&2 "Try '$0 --help' for more information"
+  echo 1>&2 "Try \`$0 --help' for more information"
   exit 1
 fi
 
@@ -33,7 +34,7 @@
 sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
 sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
 
-# In the cases where this matters, 'missing' is being run in the
+# In the cases where this matters, `missing' is being run in the
 # srcdir already.
 if test -f configure.ac; then
   configure_ac=configure.ac
@@ -64,7 +65,7 @@
     echo "\
 $0 [OPTION]... PROGRAM [ARGUMENT]...
 
-Handle 'PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
 error status if there is no known handling for PROGRAM.
 
 Options:
@@ -73,20 +74,20 @@
   --run           try to run the given command, and emulate it if it fails
 
 Supported PROGRAM values:
-  aclocal      touch file 'aclocal.m4'
-  autoconf     touch file 'configure'
-  autoheader   touch file 'config.h.in'
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
   autom4te     touch the output file, or create a stub one
-  automake     touch all 'Makefile.in' files
-  bison        create 'y.tab.[ch]', if possible, from existing .[ch]
-  flex         create 'lex.yy.c', if possible, from existing .c
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
   help2man     touch the output file
-  lex          create 'lex.yy.c', if possible, from existing .c
+  lex          create \`lex.yy.c', if possible, from existing .c
   makeinfo     touch the output file
-  yacc         create 'y.tab.[ch]', if possible, from existing .[ch]
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
 
-Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
-'g' are ignored when checking the name.
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
 
 Send bug reports to <[email protected]>."
     exit $?
@@ -98,8 +99,8 @@
     ;;
 
   -*)
-    echo 1>&2 "$0: Unknown '$1' option"
-    echo 1>&2 "Try '$0 --help' for more information"
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
     exit 1
     ;;
 
@@ -126,7 +127,7 @@
        exit 1
     elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
        # Could not run --version or --help.  This is probably someone
-       # running '$TOOL --version' or '$TOOL --help' to check whether
+       # running `$TOOL --version' or `$TOOL --help' to check whether
        # $TOOL exists and not knowing $TOOL uses missing.
        exit 1
     fi
@@ -138,27 +139,27 @@
 case $program in
   aclocal*)
     echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified 'acinclude.m4' or '${configure_ac}'.  You might want
-         to install the Automake and Perl packages.  Grab them from
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
          any GNU archive site."
     touch aclocal.m4
     ;;
 
   autoconf*)
     echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified '${configure_ac}'.  You might want to install the
-         Autoconf and GNU m4 packages.  Grab them from any GNU
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
          archive site."
     touch configure
     ;;
 
   autoheader*)
     echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified 'acconfig.h' or '${configure_ac}'.  You might want
-         to install the Autoconf and GNU m4 packages.  Grab them
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
          from any GNU archive site."
     files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' 
${configure_ac}`
     test -z "$files" && files="config.h"
@@ -175,9 +176,9 @@
 
   automake*)
     echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified 'Makefile.am', 'acinclude.m4' or '${configure_ac}'.
-         You might want to install the Automake and Perl packages.
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
          Grab them from any GNU archive site."
     find . -type f -name Makefile.am -print |
           sed 's/\.am$/.in/' |
@@ -186,10 +187,10 @@
 
   autom4te*)
     echo 1>&2 "\
-WARNING: '$1' is needed, but is $msg.
+WARNING: \`$1' is needed, but is $msg.
          You might have modified some files without having the
          proper tools for further handling them.
-         You can get '$1' as part of Autoconf from any GNU
+         You can get \`$1' as part of \`Autoconf' from any GNU
          archive site."
 
     file=`echo "$*" | sed -n "$sed_output"`
@@ -209,10 +210,10 @@
 
   bison*|yacc*)
     echo 1>&2 "\
-WARNING: '$1' $msg.  You should only need it if
-         you modified a '.y' file.  You may need the Bison package
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
          in order for those modifications to take effect.  You can get
-         Bison from any GNU archive site."
+         \`Bison' from any GNU archive site."
     rm -f y.tab.c y.tab.h
     if test $# -ne 1; then
         eval LASTARG=\${$#}
@@ -239,10 +240,10 @@
 
   lex*|flex*)
     echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified a '.l' file.  You may need the Flex package
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
          in order for those modifications to take effect.  You can get
-         Flex from any GNU archive site."
+         \`Flex' from any GNU archive site."
     rm -f lex.yy.c
     if test $# -ne 1; then
         eval LASTARG=\${$#}
@@ -262,10 +263,10 @@
 
   help2man*)
     echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
+WARNING: \`$1' is $msg.  You should only need it if
         you modified a dependency of a manual page.  You may need the
-        Help2man package in order for those modifications to take
-        effect.  You can get Help2man from any GNU archive site."
+        \`Help2man' package in order for those modifications to take
+        effect.  You can get \`Help2man' from any GNU archive site."
 
     file=`echo "$*" | sed -n "$sed_output"`
     test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
@@ -280,12 +281,12 @@
 
   makeinfo*)
     echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified a '.texi' or '.texinfo' file, or any other file
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
          indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy 'make' (AIX,
-         DU, IRIX).  You might want to install the Texinfo package or
-         the GNU make package.  Grab either from any GNU archive site."
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
     # The file to touch is that specified with -o ...
     file=`echo "$*" | sed -n "$sed_output"`
     test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
@@ -309,12 +310,12 @@
 
   *)
     echo 1>&2 "\
-WARNING: '$1' is needed, and is $msg.
+WARNING: \`$1' is needed, and is $msg.
          You might have modified some files without having the
-         proper tools for further handling them.  Check the 'README' file,
+         proper tools for further handling them.  Check the \`README' file,
          it often tells you about the needed prerequisites for installing
          this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing '$1' program."
+         some other package would contain this missing \`$1' program."
     exit 1
     ;;
 esac
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-nouveau-1.0.6/src/drmmode_display.c 
new/xf86-video-nouveau-1.0.7/src/drmmode_display.c
--- old/xf86-video-nouveau-1.0.6/src/drmmode_display.c  2013-01-07 
05:09:54.000000000 +0100
+++ new/xf86-video-nouveau-1.0.7/src/drmmode_display.c  2013-03-25 
13:55:28.000000000 +0100
@@ -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,6 +346,11 @@
        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
+#endif
        if (drmmode_crtc->rotate_fb_id) {
                fb_id = drmmode_crtc->rotate_fb_id;
                x = 0;
@@ -536,6 +542,35 @@
        }
 }
 
+#ifdef NOUVEAU_PIXMAP_SHARING
+static Bool
+drmmode_set_scanout_pixmap(xf86CrtcPtr crtc, PixmapPtr ppix)
+{
+       ScreenPtr screen = xf86ScrnToScreen(crtc->scrn);
+       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;
+}
+#endif
+
 static const xf86CrtcFuncsRec drmmode_crtc_funcs = {
        .dpms = drmmode_crtc_dpms,
        .set_mode_major = drmmode_set_mode_major,
@@ -547,6 +582,10 @@
        .shadow_allocate = drmmode_crtc_shadow_allocate,
        .shadow_destroy = drmmode_crtc_shadow_destroy,
        .gamma_set = drmmode_gamma_set,
+
+#ifdef NOUVEAU_PIXMAP_SHARING
+       .set_scanout_pixmap = drmmode_set_scanout_pixmap,
+#endif
 };
 
 
@@ -567,7 +606,7 @@
                                                 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);
 
@@ -588,6 +627,9 @@
        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;
@@ -624,6 +666,9 @@
        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]);
@@ -888,6 +933,9 @@
                        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)
@@ -1398,6 +1446,7 @@
        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);
        }
@@ -1485,6 +1534,12 @@
 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-nouveau-1.0.6/src/nouveau_dri2.c 
new/xf86-video-nouveau-1.0.7/src/nouveau_dri2.c
--- old/xf86-video-nouveau-1.0.6/src/nouveau_dri2.c     2012-11-02 
00:05:35.000000000 +0100
+++ new/xf86-video-nouveau-1.0.7/src/nouveau_dri2.c     2013-03-25 
09:30:41.000000000 +0100
@@ -134,6 +134,7 @@
 {
        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,23 @@
        }
        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) {
+                       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);
+               }
+       }
+
        pGC->ops->CopyArea(src_draw, dst_draw, pGC, 0, 0,
                           pDraw->width, pDraw->height, off_x, off_y);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-nouveau-1.0.6/src/nouveau_exa.c 
new/xf86-video-nouveau-1.0.7/src/nouveau_exa.c
--- old/xf86-video-nouveau-1.0.6/src/nouveau_exa.c      2012-11-02 
00:05:35.000000000 +0100
+++ new/xf86-video-nouveau-1.0.7/src/nouveau_exa.c      2013-03-27 
09:49:43.000000000 +0100
@@ -139,6 +139,11 @@
                return NULL;
        }
 
+#ifdef NOUVEAU_PIXMAP_SHARING
+       if ((usage_hint & 0xffff) == CREATE_PIXMAP_USAGE_SHARED)
+               nvpix->shared = TRUE;
+#endif
+
        return nvpix;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-nouveau-1.0.6/src/nv30_exa.c 
new/xf86-video-nouveau-1.0.7/src/nv30_exa.c
--- old/xf86-video-nouveau-1.0.6/src/nv30_exa.c 2012-07-26 03:16:20.000000000 
+0200
+++ new/xf86-video-nouveau-1.0.7/src/nv30_exa.c 2013-03-05 17:21:25.000000000 
+0100
@@ -820,146 +820,146 @@
        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;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-nouveau-1.0.6/src/nv_accel_common.c 
new/xf86-video-nouveau-1.0.7/src/nv_accel_common.c
--- old/xf86-video-nouveau-1.0.6/src/nv_accel_common.c  2012-06-01 
15:19:04.000000000 +0200
+++ new/xf86-video-nouveau-1.0.7/src/nv_accel_common.c  2013-03-05 
17:21:25.000000000 +0100
@@ -35,10 +35,19 @@
        NVPtr pNv = NVPTR(scrn);
        Bool scanout = (usage_hint & NOUVEAU_CREATE_PIXMAP_SCANOUT);
        Bool tiled = (usage_hint & NOUVEAU_CREATE_PIXMAP_TILED);
+       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;
+
        if (pNv->Architecture >= NV_ARCH_50) {
                if (scanout) {
                        if (pNv->tiled_scanout) {
@@ -48,9 +57,9 @@
                                *pitch = NOUVEAU_ALIGN(width * cpp, 256);
                        }
                } else {
-                       if (bpp >= 8)
+                       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)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-video-nouveau-1.0.6/src/nv_driver.c 
new/xf86-video-nouveau-1.0.7/src/nv_driver.c
--- old/xf86-video-nouveau-1.0.6/src/nv_driver.c        2013-01-07 
05:12:55.000000000 +0100
+++ new/xf86-video-nouveau-1.0.7/src/nv_driver.c        2013-03-27 
09:49:43.000000000 +0100
@@ -432,8 +432,8 @@
        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
@@ -452,7 +452,7 @@
 {
        RegionRec pixregion;
 
-       PixmapRegionInit(&pixregion, dirty->slave_dst->master_pixmap);
+       PixmapRegionInit(&pixregion, dirty->slave_dst);
 
        DamageRegionAppend(&dirty->slave_dst->drawable, &pixregion);
        PixmapSyncDirtyHelper(dirty, &pixregion);
@@ -624,8 +624,9 @@
 {
        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
@@ -676,7 +677,7 @@
                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
 }

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to