Summary: | Video Noise on HDMI output | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | xorg | Reporter: | James <buzzbuzz22> | ||||||||||
Component: | Driver/nouveau | Assignee: | Nouveau Project <nouveau> | ||||||||||
Status: | RESOLVED INVALID | QA Contact: | Xorg Project Team <xorg-team> | ||||||||||
Severity: | normal | ||||||||||||
Priority: | medium | CC: | anssi, buzzbuzz22 | ||||||||||
Version: | unspecified | ||||||||||||
Hardware: | x86-64 (AMD64) | ||||||||||||
OS: | Linux (All) | ||||||||||||
Whiteboard: | |||||||||||||
i915 platform: | i915 features: | ||||||||||||
Attachments: |
|
Description
James
2010-11-28 02:56:38 UTC
(In reply to comment #0) > When the nouveau driver is used, bright whites have noise in them. > The picture is steady for all other colours. > Replacing the driver with the nvidia closed source one, the HDMI works fine. So > all cables must be OK, it must be a driver bug. > I suspect a HDCP problem. How do I tell if HDCP has negotiated correctly or not > with the nouveau driver? > If I use the nouveau driver, but instead with the DVI connector, and connect it > to an analogue VGA adapter to the same TV display unit, the output is fine with > no noise. Can you reboot with "drm.debug=4" in your kernel command line and attach the full output from "dmesg"? Created attachment 40644 [details]
drm.debug=4 output as requested
Created attachment 40645 [details]
Xorg.0.log that goes with the drm.debug=4 output.
Note that the modes detected by Nouveau are not the same as those detected by Xorg.0.log Xorg detects 24.665] (II) NOUVEAU(0): Modeline "1920x1080"x0.0 74.25 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync (28.1 kHz) I.e. A non-interlaced one that the kernel log does not find. nouveau detects only the interlaced version. Are the display modelines in use by the proprietary driver and nouveau the same? If nouveau uses a modeline with a higher pixel clock, a bad cable could explain the issue. At least I've seen that only about half of my HDMI cables can carry 1080p without blinking dots (though I guess it may be partly be caused by oversensitive equipment). As for HDCP, it is not used on Linux. The manual for the TV lists the following: Via VGA input: Res Ver(Hz) Hor (KHz) 640x480 60 31.5 640x480 72 37.9 640x480 75 37.5 800x600 56 35.2 800x600 60 37.9 800x600 70 43.8 800x600 72 48.1 800x600 75 46.9 832x624 75 49.7 1024x768 60 48.4 1024x768 70 56.5 1024x768 72 57.7 1024x768 75 60.0 1152x864 70 64.2 1152x864 75 67.5 1152x870 75 68.9 1280x768 60 47.7 1360x768 60 47.7 1280x960 60 60.0 1280x1024 60 64.0 1280x1024 75 80.0 1600x1200 60 75.5 Via HDMI input: Res Vert (Hz) 480I 60 480P 60 576I 50 576P 50 720P 50 720P 60 1080I 50 1080I 60 1080P 24 1080P 25 1080P 30 1080P 50 1080P 60 Here are some of the mode lines that the NVIDIA driver can be switched to. The NVIDIA drive output does not have any "noise". Output via xvidtune -show "1280x1024" 135.00 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync "1920x1080" 148.50 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync "1920x1080" 74.16 1920 2558 2602 2750 1080 1084 1089 1125 +hsync +vsync "1920x1080" 74.25 1920 2008 2052 2200 1080 1084 1094 1124 +hsync +vsync interlace "1280x1024" 108.00 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync "1280x1024" 135.00 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync "1920x1080" 74.25 1920 2008 2052 2200 1080 1084 1094 1124 +hsync +vsync interlace I forced nouveau to use exactly the same modeline as the NVIDIA driver was using. "1920x1080" 148.50 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync With exactly the same modeline according to xvidtune -show, the nouveau driver displays noise, the NVIDIA driver is fine. Therefore, this is not a cable problem. Too add some context. The noise is only seen on particular colours. If you use "openoffice Drawing", and then try to select a colour. The only colours that show up as noise are: "Grey 70%" "Grey 60%" "Sun 2" All other colours appear correctly on the screen without any noise. Noise only seems to appear when particularly coloured pixels are displayed. It is like it is using a colour key to decide when to output noise on the screen. Could dithering be active? I do not know if it is even physically possible with this output, but you can check it with 'xrandr --prop'. Created attachment 40958 [details]
xrandr --prop
xrandr --prop
output as requested.
xrandr --prop does not give any output with the nvidia driver. Is there a small command line test I can do in order to compare the nvidia driver setting the mode and the nouveau driver setting the mode? The noise first appears as soon as the nouveau driver does a mode change from the BIOS boot up mode into the other mode during boot up which makes the boot message text look smaller. So, the problem is visible even before X starts. (In reply to comment #11) > Created an attachment (id=40958) [details] > xrandr --prop > > xrandr --prop > output as requested. Ok, dithering is off, so that's not the cause. Created attachment 40961 [details]
Camera picture of the screen showing noise to the left of the window.
It seems that the "noise" is not actually output by the graphics card. It is created by the TV. Changing the contrast and brightness using TV menus changes the pattern of the noise. My guess is this is caused by HDCP. I.e. The nouveau driver somehow fails to set the HDCP as "not being needed", so the TV adds a "degraded picture". Maybe the nvidia drivers somehow manage to set the HDCP as "not being needed", or the nvidia drivers correctly do HDCP. Unfortunately, my TV does not tell me if HDCP has been negotiated or not, so I cannot tell if the nvidia driver is doing HDCP or not. Does anyone have any ideas? That noise looks exactly like what I have when I use a bad DVI/HDMI cable with a too high display mode for it. However, if changing TV settings changes the pattern, and there is no pattern with the proprietary driver with exactly the same mode, it seems like something else might be going on... There is no HDCP used neither in NVIDIA proprietary linux driver nor in nouveau. Even if there was, any "degraded picture" thingie would not be added by the TV, but the video source, and it would simply mean a lower resolution, not artifacts. Sorry, I don't have any ideas. I have done some more investigation. Although xvidtune -show shows the same from both the nouveau driver and the nvidia driver, what is actually set on the video card is different. Under nvidia, my TV thinks it is set to 1080i Under nouveau, my TV thinks it is set to 1280x1024, H:80kHz, V:75Hz. I will look into it further, but summary, xvidtune -show gives false output. I have found out what the problem is. The Nvidia ION graphics card has two video modes: 1) Between the CPU and the Graphics card. 2) Between the Graphics card and the TV. It seems that the nouveau driver is correctly setting (1), but wrongly setting (2). I have many config options in xorg.conf etc. that let me set (1). Are there any config options that allow me to force (2) to a particular mode? The nvidia driver tool "nvidia-settings" calls the option "Force Full GPU scaling". With "Force Full GPU scaling" enabled, whatever X sets for video mode only changes (1). It will never change (2). The nouveau driver is setting some values for (2) that are outside of what my TV can handle, and thus I see the "noise". The following command seems to help with the noise problem. xrandr --output HDMI-1 --set 'scaling mode' None This forces the GPU to use the same mode for (1) and (2) and thus manage to override the nouveau default (noisy) mode for (2) So, I have a work around for now. I will further investigate the EDID problems which should then fix the noise during boot problems. I.e. Nouveau setting the wrong default mode during boot up. Other variations of that actually crash X, so I will be raising a bug for xrandr --output default --set 'scaling mode' None If I only had the HDMI-1 connected, I would have thought that "default" would have modified HDMI-1. Other variations (Capital S for Scaling) produce other problems. xrandr --output HDMI-1 --set "Scaling mode" None X Error of failed request: BadName (named color or font does not exist) Major opcode of failed request: 150 (RANDR) Minor opcode of failed request: 11 (RRQueryOutputProperty) Serial number of failed request: 27 Current serial number in output stream: 27 It appears that this bug report has laid dormant for quite a while. Sorry we haven't gotten to it. Since we fix bugs all the time, chances are pretty good that your issue has been fixed with the latest software. Please give it a shot. (Linux kernel 3.10.7, xf86-video-nouveau 1.0.9, mesa 9.1.6, or their git versions.) If upgrading to the latest isn't an option for you, your distro's bugzilla is probably the right destination for your bug report. In an effort to clean up our bug list, we're pre-emptively closing all bugs that haven't seen updates since 2011. If the original issue remains, please make sure to provide fresh info, see http://nouveau.freedesktop.org/wiki/Bugs/ for what we need to see, and re-open this one. Thanks, The Nouveau Team |
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.