mirror of https://gitee.com/openkylin/linux.git
drm/amd/display: adding ycbcr420 pixel encoding for hdmi
[why] HDMI EDID's VSDB contains spectial timings for specifically YCbCr 4:2:0 colour space. In those cases we need to verify if the mode provided is one of the special ones has to use YCbCr 4:2:0 pixel encoding for display info. [how] Verify if the mode is using specific ycbcr420 colour space with the help of DRM helper function and assign the mode to use ycbcr420 pixel encoding. Signed-off-by: Mikita Lipski <mikita.lipski@amd.com> Tested-by: Mike Lothian <mike@fireburn.co.uk> Reviewed-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
87e3f1366e
commit
fe61a2f1a5
|
@ -2184,6 +2184,7 @@ fill_stream_properties_from_drm_display_mode(struct dc_stream_state *stream,
|
|||
const struct drm_connector *connector)
|
||||
{
|
||||
struct dc_crtc_timing *timing_out = &stream->timing;
|
||||
const struct drm_display_info *info = &connector->display_info;
|
||||
|
||||
memset(timing_out, 0, sizeof(struct dc_crtc_timing));
|
||||
|
||||
|
@ -2192,8 +2193,10 @@ fill_stream_properties_from_drm_display_mode(struct dc_stream_state *stream,
|
|||
timing_out->v_border_top = 0;
|
||||
timing_out->v_border_bottom = 0;
|
||||
/* TODO: un-hardcode */
|
||||
|
||||
if ((connector->display_info.color_formats & DRM_COLOR_FORMAT_YCRCB444)
|
||||
if (drm_mode_is_420_only(info, mode_in)
|
||||
&& stream->sink->sink_signal == SIGNAL_TYPE_HDMI_TYPE_A)
|
||||
timing_out->pixel_encoding = PIXEL_ENCODING_YCBCR420;
|
||||
else if ((connector->display_info.color_formats & DRM_COLOR_FORMAT_YCRCB444)
|
||||
&& stream->sink->sink_signal == SIGNAL_TYPE_HDMI_TYPE_A)
|
||||
timing_out->pixel_encoding = PIXEL_ENCODING_YCBCR444;
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue