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 "MHopf@novell.com"
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 - tobias.johannes.klausmann@mni.thm.de
+
+- 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
+Date: Wed Oct 24 11:19:04 2012 +0200
+
+ bump version to 1.0.3
+
+commit 6644a3a724a11150eba0c0082c8d4fe167b1755e
+Author: Maarten Lankhorst
+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
+
+commit 2a757b7dffa85c30879653a1e52e33b8f4fa8806
+Author: Maarten Lankhorst
+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
+
+commit 72230cd5a7846f7a26f929262a745dc0bdc34a3d
+Author: Maarten Lankhorst
+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
+
+commit 1d7890ecb8b3188177ab85608ea232812672d923
+Author: Maarten Lankhorst
+Date: Tue Oct 23 09:53:39 2012 +0200
+
+ remove unused members from nv_type.h
+
+commit 0b2a548316b0ce88ba19d5e05fdca205fc139962
+Author: Maarten Lankhorst
+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
+
+commit b4231dd715a8a7f86b04519b5f4e8a8d93c2f561
+Author: Mario Kleiner
+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
+ Tested-by: Anssi Hannula
+ Signed-off-by: Mario Kleiner
+
+commit 01c9a9cff7d6232ca6eafa59dd60833a0d9cdc5b
+Author: Ben Skeggs
+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
+
+commit 297fd0d0755bda698be1d0b30cc60a41d7673c0b
+Author: Dave Airlie
+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
+
+commit 5c9379b14cdabc81fd5d4c916dcd93dc77c4f683
+Author: Sebastian Keller
+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
+ Signed-off-by: Ben Skeggs
+
+commit 302b5da84b4890c067f5f7e8b0f4e689909bbb51
+Author: Adam Jackson
+Date: Tue Sep 25 10:44:32 2012 -0400
+
+ Remove mibstore.h
+
+ Signed-off-by: Adam Jackson
+
commit 20f3830ddf868c0d1a46c18fa381585c076bfb8d
Author: Maarten Lankhorst
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,
- ¤t_msc, NULL, NULL);
+ ¤t_msc, ¤t_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: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org