mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 16:12:59 +02:00
drm/amd/display: Program triplebuffer on all pipes
[WHY] Triplebuffer should be programmed on all pipes. Some code assumed it only needed to be called on top pipe, but as the HWSS function does not account for that, it must be called on every pipe. [HOW] Remove condition to not program triplebuffer on non-top/next pipe. Call the function unconditionally on all pipes. Reviewed-by: Dillon Varone <dillon.varone@amd.com> Reviewed-by: Aric Cyr <aric.cyr@amd.com> Signed-off-by: Sung Lee <Sung.Lee@amd.com> Signed-off-by: Ray Wu <ray.wu@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
e91c91e506
commit
90af999835
|
|
@ -4246,12 +4246,6 @@ static void commit_planes_for_stream(struct dc *dc,
|
|||
if (update_type == UPDATE_TYPE_FAST)
|
||||
continue;
|
||||
|
||||
ASSERT(!pipe_ctx->plane_state->triplebuffer_flips);
|
||||
if (dc->hwss.program_triplebuffer != NULL && dc->debug.enable_tri_buf) {
|
||||
/*turn off triple buffer for full update*/
|
||||
dc->hwss.program_triplebuffer(
|
||||
dc, pipe_ctx, pipe_ctx->plane_state->triplebuffer_flips);
|
||||
}
|
||||
stream_status =
|
||||
stream_get_status(context, pipe_ctx->stream);
|
||||
|
||||
|
|
@ -4260,6 +4254,25 @@ static void commit_planes_for_stream(struct dc *dc,
|
|||
dc, pipe_ctx->stream, stream_status->plane_count, context);
|
||||
}
|
||||
}
|
||||
|
||||
for (j = 0; j < dc->res_pool->pipe_count; j++) {
|
||||
struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[j];
|
||||
|
||||
if (!pipe_ctx->plane_state)
|
||||
continue;
|
||||
|
||||
/* Full fe update*/
|
||||
if (update_type == UPDATE_TYPE_FAST)
|
||||
continue;
|
||||
|
||||
ASSERT(!pipe_ctx->plane_state->triplebuffer_flips);
|
||||
if (dc->hwss.program_triplebuffer != NULL && dc->debug.enable_tri_buf) {
|
||||
/*turn off triple buffer for full update*/
|
||||
dc->hwss.program_triplebuffer(
|
||||
dc, pipe_ctx, pipe_ctx->plane_state->triplebuffer_flips);
|
||||
}
|
||||
}
|
||||
|
||||
if (dc->hwss.program_front_end_for_ctx && update_type != UPDATE_TYPE_FAST) {
|
||||
dc->hwss.program_front_end_for_ctx(dc, context);
|
||||
|
||||
|
|
|
|||
|
|
@ -2053,7 +2053,7 @@ void dcn20_program_front_end_for_ctx(
|
|||
for (i = 0; i < dc->res_pool->pipe_count; i++) {
|
||||
pipe = &context->res_ctx.pipe_ctx[i];
|
||||
|
||||
if (!pipe->top_pipe && !pipe->prev_odm_pipe && pipe->plane_state) {
|
||||
if (pipe->plane_state) {
|
||||
ASSERT(!pipe->plane_state->triplebuffer_flips);
|
||||
/*turn off triple buffer for full update*/
|
||||
dc->hwss.program_triplebuffer(
|
||||
|
|
|
|||
|
|
@ -2361,7 +2361,7 @@ void dcn401_program_front_end_for_ctx(
|
|||
for (i = 0; i < dc->res_pool->pipe_count; i++) {
|
||||
pipe = &context->res_ctx.pipe_ctx[i];
|
||||
|
||||
if (!pipe->top_pipe && !pipe->prev_odm_pipe && pipe->plane_state) {
|
||||
if (pipe->plane_state) {
|
||||
if (pipe->plane_state->triplebuffer_flips)
|
||||
BREAK_TO_DEBUGGER();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user