From c3ec8ba5377994251e83893aa8820f771ff4aabf Mon Sep 17 00:00:00 2001 From: Charlene Liu Date: Wed, 8 May 2019 13:29:09 -0400 Subject: [PATCH] drm/amd/display: Return UPDATE_TYPE_FULL on writeback update Should do full update when display writeback is updated. Signed-off-by: Charlene Liu Reviewed-by: Duke Du Acked-by: Leo Li Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/display/dc/core/dc.c | 5 +++++ drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 4 +++- drivers/gpu/drm/amd/display/dc/inc/hw/dwb.h | 1 + 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 fd955151132f..8cecd58653cf 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c @@ -1516,6 +1516,11 @@ static enum surface_update_type check_update_surfaces_for_stream( if (stream_update->dpms_off) return UPDATE_TYPE_FULL; + +#if defined(CONFIG_DRM_AMD_DC_DCN2_0) + if (stream_update->wb_update) + return UPDATE_TYPE_FULL; +#endif } for (i = 0 ; i < surface_count; i++) { diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c index 3787398f6d80..30a25e694da0 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c @@ -373,6 +373,7 @@ bool dc_stream_add_writeback(struct dc *dc, { bool isDrc = false; int i = 0; + struct dwbc *dwb; if (stream == NULL) { dm_error("DC: dc_stream is NULL!\n"); @@ -391,7 +392,8 @@ bool dc_stream_add_writeback(struct dc *dc, wb_info->dwb_params.out_transfer_func = stream->out_transfer_func; - + dwb = dc->res_pool->dwbc[wb_info->dwb_pipe_inst]; + dwb->dwb_is_drc = false; /* recalculate and apply DML parameters */ diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/dwb.h b/drivers/gpu/drm/amd/display/dc/inc/hw/dwb.h index d4ae6eaaeb57..0ac21fa231c7 100644 --- a/drivers/gpu/drm/amd/display/dc/inc/hw/dwb.h +++ b/drivers/gpu/drm/amd/display/dc/inc/hw/dwb.h @@ -127,6 +127,7 @@ struct dwbc { enum dc_transfer_func_predefined tf; enum dc_color_space output_color_space; bool dwb_is_efc_transition; + bool dwb_is_drc; int wb_src_plane_inst;/*hubp, mpcc, inst*/ bool update_privacymask; uint32_t mask_id; -- 2.20.1