Commit e27ffc2f authored by Wenjing Liu's avatar Wenjing Liu Committed by Alex Deucher

drm/amd/display: make ODM segment width of YCbCr422 two pixel aligned

[why]
In YCbCr422 format hardware shares 1 set of chromas CbCr with 2 sets of
lumas Y. Therefore each ODM segment needs to be two pixel aligned. The
commit adds this missing hardwware requirement into ODM segment width
decision logic.
Reviewed-by: default avatarDillon Varone <dillon.varone@amd.com>
Acked-by: default avatarZaeem Mohamed <zaeem.mohamed@amd.com>
Signed-off-by: default avatarWenjing Liu <wenjing.liu@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 4316107b
...@@ -2089,13 +2089,20 @@ int resource_get_odm_slice_dst_width(struct pipe_ctx *otg_master, ...@@ -2089,13 +2089,20 @@ int resource_get_odm_slice_dst_width(struct pipe_ctx *otg_master,
timing = &otg_master->stream->timing; timing = &otg_master->stream->timing;
count = resource_get_odm_slice_count(otg_master); count = resource_get_odm_slice_count(otg_master);
h_active = timing->h_addressable + h_active = timing->h_addressable +
timing->h_border_left + timing->h_border_left +
timing->h_border_right; timing->h_border_right;
width = h_active / count; width = h_active / count;
if (otg_master->stream_res.tg && otg_master->stream) if (otg_master->stream_res.tg && otg_master->stream)
two_pixel_alignment_required = otg_master->stream_res.tg->funcs->is_two_pixels_per_container(timing); two_pixel_alignment_required =
otg_master->stream_res.tg->funcs->is_two_pixels_per_container(timing) ||
/*
* 422 is sub-sampled horizontally. 1 set of chromas
* (Cb/Cr) is shared for 2 lumas (i.e 2 Y values).
* Therefore even if 422 is still 1 pixel per container,
* ODM segment width still needs to be 2 pixel aligned.
*/
timing->pixel_encoding == PIXEL_ENCODING_YCBCR422;
if ((width % 2) && two_pixel_alignment_required) if ((width % 2) && two_pixel_alignment_required)
width++; width++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment