On 2010-10-10 14:49 +0200, Stephan Thamm wrote: > Package: xserver-xorg-video-nouveau > Version: 1:0.0.16+git20100825+390f1c8-1 > Severity: important > > > I am using a GeForce GTX 285 and am getting graphical glitches since I > switched from the proprietary nvidia to nouveau. They are appearing near > the upper left corner of my screen. I think they are related to > off screen rendering as I sometimes see thumbnails of dolphin > thumbnails. > > The glitches get mostly triggered by kde applications like dolphin and > gwenview. I suspect they use more off screen rendering than my other > applications. > > There are also some other problems: > - Colors get corrupted. From time to time one color gets replaced by > another wherever it's used > - Sometimes X freezes. First it doesn't accept any mouse clicks or > keyboard input, after some time not even mouse movement gets displayed > (can be triggered by watching HD movies for some time or heavily using > dolphin thumbnails) > > I don't know if these problems are related and might post bug reports on > them later (when this is resolved and they still occur). > > The problem seems to be the same as here: > https://bugzilla.redhat.com/show_bug.cgi?id=590216 > > I was not able to to find the patch which solved the problem in fedora, > they are just referring to a new version ...
I dug the patch out (attached), would you like to try it? It might also be a good idea to report the bug upstream at https://bugs.freedesktop.org/ (choose Product xorg, Component Driver/nouveau). Cheers, Sven
>From bf9ee3339d5bd0258df493e766f2e6677cd4d73f Mon Sep 17 00:00:00 2001 From: Ben Skeggs <bske...@redhat.com> Date: Mon, 10 May 2010 08:31:36 +1000 Subject: [PATCH] force consistant tiling mode to prevent corruption issues --- src/drmmode_display.c | 4 ++-- src/nv_driver.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 7867ddb..4a9daa1 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -420,7 +420,7 @@ drmmode_crtc_shadow_allocate(xf86CrtcPtr crtc, int width, int height) if (pNv->Architecture >= NV_ARCH_50) { tile_mode = 4; - tile_flags = (drmmode->cpp == 2) ? 0x7000 : 0x7a00; + tile_flags = 0x7000; //(drmmode->cpp == 2) ? 0x7000 : 0x7a00; ah = NOUVEAU_ALIGN(height, 1 << (tile_mode + 2)); pitch = NOUVEAU_ALIGN(width * drmmode->cpp, 64); } else { @@ -1018,7 +1018,7 @@ drmmode_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height) if (pNv->Architecture >= NV_ARCH_50 && pNv->wfb_enabled) { tile_mode = 4; - tile_flags = (scrn->bitsPerPixel == 16) ? 0x7000 : 0x7a00; + tile_flags = 0x7000; //(scrn->bitsPerPixel == 16) ? 0x7000 : 0x7a00; ah = NOUVEAU_ALIGN(height, 1 << (tile_mode + 2)); pitch = NOUVEAU_ALIGN(width * (scrn->bitsPerPixel >> 3), 64); } else { diff --git a/src/nv_driver.c b/src/nv_driver.c index ca2c669..f74e415 100644 --- a/src/nv_driver.c +++ b/src/nv_driver.c @@ -838,7 +838,7 @@ NVMapMem(ScrnInfoPtr pScrn) size = pScrn->displayWidth * (pScrn->bitsPerPixel >> 3); if (pNv->Architecture >= NV_ARCH_50 && pNv->tiled_scanout) { tile_mode = 4; - tile_flags = pScrn->bitsPerPixel == 16 ? 0x7000 : 0x7a00; + tile_flags = 0x7000; //pScrn->bitsPerPixel == 16 ? 0x7000 : 0x7a00; size *= NOUVEAU_ALIGN(pScrn->virtualY, (1 << (tile_mode + 2))); } else { size *= pScrn->virtualY; -- 1.7.0.1