[PATCH v2 00/14] YCBCR 4:2:0 handling in DRM layer
Shashank Sharma
shashank.sharma at intel.com
Thu Jul 13 15:33:06 UTC 2017
Following YCBCR 4:4:4 and 4:2:2, YCBCR 4:2:0 is a new output format,
which is currently supported on HDMI 2.0 sources/sinks. Due to lower
chroma sub-sampling rate, YCBCR 4:2:0 can drive the video modes at half
the pixel clock than YCBCR 4:4:4 or RGB 8:8:8 outputs. For example, a CEA
4K at 60, RGB 8:8:8 mode needs a clock of appx 594Mhz, but it can be driven at
297Mhz using YCBCR 4:2:0 output.
Of course, the lower rate of chroma subsampling, causes the quality of YCBCR
4:2:0 to be lower than YCBCR 4:4:4 or RGB 8:8:8.
This patch series adds support for YCBCR 4:2:0 output in DRM layer.
- First 2 patches, complete the CEA mode-db in drm driver, by adding
new 4k modes. Current CEA mode-db contains 64 modes only (VIC 1-64),
whereas CEA-861-F defined VICs up to 107, including 4k modes, from VIC
range 93-107. First patch makes sure that inclusion of these modes doesn't
break existing HDMI 1.4 monitors, across various drivers.
- Next 5 patches focus on parsing new YCBCR 4:2:0 EDID blocks, and adding
YCBCR 4:2:0 modes in connector. They also contain a prune function, which
will cleanup the YCBCR 4:2:0 modes from list, if the connector doesn't
declare them supported.
- Next 2 patches add helper functions for identifing YCBCR 4:2:0 modes and
setup the color space in AVI infoframes.
- Next 6 patches add code for I915 layer handling of YCBCR 4:2:0 output.
This patch series was initially published as a complete framework to handle
all YCBCR outputs (4:4:4, 4:2:2, 4:2:0), but based on the code reviews, now
its been published as YCBCR 4:2:0 handling series only.
The previous discussion and reviews can be found here:
V5: https://patchwork.freedesktop.org/series/26815/
V1-V4: https://patchwork.freedesktop.org/series/22683/
Now re-publishing this patch series as YCBCR 4:2:0 handling series here.
V2: Addressed review comments from Ville
This series dropped one patch in V2(patch 8 from V1), so 14 patches in V2
This series has been tested with drm-tip code with following setup:
Source: Intel Geminilake device.
Sink: ACER S277HK HDMI 2.0 monitor.
Protocol testing: Astro VA-1844A HDMI analyzer.
Shashank Sharma (14):
drm: handle HDMI 2.0 VICs in AVI info-frames
drm/edid: complete CEA modedb(VIC 1-107)
drm/edid: parse sink information before CEA blocks
drm/edid: cleanup patch for CEA extended-tag macro
drm: add helper to validate YCBCR420 modes
drm/edid: parse YCBCR420 videomodes from EDID
drm/edid: parse ycbcr 420 deep color information
drm: add helper functions for YCBCR420 handling
drm/i915: add config function for YCBCR420 outputs
drm/i915: prepare scaler for YCBCR420 modeset
drm/i915: prepare pipe for YCBCR420 output
drm/i915: prepare csc unit for YCBCR420 output
drm/i915: set colorspace for YCBCR420 outputs
drm/i915/glk: set HDMI 2.0 identifier
drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 2 +-
drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 2 +-
drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 2 +-
drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 2 +-
drivers/gpu/drm/bridge/analogix-anx78xx.c | 3 +-
drivers/gpu/drm/bridge/sii902x.c | 2 +-
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 +-
drivers/gpu/drm/drm_edid.c | 438 +++++++++++++++++++++++++++++-
drivers/gpu/drm/drm_modes.c | 87 ++++++
drivers/gpu/drm/drm_probe_helper.c | 4 +
drivers/gpu/drm/exynos/exynos_hdmi.c | 2 +-
drivers/gpu/drm/i2c/tda998x_drv.c | 2 +-
drivers/gpu/drm/i915/i915_reg.h | 3 +
drivers/gpu/drm/i915/intel_color.c | 46 +++-
drivers/gpu/drm/i915/intel_display.c | 26 ++
drivers/gpu/drm/i915/intel_drv.h | 7 +-
drivers/gpu/drm/i915/intel_hdmi.c | 69 ++++-
drivers/gpu/drm/i915/intel_panel.c | 3 +-
drivers/gpu/drm/i915/intel_sdvo.c | 3 +-
drivers/gpu/drm/mediatek/mtk_hdmi.c | 2 +-
drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 2 +-
drivers/gpu/drm/nouveau/nv50_display.c | 3 +-
drivers/gpu/drm/omapdrm/omap_encoder.c | 3 +-
drivers/gpu/drm/radeon/radeon_audio.c | 2 +-
drivers/gpu/drm/rockchip/inno_hdmi.c | 2 +-
drivers/gpu/drm/sti/sti_hdmi.c | 2 +-
drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 2 +-
drivers/gpu/drm/tegra/hdmi.c | 2 +-
drivers/gpu/drm/tegra/sor.c | 2 +-
drivers/gpu/drm/vc4/vc4_hdmi.c | 2 +-
drivers/gpu/drm/zte/zx_hdmi.c | 2 +-
include/drm/drm_connector.h | 32 +++
include/drm/drm_edid.h | 11 +-
include/drm/drm_modes.h | 11 +
34 files changed, 746 insertions(+), 39 deletions(-)
--
2.7.4
More information about the dri-devel
mailing list