Summary: | nv40: Dual display (--left-of , --right-of) with nouveau does not work any more | ||
---|---|---|---|
Product: | xorg | Reporter: | Mario Bachmann <grafgrimm77> |
Component: | Driver/nouveau | Assignee: | Nouveau Project <nouveau> |
Status: | RESOLVED FIXED | QA Contact: | Xorg Project Team <xorg-team> |
Severity: | normal | ||
Priority: | highest | CC: | c.nicolas+bugs-freedesktop, tomi.pievilainen+freedesktop |
Version: | 7.4 (2008.09) | ||
Hardware: | x86-64 (AMD64) | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
Description
Mario Bachmann
2011-04-02 02:25:31 UTC
Please have a look at: http://bugs.gentoo.org/show_bug.cgi?format=multiple&id=356965 Same problem here. Once I use xrandr to put one device left-of the other, the elements are not drawn correctly, any window is merely a huge gray blob, although the cursor is drawn just fine and moves along both screens without problems. There are no errors within Xorg.log, but this problem is seriously annoying, so please fix this :) Hi Mario Would you mind attaching kernel and X logs for *both* software configurations so that some conclusions can be made. Just to point out you have not even mentioned what card do you have (apart from the fact that it is nvidia =). Some screenshots may also be useful (but optional) - a picture says more than a thousand words. I.e. if you would like the issue to be resolved please provide some relevant information [1] Please ensure that the logs are full and attached as plain text. Cheers [1] http://nouveau.freedesktop.org/wiki/Bugs On Thu, 2011-04-14 at 12:23 -0700, bugzilla-daemon@freedesktop.org wrote: > https://bugs.freedesktop.org/show_bug.cgi?id=35901 > > --- Comment #2 from x2b <thekingofthekolk@gmx.de> 2011-04-14 12:23:44 PDT --- > Same problem here. Once I use xrandr to put one device left-of the other, the > elements are not drawn correctly, any window is merely a huge gray blob, > although the cursor is drawn just fine and moves along both screens without > problems. There are no errors within Xorg.log, but this problem is seriously > annoying, so please fix this :) > Created attachment 45649 [details]
kernel log of a working combination
Created attachment 45650 [details]
xorg log of a working combination
lspci -v -s 00:12.0 00:12.0 VGA compatible controller: nVidia Corporation C68 [GeForce 7025 / nForce 630a] (rev a2) (prog-if 00 [VGA controller]) Subsystem: ABIT Computer Corp. Device 1c2f Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 20 Memory at fb000000 (32-bit, non-prefetchable) [size=16M] Memory at e0000000 (64-bit, prefetchable) [size=256M] Memory at fc000000 (64-bit, non-prefetchable) [size=16M] [virtual] Expansion ROM at c0000000 [disabled] [size=128K] Capabilities: [48] Power Management version 2 Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+ Kernel driver in use: nouveau Kernel modules: nouveau It is a "Abit AN-M2" Mainboard with "nForce 630a (MCP67 media communications processor)". Do you have those logs from the non-working config too? Created attachment 45669 [details]
kernel log of non-working configuration
this includes two display configurations:
1. one display on top, the other at the bottom:
xrandr --output VGA-1 --mode 1920x1080
xrandr --output DVI-D-1 --below VGA-1
Everything is fine.
2. one display left, the other display right:
xrandr --output VGA-1 --mode 1920x1080
xrandr --output DVI-D-1 --right-of VGA-1
the mouse coursor is fine, but everything else not! (-> i will provide a screenshot soon!)
Created attachment 45670 [details]
xorg log of non-working configuration
Created attachment 45671 [details]
xrandr-right-of results in this picture
To make it clear: "below" is working and "right-of" (or "left-of") is NOT working with the following "new" software installation. the last two log files were made with this software installation.
x11-base/xorg-server-1.10.0.902
x11-drivers/xf86-video-nouveau-0.0.16_pre20110323
media-libs/mesa-7.10.2
x11-libs/libdrm-2.4.24
Created attachment 45672 [details]
xrandr-below results in this picture (works)
Some observations about this bug which may or may not be helpful. I messed around with xrandr to see exactly what would and wouldn't trigger the problem. If I slightly overlay my second display onto the first one's viewport, then the problem vanishes. Turns out that if I have 16 or more pixels of horizontal overlap, the bug does not occur, but once the right-hand display comes within 16 pixels of a standard --right-of arrangement, the bug occurs. Finally, I found that the bug only occurs at 24bpp. Also, I found a pseudo-workaround. It's pretty horrible though. If I do: $ xrandr --output DVI-I-1 --scale 1x1.0001 $ xrandr --output DVI-I-2 --scale 1x1.0001 which is just enough to add one vertical pixel to the screen dimensions, then I get a result which very closely approximates a working setup. Obviously this is a terrible kludge and really no solution at all but it was good enough to get me up and running. HTH, -gmt A few more notes about this. First, I backported almost everything from git://anongit.freedesktop.org/nouveau/linux-2.6 into my 2.6.38.4 kernel, but the problem remained. (Only stuff I didn't backport was 3673dd547 and 27e8b237944, which, i guess, relied on f9820a46dd, which I was too lazy to look into). Secondly, I forgot to mention anything about my setup. I have an NV49 (iirc, 7950GT (?)) with 512MB. My xorg.conf is pretty trivial: Section "ServerLayout" Identifier "Default Layout" Screen 0 "Screen0" 0 0 EndSection Section "Monitor" Identifier "DVI-I-1" EndSection Section "Monitor" Identifier "DVI-I-2" Option "LeftOf" "DVI-I-1" Option "PreferredMode" "1920x1200" EndSection Section "Device" Identifier "Device0" Driver "nouveau" VendorName "NVIDIA Corporation" BoardName "GeForce 7950 GT" EndSection Section "Screen" Identifier "Screen0" DefaultDepth 24 Device "Device0" SubSection "Display" Depth 24 Virtual 3600 1200 EndSubSection EndSection -- $ dmesg |egrep -i 'drm|nouveau|ttm'|grep -v 'linked\sin' [drm] Initialized drm 1.1.0 20060810 nouveau 0000:01:00.0: PCI INT A -> Link[AXV5] -> GSI 16 (level, low) -> IRQ 16 nouveau 0000:01:00.0: setting latency timer to 64 [drm] nouveau 0000:01:00.0: Detected an NV40 generation card (0x049500a2) [drm] nouveau 0000:01:00.0: Attempting to load BIOS image from PRAMIN [drm] nouveau 0000:01:00.0: ... appears to be valid [drm] nouveau 0000:01:00.0: BIT BIOS found [drm] nouveau 0000:01:00.0: Bios version 05.71.22.42 [drm] nouveau 0000:01:00.0: TMDS table version 1.1 [drm] nouveau 0000:01:00.0: TMDS table script pointers not stubbed [drm] nouveau 0000:01:00.0: BIT table 'd' not found [drm] nouveau 0000:01:00.0: Found Display Configuration Block version 3.0 [drm] nouveau 0000:01:00.0: Raw DCB entry 0: 01000300 00000028 [drm] nouveau 0000:01:00.0: Raw DCB entry 1: 03000302 00000000 [drm] nouveau 0000:01:00.0: Raw DCB entry 2: 04011310 00000028 [drm] nouveau 0000:01:00.0: Raw DCB entry 3: 0c011312 00000000 [drm] nouveau 0000:01:00.0: Raw DCB entry 4: 020223f1 00c0c080 [drm] nouveau 0000:01:00.0: DCB connector table: VHER 0x30 5 10 2 [drm] nouveau 0000:01:00.0: 0: 0x00001030: type 0x30 idx 0 tag 0x07 [drm] nouveau 0000:01:00.0: 1: 0x00002130: type 0x30 idx 1 tag 0x08 [drm] nouveau 0000:01:00.0: 2: 0x00000210: type 0x10 idx 2 tag 0xff [drm] nouveau 0000:01:00.0: 3: 0x00000211: type 0x11 idx 3 tag 0xff [drm] nouveau 0000:01:00.0: 4: 0x00000213: type 0x13 idx 4 tag 0xff [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0xD1D8 [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0xDACB [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0xE4F9 [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0xE674 [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0xE7D0 [drm] nouveau 0000:01:00.0: timingset 255 does not exist [drm] nouveau 0000:01:00.0: timingset 255 does not exist [drm] nouveau 0000:01:00.0: 2 available performance level(s) [drm] nouveau 0000:01:00.0: 0: memory 700MHz core 550MHz voltage 1350mV fanspeed 20% [drm] nouveau 0000:01:00.0: 1: memory 730MHz core 570MHz voltage 1350mV fanspeed 30% [drm] nouveau 0000:01:00.0: c: memory 702MHz core 550MHz voltage 1350mV [TTM] Zone kernel: Available graphics memory: 4091730 kiB. [TTM] Zone dma32: Available graphics memory: 2097152 kiB. [TTM] Initializing pool allocator. [drm] nouveau 0000:01:00.0: Detected 512MiB VRAM [drm] nouveau 0000:01:00.0: 512 MiB GART (aperture) [drm] nouveau 0000:01:00.0: Saving VGA fonts [drm] Supports vblank timestamp caching Rev 1 (10.10.2010). [drm] No driver support for vblank timestamp query. [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on vga encoder (output 0) [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on tmds encoder (output 1) [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on vga encoder (output 2) [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on tmds encoder (output 3) [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on TV encoder (output 4) [drm] nouveau 0000:01:00.0: allocated 1920x1200 fb: 0x49000, bo ffff88024d43f800 [drm] nouveau 0000:01:00.0: 0xC5B5: Parsing digital output script table [drm] nouveau 0000:01:00.0: Setting dpms mode 0 on tmds encoder (output 1) [drm] nouveau 0000:01:00.0: Output DVI-I-1 is running on CRTC 0 using output A [drm] nouveau 0000:01:00.0: 0xC605: Parsing digital output script table [drm] nouveau 0000:01:00.0: Setting dpms mode 0 on tmds encoder (output 3) [drm] nouveau 0000:01:00.0: Output DVI-I-2 is running on CRTC 1 using output C fb0: nouveaufb frame buffer device drm: registered panic notifier [drm] Initialized nouveau 0.0.16 20090420 for 0000:01:00.0 on minor 0 -- some Xorg.0.log excerpts: X.Org X Server 1.10.99.1 (II) Loader magic: 0x7d5200 (II) Module ABI versions: X.Org ANSI C Emulation: 0.4 X.Org Video Driver: 10.0 X.Org XInput driver : 12.2 X.Org Server Extension : 5.0 (--) PCI:*(0:1:0:0) 10de:0295:1682:2219 rev 161, Mem @ 0xcc000000/16777216, 0xb0000000/268435456, 0xcd000000/16777216, I/O @ 0x0000dc00/128, BIOS @ 0x????????/131072 (II) Module nouveau: vendor="X.Org Foundation" compiled for 1.10.99.1, module version = 0.0.16 Module class: X.Org Video Driver ABI class: X.Org Video Driver, version 10.0 drmOpenByBusid: drmGetBusid reports pci:0000:01:00.0 (II) [drm] nouveau interface version: 0.0.16 (II) [drm] DRM interface version 1.4 (--) NOUVEAU(0): Chipset: "NVIDIA NV49" (**) NOUVEAU(0): Depth 24, (--) framebuffer bpp 32 (==) NOUVEAU(0): RGB weight 888 (==) NOUVEAU(0): Default visual is TrueColor (==) NOUVEAU(0): Using HW cursor (==) NOUVEAU(0): GLX sync to VBlank disabled. (==) NOUVEAU(0): Page flipping enabled (II) NOUVEAU(0): EDID for output DVI-I-1 (II) NOUVEAU(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4 (II) NOUVEAU(0): redX: 0.640 redY: 0.340 greenX: 0.295 greenY: 0.610 (II) NOUVEAU(0): blueX: 0.145 blueY: 0.070 whiteX: 0.312 whiteY: 0.329 (II) NOUVEAU(0): Supported detailed timing: (II) NOUVEAU(0): clock: 119.0 MHz Image Size: 433 x 270 mm (II) NOUVEAU(0): h_active: 1680 h_sync: 1728 h_sync_end 1760 h_blank_end 1840 h_border: 0 (II) NOUVEAU(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1080 v_border: 0 (II) NOUVEAU(0): Printing DDC gathered Modelines: (II) NOUVEAU(0): Modeline "1680x1050"x0.0 119.00 1680 1728 1760 1840 1050 1053 1059 1080 +hsync -vsync (64.7 kHz) (II) NOUVEAU(0): Printing probed modes for output DVI-I-1 (II) NOUVEAU(0): Modeline "1680x1050"x59.9 119.00 1680 1728 1760 1840 1050 1053 1059 1080 +hsync -vsync (64.7 kHz) (II) NOUVEAU(0): EDID for output DVI-I-2 (II) NOUVEAU(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4 (II) NOUVEAU(0): redX: 0.640 redY: 0.330 greenX: 0.300 greenY: 0.608 (II) NOUVEAU(0): blueX: 0.150 blueY: 0.060 whiteX: 0.313 whiteY: 0.329 (II) NOUVEAU(0): Supported detailed timing: (II) NOUVEAU(0): clock: 154.0 MHz Image Size: 518 x 324 mm (II) NOUVEAU(0): h_active: 1920 h_sync: 1968 h_sync_end 2000 h_blank_end 2080 h_border: 0 (II) NOUVEAU(0): v_active: 1200 v_sync: 1203 v_sync_end 1209 v_blanking: 1235 v_border: 0 (II) NOUVEAU(0): Printing probed modes for output DVI-I-2 (II) NOUVEAU(0): Modeline "1920x1200"x60.0 154.00 1920 1968 2000 2080 1200 1203 1209 1235 +hsync -vsync (74.0 kHz) (II) NOUVEAU(0): Output DVI-I-1 using initial mode 1680x1050 (II) NOUVEAU(0): Output DVI-I-2 using initial mode 1920x1200 (--) NOUVEAU(0): Virtual size is 3600x1200 (pitch 0) (**) NOUVEAU(0): Driver mode "1680x1050": 119.0 MHz (scaled from 0.0 MHz), 64.7 kHz, 59.9 Hz (II) NOUVEAU(0): Modeline "1680x1050"x59.9 119.00 1680 1728 1760 1840 1050 1053 1059 1080 +hsync -vsync (64.7 kHz) (**) NOUVEAU(0): Display dimensions: (430, 270) mm (**) NOUVEAU(0): DPI set to (212, 112) (--) Depth 24 pixmap format is 32 bpp (II) NOUVEAU(0): [DRI2] DRI driver: nouveau (II) NOUVEAU(0): GART: 512MiB available (II) NOUVEAU(0): GART: Allocated 16MiB as a scratch buffer (II) EXA(0): Driver allocated offscreen pixmaps (II) EXA(0): Driver registered support for the following operations: (II) Solid (II) Copy (II) Composite (RENDER acceleration) (II) UploadToScreen (II) DownloadFromScreen (==) NOUVEAU(0): Backing store disabled (II) NOUVEAU(0): [XvMC] Associated with NV40 texture adapter. (II) NOUVEAU(0): [XvMC] Extension initialized. (II) NOUVEAU(0): RandR 1.2 enabled, ignore the following RandR disabled message. (II) Initializing built-in extension Generic Event Extension (II) Initializing built-in extension SHAPE (II) Initializing built-in extension MIT-SHM (II) Initializing built-in extension XInputExtension (II) Initializing built-in extension XTEST (II) Initializing built-in extension BIG-REQUESTS (II) Initializing built-in extension SYNC (II) Initializing built-in extension XKEYBOARD (II) Initializing built-in extension XC-MISC (II) Initializing built-in extension XINERAMA (II) Initializing built-in extension XFIXES (II) Initializing built-in extension RENDER (II) Initializing built-in extension RANDR (II) Initializing built-in extension COMPOSITE (II) Initializing built-in extension DAMAGE (II) AIGLX: enabled GLX_MESA_copy_sub_buffer (II) AIGLX: enabled GLX_INTEL_swap_event (II) AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control (II) AIGLX: enabled GLX_SGI_make_current_read (II) AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects (II) AIGLX: Loaded and initialized nouveau (II) GLX: Initialized DRI2 GL provider for screen 0 (II) NOUVEAU(0): NVEnterVT is called. (II) NOUVEAU(0): Setting screen physical size to 952 x 317 resize called 3600 1200 -- One final note: (can you tell I'd really like to get this resolved?) after some experimenting, I've figured out the precise nature of the glitch. When this glitch occurs, what we are seeing is the top pixel on the screen, stretched out into screen-tall columns. In other words, the top row of pixels is displayed correctly, but all the other rows in the framebuffer are just duplicates of the top row of pixels. If anyone would like me to perform any additional experiments, I'd be glad to. -gmt Here as some things you can try - not too sure it they may work as I do not have a nv40 card xorg.cong options: * Try enabling/disabling the WrappedFB - it is known to cause issues in some rare cases * Disable PageFlip * Disable AIGLX Looking at the "16 pixels overlap" it does give me some ideas that tiling may be responsible, thus on top of master(xf86-video-nouveau) you can try reverting some commits Note that in some cases reverting can cause other visual "bonuses" * xv: use nouveau_bo_new_tile() - c2d341f7e0a0dc70a28c6091ef6919fc6c0d60561 * nv10-nv40/exa: Fix tiled pixmap pitch alignment calculation - 8c8f15c9d3a31c35bf2ef20faf8c4133295a678f * Restructure tiled pixmap allocation in a single place - 75daada678d03d2e162f8003a6f2edcbe0525f92 * Allocate a tiled scanout on pre-nv50 too - c88f13e25b0040c1dd0f93e0ac40f62a6005ce59 I hope it helps *** Bug 37056 has been marked as a duplicate of this bug. *** Created attachment 47074 [details] [review] nv17_crtc_large_pitch.patch Apparently you're hitting a corner case of the nv17-nv40 modesetting code (pitch == 4096px), because of the pitch alignment restrictions imposed by tiling. Can you try out the attached patch? (In reply to comment #17) > Created an attachment (id=47074) [details] > nv17_crtc_large_pitch.patch > > Apparently you're hitting a corner case of the nv17-nv40 modesetting code > (pitch == 4096px), because of the pitch alignment restrictions imposed by > tiling. > > Can you try out the attached patch? Works like a charm, problem solved afaics. Thanks! -gmt (In reply to comment #18) > (In reply to comment #17) > > Created an attachment (id=47074) [details] [details] > > nv17_crtc_large_pitch.patch > > > > Apparently you're hitting a corner case of the nv17-nv40 modesetting code > > (pitch == 4096px), because of the pitch alignment restrictions imposed by > > tiling. > > > > Can you try out the attached patch? > > Works like a charm, problem solved afaics. Thanks! > > -gmt Thanks, I just pushed it to the nouveau tree, closing... A patch referencing this bug report has been merged in Linux v3.0-rc3: commit c1003d9c90f410777ab57f675b2a575c9c7ab5d7 Author: Francisco Jerez <currojerez@riseup.net> Date: Tue May 24 15:57:14 2011 +0200 drm/nv17-nv40: Fix modesetting failure when pitch == 4096px (fdo bug 35901). |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.