diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1005-drm-amd-display-add-plane-size-change-check-conditio.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/1005-drm-amd-display-add-plane-size-change-check-conditio.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1005-drm-amd-display-add-plane-size-change-check-conditio.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1005-drm-amd-display-add-plane-size-change-check-conditio.patch new file mode 100644 index 00000000..864e330c --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1005-drm-amd-display-add-plane-size-change-check-conditio.patch @@ -0,0 +1,69 @@ +From 025fa01700e3230968bfb1e3df5d2f26f8d74b38 Mon Sep 17 00:00:00 2001 +From: Lewis Huang <Lewis.Huang@amd.com> +Date: Fri, 16 Nov 2018 19:12:46 +0800 +Subject: [PATCH 1005/2940] drm/amd/display: add plane size change check + condition + +[Why] +Driver didn't check plane size and surface size is mismatch. +It will cause pitch data incorrect. + +[How] +Add condition to check is plane change and update surface + +Signed-off-by: Lewis Huang <Lewis.Huang@amd.com> +Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> +Acked-by: Leo Li <sunpeng.li@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc.c | 6 ++++++ + drivers/gpu/drm/amd/display/dc/dc.h | 1 + + drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 3 ++- + 3 files changed, 9 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c +index 741e076dfed8..5a029a2b9416 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc.c +@@ -1220,6 +1220,12 @@ static enum surface_update_type get_plane_info_update_type(const struct dc_surfa + */ + update_flags->bits.bpp_change = 1; + ++ if (u->plane_info->plane_size.grph.surface_pitch != u->surface->plane_size.grph.surface_pitch ++ || u->plane_info->plane_size.video.luma_pitch != u->surface->plane_size.video.luma_pitch ++ || u->plane_info->plane_size.video.chroma_pitch != u->surface->plane_size.video.chroma_pitch) ++ update_flags->bits.plane_size_change = 1; ++ ++ + if (memcmp(&u->plane_info->tiling_info, &u->surface->tiling_info, + sizeof(union dc_tiling_info)) != 0) { + update_flags->bits.swizzle_change = 1; +diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h +index e13b96de70a6..d0d67d4429f7 100644 +--- a/drivers/gpu/drm/amd/display/dc/dc.h ++++ b/drivers/gpu/drm/amd/display/dc/dc.h +@@ -445,6 +445,7 @@ union surface_update_flags { + uint32_t coeff_reduction_change:1; + uint32_t output_tf_change:1; + uint32_t pixel_format_change:1; ++ uint32_t plane_size_change:1; + + /* Full updates */ + uint32_t new_plane:1; +diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +index f1ee64327818..46a92788e17e 100644 +--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c ++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +@@ -2124,7 +2124,8 @@ void update_dchubp_dpp( + plane_state->update_flags.bits.swizzle_change || + plane_state->update_flags.bits.dcc_change || + plane_state->update_flags.bits.bpp_change || +- plane_state->update_flags.bits.scaling_change) { ++ plane_state->update_flags.bits.scaling_change || ++ plane_state->update_flags.bits.plane_size_change) { + hubp->funcs->hubp_program_surface_config( + hubp, + plane_state->format, +-- +2.17.1 + |