diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0171-drm-amd-display-Change-update-surface-condition-fix-.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0171-drm-amd-display-Change-update-surface-condition-fix-.patch | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0171-drm-amd-display-Change-update-surface-condition-fix-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0171-drm-amd-display-Change-update-surface-condition-fix-.patch new file mode 100644 index 00000000..a80851c4 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0171-drm-amd-display-Change-update-surface-condition-fix-.patch @@ -0,0 +1,54 @@ +From b98b873ae798563d9f7049e8a7cab8f14a561561 Mon Sep 17 00:00:00 2001 +From: Yongqiang Sun <yongqiang.sun@amd.com> +Date: Thu, 19 Jan 2017 10:53:58 -0500 +Subject: [PATCH 0171/4131] drm/amd/display: Change update surface condition, + fix surface transition corruption. + +Signed-off-by: Yongqiang Sun <yongqiang.sun@amd.com> +Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> +Acked-by: Harry Wentland <Harry.Wentland@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc.c | 11 +++-------- + 1 file changed, 3 insertions(+), 8 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c +index 270f8c5..de6ef87 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc.c +@@ -1497,7 +1497,6 @@ void dc_update_surfaces_for_stream(struct dc *dc, struct dc_surface_update *upda + + for (i = 0; i < surface_count; i++) { + struct core_surface *surface = DC_SURFACE_TO_CORE(updates[i].surface); +- bool apply_ctx = false; + + for (j = 0; j < context->res_ctx.pool->pipe_count; j++) { + struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[j]; +@@ -1505,13 +1504,9 @@ void dc_update_surfaces_for_stream(struct dc *dc, struct dc_surface_update *upda + if (pipe_ctx->surface != surface) + continue; + +- if (updates[i].flip_addr) { ++ if (updates[i].flip_addr && can_skip_context_building) { + core_dc->hwss.update_plane_addr(core_dc, pipe_ctx); +- } +- +- if (updates[i].plane_info || updates[i].scaling_info +- || is_new_pipe_surface[j]) { +- apply_ctx = true; ++ } else { + + if (!pipe_ctx->tg->funcs->is_blanked(pipe_ctx->tg)) { + core_dc->hwss.pipe_control_lock( +@@ -1546,7 +1541,7 @@ void dc_update_surfaces_for_stream(struct dc *dc, struct dc_surface_update *upda + } + + } +- if (apply_ctx) { ++ if (!can_skip_context_building) { + core_dc->hwss.apply_ctx_for_surface(core_dc, surface, context); + context_timing_trace(dc, &context->res_ctx); + } +-- +2.7.4 + |