mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-29 14:05:05 -04:00
drm/amd/display: Reprogram FMT on pipe change
[Why] When planes are added or removed from a stream, the change in pipe usage from dynamic MPC combine can cause a second stream using ODM combine to pick a different pipe to combine with. In this scenario, a different OPP is connected to the ODM without programming its FMT. [How] Reprogram the FMT in dcn20_program_pipe whenever a pipe is newly enabled, or when its opp changes. Signed-off-by: Julian Parkin <julian.parkin@amd.com> Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com> Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
1caba4e83b
commit
377c9d0473
@@ -1399,6 +1399,26 @@ static void dcn20_program_pipe(
|
||||
*/
|
||||
if (pipe_ctx->update_flags.bits.enable || pipe_ctx->stream->update_flags.bits.out_tf)
|
||||
dc->hwss.set_output_transfer_func(pipe_ctx, pipe_ctx->stream);
|
||||
|
||||
/* If the pipe has been enabled or has a different opp, we
|
||||
* should reprogram the fmt. This deals with cases where
|
||||
* interation between mpc and odm combine on different streams
|
||||
* causes a different pipe to be chosen to odm combine with.
|
||||
*/
|
||||
if (pipe_ctx->update_flags.bits.enable
|
||||
|| pipe_ctx->update_flags.bits.opp_changed) {
|
||||
|
||||
pipe_ctx->stream_res.opp->funcs->opp_set_dyn_expansion(
|
||||
pipe_ctx->stream_res.opp,
|
||||
COLOR_SPACE_YCBCR601,
|
||||
pipe_ctx->stream->timing.display_color_depth,
|
||||
pipe_ctx->stream->signal);
|
||||
|
||||
pipe_ctx->stream_res.opp->funcs->opp_program_fmt(
|
||||
pipe_ctx->stream_res.opp,
|
||||
&pipe_ctx->stream->bit_depth_params,
|
||||
&pipe_ctx->stream->clamping);
|
||||
}
|
||||
}
|
||||
|
||||
static bool does_pipe_need_lock(struct pipe_ctx *pipe)
|
||||
|
||||
Reference in New Issue
Block a user