Impact:
On some setups, while the monitor and the GPU support display modes with pixel clocks of up to 600MHz, the connector might not. This prevents RGB encoding for 4k60Hz, but YCbCr420 encoding might still be possible. However, which color mode is used is decided before the pixel clock capabilities are checked, causing the check to fail and discarding 4k60Hz from the list of possible display modes.
Fix:
This patch fixes the problem by retrying to find a display mode with YCbCr420 enforced and using it, if it is valid. It's very similar to a patch submitted to amdgpu which fixed the same problem.
Testcase:
Find a PC with a current Intel iGPU, but only a hdmi 1.4 output. Connect a 4k@60Hz display supporting YCbCr420 encoding to the hdmi port. Without the patch the maximum that can be set via xrandr is 3840 × 2160 30Hz. With the Patch 3840 × 2160 60Hz can be selected which will use YCbCr420 automatically.
SRU Justification:
Impact:
On some setups, while the monitor and the GPU support display modes with pixel clocks of up to 600MHz, the connector might not. This prevents RGB encoding for 4k60Hz, but YCbCr420 encoding might still be possible. However, which color mode is used is decided before the pixel clock capabilities are checked, causing the check to fail and discarding 4k60Hz from the list of possible display modes.
Fix:
This patch fixes the problem by retrying to find a display mode with YCbCr420 enforced and using it, if it is valid. It's very similar to a patch submitted to amdgpu which fixed the same problem.
Testcase:
Find a PC with a current Intel iGPU, but only a hdmi 1.4 output. Connect a 4k@60Hz display supporting YCbCr420 encoding to the hdmi port. Without the patch the maximum that can be set via xrandr is 3840 × 2160 30Hz. With the Patch 3840 × 2160 60Hz can be selected which will use YCbCr420 automatically.
Patchset already got accepted upstream for linux-next: /git.kernel. org/pub/ scm/linux/ kernel/ git/torvalds/ linux.git/ commit/ ?id=eacba74d4d5 61ea6487d944417 526e1b025cbebd /git.kernel. org/pub/ scm/linux/ kernel/ git/torvalds/ linux.git/ commit/ ?id=84d95f77f4a ea3f22a486cd047 77afd4ab0f0ea5 /git.kernel. org/pub/ scm/linux/ kernel/ git/torvalds/ linux.git/ commit/ ?id=388b863509f 76f6a5ecedd7ffd af184aa813241e focal/hwe- 5.8
https:/
https:/
https:/
and needs only a minor modifications to apply to ubuntu-
Commit-hashes: 6487d944417526e 1b025cbebd 22a486cd04777af d4ab0f0ea5 a5ecedd7ffdaf18 4aa813241e
eacba74d4d561ea
84d95f77f4aea3f
388b863509f76f6