drm/amd/display: DCN2X Prefer ODM over bottom pipe to find second pipe
[WHY] When finding a second pipe for pipe split, currently will look for bottom pipe in context first to decide the second pipe. This causes issues in 2 plane to 1 plane transitions like fullscreen video where bottom pipe no longer exists in the new configuration. [HOW] If previous context had an ODM pipe, use that to find the secondary pipe first before looking at bottom pipe. Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com> Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> Signed-off-by: sunglee <sunglee@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
0070a5b700
commit
324b1fcba6
|
@ -2531,16 +2531,16 @@ struct pipe_ctx *dcn20_find_secondary_pipe(struct dc *dc,
|
|||
* pick that pipe as secondary
|
||||
* Same logic applies for ODM pipes
|
||||
*/
|
||||
if (dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].bottom_pipe) {
|
||||
preferred_pipe_idx = dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].bottom_pipe->pipe_idx;
|
||||
if (dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].next_odm_pipe) {
|
||||
preferred_pipe_idx = dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].next_odm_pipe->pipe_idx;
|
||||
if (res_ctx->pipe_ctx[preferred_pipe_idx].stream == NULL) {
|
||||
secondary_pipe = &res_ctx->pipe_ctx[preferred_pipe_idx];
|
||||
secondary_pipe->pipe_idx = preferred_pipe_idx;
|
||||
}
|
||||
}
|
||||
if (secondary_pipe == NULL &&
|
||||
dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].next_odm_pipe) {
|
||||
preferred_pipe_idx = dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].next_odm_pipe->pipe_idx;
|
||||
dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].bottom_pipe) {
|
||||
preferred_pipe_idx = dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].bottom_pipe->pipe_idx;
|
||||
if (res_ctx->pipe_ctx[preferred_pipe_idx].stream == NULL) {
|
||||
secondary_pipe = &res_ctx->pipe_ctx[preferred_pipe_idx];
|
||||
secondary_pipe->pipe_idx = preferred_pipe_idx;
|
||||
|
|
Loading…
Reference in New Issue