Hello community,

here is the log from the commit of package xorg-x11-driver-video-nouveau for 
openSUSE:Factory checked in at 2012-10-26 17:37:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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
      2012-09-18 14:03:34.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.xorg-x11-driver-video-nouveau.new/xorg-x11-driver-video-nouveau.changes
 2012-10-26 17:37:40.000000000 +0200
@@ -1,0 +2,15 @@
+Thu Oct 25 06:23:44 UTC 2012 - [email protected]
+
+- Update to version 1.0.3:
+  + Remove mibstore.h
+  + shadowfb: fix segfault due to reading outside of shadow buffer
+  + nouveau/dri2: fix pixmap/window offset calcs.
+  + nvc0/exa: make solid fill actually work
+  + remove unused members from nv_type.h
+  + exa: fix up download_from/upload_to screen
+  + exa: fix comparison in download_from_screen
+  + exa: remove exaMarkSync from download/upload screen
+  + dri2: Fix potential race and crash for swap at next vblank.
+  + exa: use CLAMP_TO_EDGE for RepeatPad
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ xorg-x11-driver-video-nouveau.spec ++++++
--- /var/tmp/diff_new_pack.qjG6Tw/_old  2012-10-26 17:37:41.000000000 +0200
+++ /var/tmp/diff_new_pack.qjG6Tw/_new  2012-10-26 17:37:41.000000000 +0200
@@ -25,7 +25,7 @@
 BuildRequires:  pkgconfig(libdrm_nouveau) >= 2.4.25
 Url:            http://nouveau.freedesktop.org/wiki/
 
-Version:        1.0.2
+Version:        1.0.3
 Release:        0
 Summary:        Accelerated Open Source driver for nVidia cards
 License:        MIT

++++++ xf86-video-nouveau-1.0.2.tar.bz2 -> xf86-video-nouveau-1.0.3.tar.bz2 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-nouveau-1.0.2/ChangeLog 
new/xf86-video-nouveau-1.0.3/ChangeLog
--- old/xf86-video-nouveau-1.0.2/ChangeLog      2012-09-12 13:51:29.000000000 
+0200
+++ new/xf86-video-nouveau-1.0.3/ChangeLog      2012-10-24 11:21:52.000000000 
+0200
@@ -1,3 +1,150 @@
+commit 8c3e1623b0be15f8cc590d893bfd19be87bd079a
+Author: Maarten Lankhorst <[email protected]>
+Date:   Wed Oct 24 11:19:04 2012 +0200
+
+    bump version to 1.0.3
+
+commit 6644a3a724a11150eba0c0082c8d4fe167b1755e
+Author: Maarten Lankhorst <[email protected]>
+Date:   Tue Oct 23 20:17:29 2012 +0200
+
+    exa: remove exaMarkSync from download/upload screen
+    
+    They're noops on nouveau since sync markers are unused and
+    download/upload are always synchronous anyway from exa's POV.
+    
+    Signed-off-by: Maarten Lankhorst <[email protected]>
+
+commit 2a757b7dffa85c30879653a1e52e33b8f4fa8806
+Author: Maarten Lankhorst <[email protected]>
+Date:   Tue Oct 23 17:04:37 2012 +0200
+
+    exa: fix comparison in download_from_screen
+    
+    Presumably a copy/paste error from upload_to_screen.
+    
+    Signed-off-by: Maarten Lankhorst <[email protected]>
+
+commit 72230cd5a7846f7a26f929262a745dc0bdc34a3d
+Author: Maarten Lankhorst <[email protected]>
+Date:   Tue Oct 23 10:37:27 2012 +0200
+
+    exa: fix up download_from/upload_to screen
+    
+    Add a missing return TRUE to download_from_screen.
+    Add a missing exaMarkSync to memcpy in upload_to_screen.
+    Add a really loud warning to both if memcpy to/from tiled is done.
+    
+    Signed-off-by: Maarten Lankhorst <[email protected]>
+
+commit 1d7890ecb8b3188177ab85608ea232812672d923
+Author: Maarten Lankhorst <[email protected]>
+Date:   Tue Oct 23 09:53:39 2012 +0200
+
+    remove unused members from nv_type.h
+
+commit 0b2a548316b0ce88ba19d5e05fdca205fc139962
+Author: Maarten Lankhorst <[email protected]>
+Date:   Mon Oct 22 13:12:06 2012 +0200
+
+    nvc0/exa: make solid fill actually work
+    
+    Some investigation showed that the code for accelerating solid fill
+    didn't actually work because NVC0EXACheckTexture would fail.
+    
+    Making the check the same as in NV50EXACheckTexture fixes this, and
+    seems to get acceleration for solid fills working right.
+    
+    Signed-off-by: Maarten Lankhorst <[email protected]>
+
+commit b4231dd715a8a7f86b04519b5f4e8a8d93c2f561
+Author: Mario Kleiner <[email protected]>
+Date:   Tue Oct 9 09:06:59 2012 +0200
+
+    dri2: Fix potential race and crash for swap at next vblank.
+    
+    This fixes a potential race + crash that wasn't properly
+    handled by commit 248de8cdbd6d0bc062633b49896fa4791148cd3b
+    and happened at least on one users machine.
+    
+    That commit wrongly assumed no special action would be needed
+    for swaps at next vblank while triple-buffering is enabled on
+    XOrg server 1.12 or later.
+    
+    Closer inspection of the x-server main dispatch loop shows
+    it is possible that the client manages to get the server
+    to dispatch a new DRI2GetBuffersWithFormat() call before
+    the server calls the vblank event handler and executes
+    the nouveau_dri2_finish_swap() routine. Such a race would
+    cause a crash, as described in above commit.
+    
+    This commit handles the "swap at next vblank" case by
+    calling nouveau_dri2_finish_swap() immediately without
+    the roundtrip (queue vblank_event -> kernel -> deliver event
+    -> x-server processes event -> nouveau vblank event handler),
+    before control gets returned to the client.
+    
+    This avoids the race while retaining triple-buffering. As
+    a bonus, time-critical swaps at next vblank get processed
+    without roundtrip delay, increasing the chance of not
+    skipping a frame due to vblank miss while sync to vblank is
+    on.
+    
+    Thanks to Anssi for reporting this problem on the nouveau
+    mailing list at 12th July 2012 and for testing this patch.
+    
+    Reported-by: Anssi Hannula <[email protected]>
+    Tested-by: Anssi Hannula <[email protected]>
+    Signed-off-by: Mario Kleiner <[email protected]>
+
+commit 01c9a9cff7d6232ca6eafa59dd60833a0d9cdc5b
+Author: Ben Skeggs <[email protected]>
+Date:   Thu Oct 18 18:38:21 2012 +1000
+
+    shadowfb: fix segfault due to reading outside of shadow buffer
+    
+    Probably caused by the new libdrm port, the new libdrm sets the bo
+    size field to the *allocated* size and not the *requested* size,
+    making the max_height calculation here invalid.
+    
+    Switched to using virtualX/virtualY as the bounds, which should
+    hopefully do the right thing..
+    
+    Signed-off-by: Ben Skeggs <[email protected]>
+
+commit 297fd0d0755bda698be1d0b30cc60a41d7673c0b
+Author: Dave Airlie <[email protected]>
+Date:   Tue Oct 16 16:15:16 2012 +1000
+
+    nouveau/dri2: fix pixmap/window offset calcs.
+    
+    This should fix prime rendering under kwin, and not break it under the
+    others.
+    
+    Signed-off-by: Dave Airlie <[email protected]>
+
+commit 5c9379b14cdabc81fd5d4c916dcd93dc77c4f683
+Author: Sebastian Keller <[email protected]>
+Date:   Tue Sep 25 11:35:35 2012 +0200
+
+    exa: use CLAMP_TO_EDGE for RepeatPad
+    
+    This fixes border rendering in some gtk3 themes.
+    https://bugs.freedesktop.org/show_bug.cgi?id=55310
+    
+    v2 (Ben Skeggs): implement same fix for fermi/kepler too
+    
+    Signed-off-by: Sebastian Keller <[email protected]>
+    Signed-off-by: Ben Skeggs <[email protected]>
+
+commit 302b5da84b4890c067f5f7e8b0f4e689909bbb51
+Author: Adam Jackson <[email protected]>
+Date:   Tue Sep 25 10:44:32 2012 -0400
+
+    Remove mibstore.h
+    
+    Signed-off-by: Adam Jackson <[email protected]>
+
 commit 20f3830ddf868c0d1a46c18fa381585c076bfb8d
 Author: Maarten Lankhorst <[email protected]>
 Date:   Wed Sep 12 13:42:43 2012 +0200
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-nouveau-1.0.2/configure 
new/xf86-video-nouveau-1.0.3/configure
--- old/xf86-video-nouveau-1.0.2/configure      2012-09-12 13:44:08.000000000 
+0200
+++ new/xf86-video-nouveau-1.0.3/configure      2012-10-24 11:19:12.000000000 
+0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for xf86-video-nouveau 1.0.2.
+# Generated by GNU Autoconf 2.69 for xf86-video-nouveau 1.0.3.
 #
 # Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
 #
@@ -591,8 +591,8 @@
 # Identity of this package.
 PACKAGE_NAME='xf86-video-nouveau'
 PACKAGE_TARNAME='xf86-video-nouveau'
-PACKAGE_VERSION='1.0.2'
-PACKAGE_STRING='xf86-video-nouveau 1.0.2'
+PACKAGE_VERSION='1.0.3'
+PACKAGE_STRING='xf86-video-nouveau 1.0.3'
 PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
 PACKAGE_URL=''
 
@@ -1358,7 +1358,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures xf86-video-nouveau 1.0.2 to adapt to many kinds of 
systems.
+\`configure' configures xf86-video-nouveau 1.0.3 to adapt to many kinds of 
systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1429,7 +1429,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of xf86-video-nouveau 1.0.2:";;
+     short | recursive ) echo "Configuration of xf86-video-nouveau 1.0.3:";;
    esac
   cat <<\_ACEOF
 
@@ -1556,7 +1556,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-xf86-video-nouveau configure 1.0.2
+xf86-video-nouveau configure 1.0.3
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1834,7 +1834,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by xf86-video-nouveau $as_me 1.0.2, which was
+It was created by xf86-video-nouveau $as_me 1.0.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2675,7 +2675,7 @@
 
 # Define the identity of the package.
  PACKAGE='xf86-video-nouveau'
- VERSION='1.0.2'
+ VERSION='1.0.3'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -13521,7 +13521,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by xf86-video-nouveau $as_me 1.0.2, which was
+This file was extended by xf86-video-nouveau $as_me 1.0.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -13587,7 +13587,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-xf86-video-nouveau config.status 1.0.2
+xf86-video-nouveau config.status 1.0.3
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-nouveau-1.0.2/configure.ac 
new/xf86-video-nouveau-1.0.3/configure.ac
--- old/xf86-video-nouveau-1.0.2/configure.ac   2012-09-12 13:43:58.000000000 
+0200
+++ new/xf86-video-nouveau-1.0.3/configure.ac   2012-10-24 11:18:52.000000000 
+0200
@@ -22,7 +22,7 @@
 
 AC_PREREQ([2.60])
 AC_INIT([xf86-video-nouveau],
-        [1.0.2],
+        [1.0.3],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-video-nouveau])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-nouveau-1.0.2/src/nouveau_dri2.c 
new/xf86-video-nouveau-1.0.3/src/nouveau_dri2.c
--- old/xf86-video-nouveau-1.0.2/src/nouveau_dri2.c     2012-09-11 
08:46:32.000000000 +0200
+++ new/xf86-video-nouveau-1.0.3/src/nouveau_dri2.c     2012-10-20 
09:29:10.000000000 +0200
@@ -165,9 +165,9 @@
                translate = TRUE;
 
        if (translate && pDraw->type == DRAWABLE_WINDOW) {
-               WindowPtr pWin = (WindowPtr)pDraw;
-               off_x = pWin->origin.x;
-               off_y = pWin->origin.y;
+               PixmapPtr pPix = get_drawable_pixmap(pDraw);
+               off_x = pDraw->x - pPix->screen_x;
+               off_y = pDraw->y - pPix->screen_y;
        }
 
        pGC = GetScratchGC(pDraw->depth, pScreen);
@@ -479,6 +479,7 @@
 {
        struct nouveau_dri2_vblank_state *s;
        CARD64 current_msc, expect_msc;
+       CARD64 current_ust;
        int ret;
 
        /* Initialize a swap structure */
@@ -490,9 +491,9 @@
                { SWAP, client, draw->id, dst, src, func, data, 0 };
 
        if (can_sync_to_vblank(draw)) {
-               /* Get current sequence */
+               /* Get current sequence and vblank time*/
                ret = nouveau_wait_vblank(draw, DRM_VBLANK_RELATIVE, 0,
-                                         &current_msc, NULL, NULL);
+                                         &current_msc, &current_ust, NULL);
                if (ret)
                        goto fail;
 
@@ -512,24 +513,48 @@
                if (*target_msc == 0)
                        *target_msc = 1;
 
+               /* Swap at next possible vblank requested? */
+               if (current_msc >= *target_msc - 1) {
+                       /* Special case: Need to swap at next vblank.
+                        * Schedule swap immediately, bypassing the kernel
+                        * vblank event mechanism to avoid a dangerous race
+                        * between the client and the x-server vblank event
+                        * dispatch in the main x-server dispatch loop when
+                        * the swap_limit is set to 2 for triple-buffering.
+                        *
+                        * This also optimizes for the common case of swap
+                        * at next vblank, avoiding vblank dispatch delay.
+                        */
+                       s->frame = 1 + ((unsigned int) current_msc & 
0xffffffff);
+                       *target_msc = 1 + current_msc;
+                       nouveau_dri2_finish_swap(draw, current_msc,
+                                                (unsigned int) (current_ust / 
1000000),
+                                                (unsigned int) (current_ust % 
1000000),
+                                                s);
+                       return TRUE;
+               }
+
+               /* This is a swap in the future, ie. the vblank event will
+                * only get dispatched at least 2 vblanks into the future.
+                */
+
 #if DRI2INFOREC_VERSION >= 6
-               /* Is this a swap in the future, ie. the vblank event will
-                * not be immediately dispatched, but only at a future vblank?
-                * If so, we need to temporarily lower the swaplimit to 1, so
-                * that DRI2GetBuffersWithFormat() requests from the client get
+               /* On XOrg 1.12+ we need to temporarily lower the swaplimit to 
1,
+                * so that DRI2GetBuffersWithFormat() requests from the client 
get
                 * deferred in the x-server until the vblank event has been
                 * dispatched to us and nouveau_dri2_finish_swap() is done. If
                 * we wouldn't do this, DRI2GetBuffersWithFormat() would operate
                 * on wrong (pre-swap) buffers, and cause a segfault later on in
-                * nouveau_dri2_finish_swap(). Our vblank event handler restores
+                * nouveau_dri2_finish_swap(). Our vblank event handler will 
restore
                 * the old swaplimit immediately after 
nouveau_dri2_finish_swap()
-                * is done, so we still get 1 video refresh cycle worth of
-                * triple-buffering. For a swap at next vblank, dispatch of the
-                * vblank event happens immediately, so there isn't any need
-                * for this lowered swaplimit.
+                * is done, so we still get 1 video refresh cycle worth of 
triple-
+                * buffering, because the client can start rendering again 1 
cycle
+                * before the pending swap is completed.
+                *
+                * The same race would happen for the "swap at next vblank" 
case,
+                * but the special case "swap immediately" code above prevents 
this.
                 */
-               if (current_msc < *target_msc - 1)
-                       DRI2SwapLimit(draw, 1);
+               DRI2SwapLimit(draw, 1);
 #endif
 
                /* Request a vblank event one frame before the target */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-nouveau-1.0.2/src/nouveau_exa.c 
new/xf86-video-nouveau-1.0.3/src/nouveau_exa.c
--- old/xf86-video-nouveau-1.0.2/src/nouveau_exa.c      2012-09-11 
08:46:32.000000000 +0200
+++ new/xf86-video-nouveau-1.0.3/src/nouveau_exa.c      2012-10-23 
20:16:29.000000000 +0200
@@ -269,7 +269,7 @@
                        goto memcpy;
 
                nouveau_bo_wait(tmp, NOUVEAU_BO_RD, pNv->client);
-               if (src_pitch == tmp_pitch) {
+               if (dst_pitch == tmp_pitch) {
                        memcpy(dst, tmp->map + tmp_offset, dst_pitch * lines);
                        dst += dst_pitch * lines;
                } else {
@@ -285,9 +285,14 @@
                h -= lines;
                y += lines;
        }
+       return TRUE;
 
 memcpy:
        bo = nouveau_pixmap_bo(pspix);
+       if (nv50_style_tiled_pixmap(pspix))
+               ErrorF("%s:%d - falling back to memcpy ignores tiling\n",
+                      __func__, __LINE__);
+
        if (nouveau_bo_map(bo, NOUVEAU_BO_RD, pNv->client))
                return FALSE;
        src = (char *)bo->map + (y * src_pitch) + (x * cpp);
@@ -316,20 +321,17 @@
                if (pNv->Architecture < NV_ARCH_50) {
                        if (NV04EXAUploadIFC(pScrn, src, src_pitch, pdpix,
                                             x, y, w, h, cpp)) {
-                               exaMarkSync(pdpix->drawable.pScreen);
                                return TRUE;
                        }
                } else
                if (pNv->Architecture < NV_ARCH_C0) {
                        if (NV50EXAUploadSIFC(src, src_pitch, pdpix,
                                              x, y, w, h, cpp)) {
-                               exaMarkSync(pdpix->drawable.pScreen);
                                return TRUE;
                        }
                } else {
                        if (NVC0EXAUploadSIFC(src, src_pitch, pdpix,
                                              x, y, w, h, cpp)) {
-                               exaMarkSync(pdpix->drawable.pScreen);
                                return TRUE;
                        }
                }
@@ -367,12 +369,15 @@
                y += lines;
        }
 
-       exaMarkSync(pdpix->drawable.pScreen);
        return TRUE;
 
        /* fallback to memcpy-based transfer */
 memcpy:
        bo = nouveau_pixmap_bo(pdpix);
+       if (nv50_style_tiled_pixmap(pdpix))
+               ErrorF("%s:%d - falling back to memcpy ignores tiling\n",
+                      __func__, __LINE__);
+
        if (nouveau_bo_map(bo, NOUVEAU_BO_WR, pNv->client))
                return FALSE;
        dst = (char *)bo->map + (y * dst_pitch) + (x * cpp);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-nouveau-1.0.2/src/nv40_exa.c 
new/xf86-video-nouveau-1.0.3/src/nv40_exa.c
--- old/xf86-video-nouveau-1.0.2/src/nv40_exa.c 2012-07-13 18:32:04.000000000 
+0200
+++ new/xf86-video-nouveau-1.0.3/src/nv40_exa.c 2012-10-02 11:05:54.000000000 
+0200
@@ -260,9 +260,9 @@
        if (pPict->repeat) {
                switch(pPict->repeatType) {
                case RepeatPad:
-                       PUSH_DATA (push, NV30_3D_TEX_WRAP_S_CLAMP | 
-                                        NV30_3D_TEX_WRAP_T_CLAMP |
-                                        NV30_3D_TEX_WRAP_R_CLAMP);
+                       PUSH_DATA (push, NV30_3D_TEX_WRAP_S_CLAMP_TO_EDGE |
+                                        NV30_3D_TEX_WRAP_T_CLAMP_TO_EDGE |
+                                        NV30_3D_TEX_WRAP_R_CLAMP_TO_EDGE);
                        break;
                case RepeatReflect:
                        PUSH_DATA (push, NV30_3D_TEX_WRAP_S_MIRRORED_REPEAT |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-nouveau-1.0.2/src/nv50_exa.c 
new/xf86-video-nouveau-1.0.3/src/nv50_exa.c
--- old/xf86-video-nouveau-1.0.2/src/nv50_exa.c 2012-09-11 08:46:32.000000000 
+0200
+++ new/xf86-video-nouveau-1.0.3/src/nv50_exa.c 2012-10-02 11:05:54.000000000 
+0200
@@ -665,9 +665,9 @@
        if (ppict->repeat) {
                switch (ppict->repeatType) {
                case RepeatPad:
-                       PUSH_DATA (push, NV50TSC_1_0_WRAPS_CLAMP |
-                                NV50TSC_1_0_WRAPT_CLAMP |
-                                NV50TSC_1_0_WRAPR_CLAMP | 0x00024000);
+                       PUSH_DATA (push, NV50TSC_1_0_WRAPS_CLAMP_TO_EDGE |
+                                NV50TSC_1_0_WRAPT_CLAMP_TO_EDGE |
+                                NV50TSC_1_0_WRAPR_CLAMP_TO_EDGE | 0x00024000);
                        break;
                case RepeatReflect:
                        PUSH_DATA (push, NV50TSC_1_0_WRAPS_MIRROR_REPEAT |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-nouveau-1.0.2/src/nv_driver.c 
new/xf86-video-nouveau-1.0.3/src/nv_driver.c
--- old/xf86-video-nouveau-1.0.2/src/nv_driver.c        2012-09-11 
08:46:32.000000000 +0200
+++ new/xf86-video-nouveau-1.0.3/src/nv_driver.c        2012-10-22 
13:11:22.000000000 +0200
@@ -1283,7 +1283,6 @@
        if (!pNv->NoAccel && !nouveau_exa_init(pScreen))
                return FALSE;
 
-       miInitializeBackingStore(pScreen);
        xf86SetBackingStore(pScreen);
        xf86SetSilkenMouse(pScreen);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-nouveau-1.0.2/src/nv_include.h 
new/xf86-video-nouveau-1.0.3/src/nv_include.h
--- old/xf86-video-nouveau-1.0.2/src/nv_include.h       2012-09-11 
08:46:32.000000000 +0200
+++ new/xf86-video-nouveau-1.0.3/src/nv_include.h       2012-10-02 
11:05:54.000000000 +0200
@@ -27,9 +27,6 @@
 /* All drivers initialising the SW cursor need this */
 #include "mipointer.h"
 
-/* All drivers implementing backing store need this */
-#include "mibstore.h"
-
 #include "micmap.h"
 
 #include "xf86DDC.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-nouveau-1.0.2/src/nv_shadow.c 
new/xf86-video-nouveau-1.0.3/src/nv_shadow.c
--- old/xf86-video-nouveau-1.0.2/src/nv_shadow.c        2012-05-23 
09:01:01.000000000 +0200
+++ new/xf86-video-nouveau-1.0.3/src/nv_shadow.c        2012-10-20 
09:28:57.000000000 +0200
@@ -32,19 +32,18 @@
 NVRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
 {
        NVPtr pNv = NVPTR(pScrn);
-       int x1, y1, x2, y2, width, height, cpp, FBPitch, max_height;
+       int x1, y1, x2, y2, width, height, cpp, FBPitch;
        unsigned char *src, *dst;
    
        cpp = pScrn->bitsPerPixel >> 3;
        FBPitch = pScrn->displayWidth * cpp;
-       max_height = pNv->scanout->size/FBPitch;
 
        nouveau_bo_map(pNv->scanout, NOUVEAU_BO_WR, pNv->client);
        while(num--) {
                x1 = MAX(pbox->x1, 0);
                y1 = MAX(pbox->y1, 0);
-               x2 = MIN(pbox->x2, pScrn->displayWidth);
-               y2 = MIN(pbox->y2, max_height);
+               x2 = MIN(pbox->x2, pScrn->virtualX);
+               y2 = MIN(pbox->y2, pScrn->virtualY);
                width = (x2 - x1) * cpp;
                height = y2 - y1;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-nouveau-1.0.2/src/nv_type.h 
new/xf86-video-nouveau-1.0.3/src/nv_type.h
--- old/xf86-video-nouveau-1.0.2/src/nv_type.h  2012-09-11 08:46:32.000000000 
+0200
+++ new/xf86-video-nouveau-1.0.3/src/nv_type.h  2012-10-23 11:00:19.000000000 
+0200
@@ -167,8 +167,6 @@
 
 struct nouveau_pixmap {
        struct nouveau_bo *bo;
-       void *linear;
-       unsigned size;
        Bool shared;
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xf86-video-nouveau-1.0.2/src/nvc0_exa.c 
new/xf86-video-nouveau-1.0.3/src/nvc0_exa.c
--- old/xf86-video-nouveau-1.0.2/src/nvc0_exa.c 2012-09-11 08:46:32.000000000 
+0200
+++ new/xf86-video-nouveau-1.0.3/src/nvc0_exa.c 2012-10-22 13:15:27.000000000 
+0200
@@ -459,14 +459,19 @@
 static Bool
 NVC0EXACheckTexture(PicturePtr ppict, PicturePtr pdpict, int op)
 {
-       if (!ppict->pDrawable)
-               NOUVEAU_FALLBACK("Solid and gradient pictures unsupported.\n");
-
-       if (ppict->pDrawable->width > 8192 ||
-           ppict->pDrawable->height > 8192)
-               NOUVEAU_FALLBACK("texture dimensions exceeded %dx%d\n",
-                                ppict->pDrawable->width,
-                                ppict->pDrawable->height);
+       if (ppict->pDrawable) {
+               if (ppict->pDrawable->width > 8192 ||
+                   ppict->pDrawable->height > 8192)
+                       NOUVEAU_FALLBACK("texture too large\n");
+       } else {
+               switch (ppict->pSourcePict->type) {
+               case SourcePictTypeSolidFill:
+                       break;
+               default:
+                       NOUVEAU_FALLBACK("pict %d\n", ppict->pSourcePict->type);
+                       break;
+               }
+       }
 
        switch (ppict->format) {
        case PICT_a8r8g8b8:
@@ -659,9 +664,9 @@
                switch (ppict->repeatType) {
                case RepeatPad:
                        PUSH_DATA (push, 0x00024000 |
-                                        NV50TSC_1_0_WRAPS_CLAMP |
-                                        NV50TSC_1_0_WRAPT_CLAMP |
-                                        NV50TSC_1_0_WRAPR_CLAMP);
+                                        NV50TSC_1_0_WRAPS_CLAMP_TO_EDGE |
+                                        NV50TSC_1_0_WRAPT_CLAMP_TO_EDGE |
+                                        NV50TSC_1_0_WRAPR_CLAMP_TO_EDGE);
                        break;
                case RepeatReflect:
                        PUSH_DATA (push, 0x00024000 |
@@ -826,10 +831,8 @@
                        PicturePtr pspict, PicturePtr pmpict, PicturePtr pdpict,
                        PixmapPtr pspix, PixmapPtr pmpix, PixmapPtr pdpix)
 {
-       struct nouveau_bo *src = nouveau_pixmap_bo(pspix);
        struct nouveau_bo *dst = nouveau_pixmap_bo(pdpix);
-       struct nouveau_bo *mask = pmpix ? nouveau_pixmap_bo(pmpix) : NULL;
-       NVC0EXA_LOCALS(pspix);
+       NVC0EXA_LOCALS(pdpix);
 
        if (!PUSH_SPACE(push, 256))
                NOUVEAU_FALLBACK("space\n");
@@ -881,10 +884,13 @@
 
        PUSH_RESET(push);
        PUSH_REFN (push, pNv->scratch, NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR);
-       PUSH_REFN (push, src, NOUVEAU_BO_VRAM | NOUVEAU_BO_RD);
+       if (pspict->pDrawable)
+               PUSH_REFN (push, nouveau_pixmap_bo(pspix),
+                          NOUVEAU_BO_VRAM | NOUVEAU_BO_RD);
        PUSH_REFN (push, dst, NOUVEAU_BO_VRAM | NOUVEAU_BO_WR);
-       if (pmpict)
-               PUSH_REFN (push, mask, NOUVEAU_BO_VRAM | NOUVEAU_BO_RD);
+       if (pmpict && pmpict->pDrawable)
+               PUSH_REFN (push, nouveau_pixmap_bo(pmpix),
+                          NOUVEAU_BO_VRAM | NOUVEAU_BO_RD);
 
        nouveau_pushbuf_bufctx(push, pNv->bufctx);
        if (nouveau_pushbuf_validate(push)) {

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

Reply via email to