diff options
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/core/dc.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/inc/hw/dwb.h | 1 |
3 files changed, 9 insertions, 1 deletions
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; |