drm/amd/display: Acquire DSC during split stream for ODM only if top_pipe
authorSung Lee <sung.lee@amd.com>
Wed, 9 Dec 2020 19:58:59 +0000 (14:58 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 23 Dec 2020 20:02:24 +0000 (15:02 -0500)
[WHY]
DSC should only be acquired per OPP. Therefore, DSC should only
be acquired for the top_pipe when ODM is enabled.
Not doing this check may lead to acquiring more DSC's than needed
when doing MPO + ODM Combine.

[HOW]
Only acquire DSC if pipe is top_pipe.

Signed-off-by: Sung Lee <sung.lee@amd.com>
Acked-by: Bindu Ramamurthy <bindu.r@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c

index ff36db5..e04ecf0 100644 (file)
@@ -1933,7 +1933,7 @@ bool dcn20_split_stream_for_odm(
                next_odm_pipe->stream_res.opp = pool->opps[next_odm_pipe->pipe_idx];
        else
                next_odm_pipe->stream_res.opp = next_odm_pipe->top_pipe->stream_res.opp;
-       if (next_odm_pipe->stream->timing.flags.DSC == 1) {
+       if (next_odm_pipe->stream->timing.flags.DSC == 1 && !next_odm_pipe->top_pipe) {
                dcn20_acquire_dsc(dc, res_ctx, &next_odm_pipe->stream_res.dsc, next_odm_pipe->pipe_idx);
                ASSERT(next_odm_pipe->stream_res.dsc);
                if (next_odm_pipe->stream_res.dsc == NULL)