4k@60Hz works in Windows, not in Linux *** Workaround found ***

Sorry you guys haven’t received any assistance, yet.

4k@60Hz over HDMI works for me with an LG 40UB8000 + 370.23 + GeForce GTX 960.

I looked into this, and I think I found the problem. There is definitely an NVIDIA driver bug here, but I think there are several possible work arounds.

I’ll attach the EDID from my LG 40UB8000 TV

(Note: the forum software wouldn’t let me upload “edid.bin” because the file extension wasn’t whitelisted; I’ve named it “edid.txt”. The CustomEDID option won’t care what the file extension is.)

As an experiment, can you download that EDID and use the “CustomEDID” X configuration option to force the use of that EDID?

E.g.,

option "CustomEDID" "DFP-1:/path/to/edid.bin"

You may need to use a different value for “DFP-1”, check your current X log for a line like:

[ 8.999] (–) NVIDIA(0): VIZ D40u-D1 (DFP-1): connected

I’d be curious if 4k@60Hz works for you with that EDID.

Second, I extracted the EDID for the Vizio D40u-D1 and loaded that with 370.23 in my test config. An interesting thing about the D40u-D1’s EDID is that there are two 3840x2160@60 modes and two 4096x2160@60 modes:

[   662.538] (--) NVIDIA(0): --- EDID for VIZ D40u-D1 (HDMI-0) ---
[...]
[   662.540] (--) NVIDIA(0):   3840 x 2160 @ 60 Hz
[   662.540] (--) NVIDIA(0):     Pixel Clock      : 593.41 MHz
[   662.540] (--) NVIDIA(0):     HRes, HSyncStart : 3840, 4016
[   662.540] (--) NVIDIA(0):     HSyncEnd, HTotal : 4104, 4400
[   662.540] (--) NVIDIA(0):     VRes, VSyncStart : 2160, 2168
[   662.540] (--) NVIDIA(0):     VSyncEnd, VTotal : 2178, 2250
[   662.540] (--) NVIDIA(0):     H/V Polarity     : +/+
[   662.540] (--) NVIDIA(0):     CEA Format       : 97
[   662.540] (--) NVIDIA(0):     Aspect Ratio     : 16:9
[   662.540] (--) NVIDIA(0):     RGB 444 bpcs     : 8, 10, 12
[   662.540] (--) NVIDIA(0):     YUV 444 bpcs     : 8, 10, 12
[   662.540] (--) NVIDIA(0):     YUV 422 bpcs     : 8, 10, 12
[   662.540] (--) NVIDIA(0):   4096 x 2160 @ 60 Hz
[   662.540] (--) NVIDIA(0):     Pixel Clock      : 593.41 MHz
[   662.540] (--) NVIDIA(0):     HRes, HSyncStart : 4096, 4184
[   662.540] (--) NVIDIA(0):     HSyncEnd, HTotal : 4272, 4400
[   662.540] (--) NVIDIA(0):     VRes, VSyncStart : 2160, 2168
[   662.540] (--) NVIDIA(0):     VSyncEnd, VTotal : 2178, 2250
[   662.540] (--) NVIDIA(0):     H/V Polarity     : +/+
[   662.540] (--) NVIDIA(0):     CEA Format       : 102
[   662.540] (--) NVIDIA(0):     Image Size       : 256 mm x 135 mm
[   662.540] (--) NVIDIA(0):     RGB 444 bpcs     : 8, 10, 12
[   662.540] (--) NVIDIA(0):     YUV 444 bpcs     : 8, 10, 12
[   662.540] (--) NVIDIA(0):     YUV 422 bpcs     : 8, 10, 12
[   662.540] (--) NVIDIA(0):   3840 x 2160 @ 60 Hz
[   662.540] (--) NVIDIA(0):     Pixel Clock      : 593.41 MHz
[   662.540] (--) NVIDIA(0):     HRes, HSyncStart : 3840, 4016
[   662.540] (--) NVIDIA(0):     HSyncEnd, HTotal : 4104, 4400
[   662.540] (--) NVIDIA(0):     VRes, VSyncStart : 2160, 2168
[   662.540] (--) NVIDIA(0):     VSyncEnd, VTotal : 2178, 2250
[   662.540] (--) NVIDIA(0):     H/V Polarity     : +/+
[   662.540] (--) NVIDIA(0):     CEA Format       : 97
[   662.540] (--) NVIDIA(0):     Aspect Ratio     : 16:9
[   662.540] (--) NVIDIA(0):     YUV 420 bpcs     : 8
[   662.540] (--) NVIDIA(0):   4096 x 2160 @ 60 Hz
[   662.540] (--) NVIDIA(0):     Pixel Clock      : 593.41 MHz
[   662.540] (--) NVIDIA(0):     HRes, HSyncStart : 4096, 4184
[   662.541] (--) NVIDIA(0):     HSyncEnd, HTotal : 4272, 4400
[   662.541] (--) NVIDIA(0):     VRes, VSyncStart : 2160, 2168
[   662.541] (--) NVIDIA(0):     VSyncEnd, VTotal : 2178, 2250
[   662.541] (--) NVIDIA(0):     H/V Polarity     : +/+
[   662.541] (--) NVIDIA(0):     CEA Format       : 102
[   662.541] (--) NVIDIA(0):     Image Size       : 256 mm x 135 mm
[   662.541] (--) NVIDIA(0):     YUV 420 bpcs     : 8

Note that in 370.23 we added logging of the EDID-reported per-mode supported colorspace (RGB vs YUV) and decimation (444 vs 422 vs 420) (and bits per component, bpcs, but that is less relevant to this bug).

All of the modes in the EDID get considered by mode validation, and then end up in the modepool:

[   662.584] (II) NVIDIA(GPU-0): --- Modes in ModePool for VIZ D40u-D1 (DFP-1) ---
[...]
[   662.584] (II) NVIDIA(GPU-0): "4096x2160_60"       : CEA-861B:#102:4096x2160x59.940Hz/P (from: EDID)
[   662.584] (II) NVIDIA(GPU-0): "4096x2160_60_0"     : CEA-861B:#102:4096x2160x59.940Hz/P (from: EDID)
[...]
[   662.584] (II) NVIDIA(GPU-0): "3840x2160_60"       : CEA-861B:#97:3840x2160x59.940Hz/P (from: EDID)
[   662.584] (II) NVIDIA(GPU-0): "3840x2160_60_0"     : CEA-861B:#97:3840x2160x59.940Hz/P (from: EDID)
[...]
[   662.584] (II) NVIDIA(GPU-0): --- End of ModePool for VIZ D40u-D1 (DFP-1): ---

The extra “_0” is just to distinguish the modes, so that each has a unique name.

“4096x2160_60” is the 4096x2160_60 YUV420 mode, and “4096x2160_60_0” is the 4096x2160_60 RGB444/YUV422/YUV422 mode (or vice versa… it is a hole in our logging that you cannot tell which is which from the above).

You can switch between modes using the nvidia-settings commandline, e.g.,

nvidia-settings -a currentmetamode=4096x2160_60

Using the Vizio EDID (i.e., without the “CustomEDID” option), I’d be curious in your results testing each of:

nvidia-settings -a currentmetamode=4096x2160_60
nvidia-settings -a currentmetamode=4096x2160_60_0
nvidia-settings -a currentmetamode=3840x2160_60
nvidia-settings -a currentmetamode=3840x2160_60_0

Having two modes that are identical, except for the supported colorspace and decimation, trips up the driver during modeset-time validation. In my testing, it looks like the YUV420 modes fail due to this confusion. I’d be curious if the RGB444/YUV422/YUV422 modes work for you with the Vizio EDID, or if the YUV420 modes work for you when you use the LG EDID.

The LG EDID I provided at the start of this message avoids the problem because it /only/ has YUV420 modes, so the driver doesn’t get confused by identical-except-for-colorspace modes.

We’ll work on fixing the driver for a subsequent release, but I hope the LG EDID can serve as a workaround for you in the mean time.

Let me know what you find.

edid.txt (256 Bytes)