mirror of https://gitee.com/openkylin/linux.git
drm/amd/display: get tail pipe before aquire free pipe
[Why] For some complicated blending transition cases, the head pipe of the second stream may end up being a higher pipe index than the free pipe. In those cases dc_add_plane_to_context will incorrectly set the tail_pipe to the free pipe, which will cause the top_pipe and bottom_pipe to be the same [How] Move the call to resource_get_tail_pipe_for_stream() to be before call to acquire_free_pipe_for_stream(). Signed-off-by: Eric Bernstein <eric.bernstein@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:
parent
818832bf2b
commit
00737c59a2
|
@ -1182,6 +1182,9 @@ bool dc_add_plane_to_context(
|
|||
return false;
|
||||
}
|
||||
|
||||
tail_pipe = resource_get_tail_pipe_for_stream(&context->res_ctx, stream);
|
||||
ASSERT(tail_pipe);
|
||||
|
||||
free_pipe = acquire_free_pipe_for_stream(context, pool, stream);
|
||||
|
||||
#if defined(CONFIG_DRM_AMD_DC_DCN1_0)
|
||||
|
@ -1199,10 +1202,6 @@ bool dc_add_plane_to_context(
|
|||
free_pipe->plane_state = plane_state;
|
||||
|
||||
if (head_pipe != free_pipe) {
|
||||
|
||||
tail_pipe = resource_get_tail_pipe_for_stream(&context->res_ctx, stream);
|
||||
ASSERT(tail_pipe);
|
||||
|
||||
free_pipe->stream_res.tg = tail_pipe->stream_res.tg;
|
||||
free_pipe->stream_res.abm = tail_pipe->stream_res.abm;
|
||||
free_pipe->stream_res.opp = tail_pipe->stream_res.opp;
|
||||
|
|
Loading…
Reference in New Issue