Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amd/display: Update SubVP Visual Confirm

[Why]
The visual confirm bar is displayed on all displays, but is only
updated on a flip. If an update causes SubVP to be disabled on
all displays, but there are no updates on the other displays, it
will lead to stale information displayed on the non-active
displays. An example of this is playing a fullscreen video on a
rotated display.

[How]
Add a procedure to update visual confirm color for all pipes when
committing a plane.

Reviewed-by: Alvin Lee <Alvin.Lee2@amd.com>
Acked-by: Tom Chung <chiahsuan.chung@amd.com>
Signed-off-by: David Galiffi <David.Galiffi@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

David Galiffi and committed by
Alex Deucher
d417ef7b 5aa66375

+18 -1
+18 -1
drivers/gpu/drm/amd/display/dc/core/dc.c
··· 3481 3481 return; 3482 3482 } 3483 3483 3484 + if (update_type != UPDATE_TYPE_FAST) { 3485 + for (j = 0; j < dc->res_pool->pipe_count; j++) { 3486 + struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[j]; 3487 + 3488 + if (dc->debug.visual_confirm == VISUAL_CONFIRM_SUBVP && 3489 + pipe_ctx->stream && pipe_ctx->plane_state) { 3490 + /* Only update visual confirm for SUBVP here. 3491 + * The bar appears on all pipes, so we need to update the bar on all displays, 3492 + * so the information doesn't get stale. 3493 + */ 3494 + struct mpcc_blnd_cfg blnd_cfg = { 0 }; 3495 + 3496 + dc->hwss.update_visual_confirm_color(dc, pipe_ctx, &blnd_cfg.black_color, 3497 + pipe_ctx->plane_res.hubp->inst); 3498 + } 3499 + } 3500 + } 3501 + 3484 3502 if (!IS_DIAG_DC(dc->ctx->dce_environment)) { 3485 3503 for (i = 0; i < surface_count; i++) { 3486 3504 struct dc_plane_state *plane_state = srf_updates[i].surface; ··· 3616 3598 dc->hwss.update_plane_addr(dc, pipe_ctx); 3617 3599 } 3618 3600 } 3619 - 3620 3601 } 3621 3602 3622 3603 if (should_lock_all_pipes && dc->hwss.interdependent_update_lock) {