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]
