summaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorKrunoslav Kovac <Krunoslav.Kovac@amd.com>2018-07-05 19:23:17 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-08-27 11:10:59 -0500
commite71f8ca1a7db244642f9f882f1df003fa567ad43 (patch)
treec950622b4bc9e1f0b29b6f35e17217df621edbdb /drivers/gpu
parent0e4af5f3675bd766dbf11e5f17428ea69b630035 (diff)
downloadlinux-e71f8ca1a7db244642f9f882f1df003fa567ad43.tar.bz2
drm/amd/display: Handle HDR meta update as fast update
[Why] Vesa DPMS tool sends different HDR meta in OS flips without changing output parameters. We don't properly update HDR info frame: - we label HDR meta update as fast update - when updating HW info frame, we only do it if full update [How] It should still be fast update, so when doing HW infoframe update, do it always no matter the update type. Also, don't request passive flip for HDR meta update only without output transfer function or color space changed. Signed-off-by: Krunoslav Kovac <Krunoslav.Kovac@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>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/amd/display/dc/core/dc.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
index eda21868c892..9a947f8341bf 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -1357,6 +1357,13 @@ static void commit_planes_do_stream_update(struct dc *dc,
pipe_ctx->stream_res.tg, &pipe_ctx->stream->timing,
pipe_ctx->stream->periodic_fn_vsync_delta);
+ if (stream_update->hdr_static_metadata ||
+ stream_update->vrr_infopacket ||
+ stream_update->vsc_infopacket) {
+ resource_build_info_frame(pipe_ctx);
+ dc->hwss.update_info_frame(pipe_ctx);
+ }
+
/* Full fe update*/
if (update_type == UPDATE_TYPE_FAST)
continue;
@@ -1383,13 +1390,6 @@ static void commit_planes_do_stream_update(struct dc *dc,
pipe_ctx->stream_res.abm->funcs->set_abm_level(
pipe_ctx->stream_res.abm, stream->abm_level);
}
-
- if (stream_update->hdr_static_metadata ||
- stream_update->vrr_infopacket ||
- stream_update->vsc_infopacket) {
- resource_build_info_frame(pipe_ctx);
- dc->hwss.update_info_frame(pipe_ctx);
- }
}
}
}