[Bug 99250] New: [SKL,IVB] HDMI and DP: EDID-supplied BPP is not always properly clamped.
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Mon Jan 2 21:09:57 UTC 2017
https://bugs.freedesktop.org/show_bug.cgi?id=99250
Bug ID: 99250
Summary: [SKL,IVB] HDMI and DP: EDID-supplied BPP is not always
properly clamped.
Product: DRI
Version: DRI git
Hardware: All
OS: Linux (All)
Status: NEW
Severity: normal
Priority: medium
Component: DRM/Intel
Assignee: intel-gfx-bugs at lists.freedesktop.org
Reporter: sielicki at yandex.com
QA Contact: intel-gfx-bugs at lists.freedesktop.org
CC: intel-gfx-bugs at lists.freedesktop.org
Created attachment 128711
--> https://bugs.freedesktop.org/attachment.cgi?id=128711&action=edit
Patch
-- Display connector: (such as HDMI, DP, eDP, ...)
HDMI
Seen with:
* Dell E6430 (Ivybridge i5-3340M)
* Skylake NUC6I7KYK
* Acer X233H 24-bit monitor with ability for 30-bit FRC.
# Steps to reproduce the issue.
With male-to-male HDMI cable, plug monitor into either of
these devices. Output will appear, but it is corrupt.
# How often does the steps listed above trigger the issue?
Always, with or without X, seen on framebuffer.
Does not occur when using HDMI to DVI adapter.
# What's going on?
With Ivybridge, HDMI can only ever operate in 8BPC or 12BPC.
* ( page 78:
https://01.org/sites/default/files/documentation/snb_ihd_os_vol3_part3.pdf )
With HDMI 1.3, I believe it's legal for the monitor EDID to claim a maximum BPP
of 30.
See the following chunk of code:
> drivers/gpu/drm/i915/intel_hdmi.c:1308
>
> bool intel_hdmi_compute_config(struct intel_encoder *encoder,
> struct intel_crtc_state *pipe_config,
> struct drm_connector_state *conn_state)
> {
> ... SNIP ...
>
> /*
> * HDMI is either 12 or 8, so if the display lets 10bpc sneak
> * through, clamp it down. Note that g4x/vlv don't support 12bpc hdmi
> * outputs. We also need to check that the higher clock still fits
> * within limits.
> */
> if (pipe_config->pipe_bpp > 8*3 && pipe_config->has_hdmi_sink &&
> hdmi_port_clock_valid(intel_hdmi, clock_12bpc, true) == MODE_OK &&
> hdmi_12bpc_possible(pipe_config)) {
> DRM_DEBUG_KMS("picking bpc to 12 for HDMI output\n");
> desired_bpp = 12*3;
>
> /* Need to adjust the port link by 1.5x for 12bpc. */
> pipe_config->port_clock = clock_12bpc;
> } else {
> DRM_DEBUG_KMS("picking bpc to 8 for HDMI output\n");
> desired_bpp = 8*3;
>
> pipe_config->port_clock = clock_8bpc;
> }
> }
That check for (pipe_bpp > 24) is not right. It needs to check that BPP is
sufficient for 12bpc (eg: >= 36) rather than check that bpp is more than
sufficient for 8bpc.
Attached patch 0001-Fix-BPP-clamping-on-HDMI.patch does that, and it fixes the
problem with this monitor on the Ivybridge laptop. Corrupt output is no longer
seen.
It does not fix the problem with the NUC6I7KYK, though. I will open another bug
for that and link to it in here.
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-gfx-bugs/attachments/20170102/dbe3634a/attachment.html>
More information about the intel-gfx-bugs
mailing list