Bug 31957 - Video Noise on HDMI output
Summary: Video Noise on HDMI output
Status: RESOLVED INVALID
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/nouveau (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Nouveau Project
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-11-28 02:56 UTC by James
Modified: 2013-08-18 18:09 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments
drm.debug=4 output as requested (95.08 KB, text/plain)
2010-11-29 11:28 UTC, James
no flags Details
Xorg.0.log that goes with the drm.debug=4 output. (43.75 KB, text/plain)
2010-11-29 11:29 UTC, James
no flags Details
xrandr --prop (1.25 KB, text/plain)
2010-12-09 11:34 UTC, James
no flags Details
Camera picture of the screen showing noise to the left of the window. (717.71 KB, image/jpeg)
2010-12-09 13:04 UTC, James
no flags Details

Description James 2010-11-28 02:56:38 UTC
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.
Comment 1 Francisco Jerez 2010-11-29 04:44:30 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"?
Comment 2 James 2010-11-29 11:28:42 UTC
Created attachment 40644 [details]
drm.debug=4 output as requested
Comment 3 James 2010-11-29 11:29:34 UTC
Created attachment 40645 [details]
Xorg.0.log that goes with the drm.debug=4 output.
Comment 4 James 2010-11-29 11:31:20 UTC
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.
Comment 5 Anssi Hannula 2010-12-02 06:58:25 UTC
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.
Comment 6 James 2010-12-03 02:15:42 UTC
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
Comment 7 James 2010-12-03 13:38:33 UTC
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
Comment 8 James 2010-12-03 14:31:58 UTC
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.
Comment 9 James 2010-12-04 05:03:47 UTC
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.
Comment 10 Pekka Paalanen 2010-12-05 03:28:14 UTC
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'.
Comment 11 James 2010-12-09 11:34:00 UTC
Created attachment 40958 [details]
xrandr --prop

xrandr --prop
output as requested.
Comment 12 James 2010-12-09 11:35:54 UTC
xrandr --prop
does not give any output with the nvidia driver.
Comment 13 James 2010-12-09 11:42:20 UTC
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.
Comment 14 Pekka Paalanen 2010-12-09 12:21:00 UTC
(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.
Comment 15 James 2010-12-09 13:04:26 UTC
Created attachment 40961 [details]
Camera picture of the screen showing noise to the left of the window.
Comment 16 James 2010-12-10 04:04:20 UTC
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?
Comment 17 Anssi Hannula 2010-12-10 04:53:40 UTC
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.
Comment 18 James 2010-12-12 09:56:04 UTC
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.
Comment 19 James 2010-12-12 12:00:21 UTC
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".
Comment 20 James 2010-12-14 04:03:16 UTC
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
Comment 21 Ilia Mirkin 2013-08-18 18:09:59 UTC
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.