Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3eb48b40 authored by Adrian Salido's avatar Adrian Salido Committed by Nirmal Abraham
Browse files

msm: mdss: avoid scheduling pp work during continuous updates



Ping pong work is only relevant when last frame update happens to go
into idle screen cases. If a commit is in progress there is no need to
schedule this work.

bug 30115868

Signed-off-by: default avatarAdrian Salido <salidoa@google.com>
(cherry picked from commit e49a573e0ece576ece60c087595ea12ae4191ae8)
Git-commit: e49a573e0ece576ece60c087595ea12ae4191ae8
Git-repo: https://android.googlesource.com/kernel/msm.git


Change-Id: I61956a4038f80f55d9507be87d7f7ee278ccf45e
Signed-off-by: default avatarNirmal Abraham <nabrah@codeaurora.org>
parent dc5efb5f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -643,6 +643,7 @@ struct mdss_mdp_ctl {

	/* vsync handler for FRC */
	struct mdss_mdp_vsync_handler frc_vsync_handler;
	bool commit_in_progress;
};

struct mdss_mdp_mixer {
+11 −4
Original line number Diff line number Diff line
@@ -5517,7 +5517,9 @@ int mdss_mdp_display_commit(struct mdss_mdp_ctl *ctl, void *arg,
		} else {
			sctl_flush_bits = sctl->flush_bits;
		}
		sctl->commit_in_progress = true;
	}
	ctl->commit_in_progress = true;
	ctl_flush_bits = ctl->flush_bits;

	ATRACE_END("postproc_programming");
@@ -5657,11 +5659,16 @@ int mdss_mdp_display_commit(struct mdss_mdp_ctl *ctl, void *arg,

	ATRACE_BEGIN("flush_kickoff");
	mdss_mdp_ctl_write(ctl, MDSS_MDP_REG_CTL_FLUSH, ctl_flush_bits);
	if (sctl && sctl_flush_bits) {
	if (sctl) {
		if (sctl_flush_bits) {
			mdss_mdp_ctl_write(sctl, MDSS_MDP_REG_CTL_FLUSH,
				sctl_flush_bits);
			sctl->flush_bits = 0;
		}
		sctl->commit_in_progress = false;
	}
	ctl->commit_in_progress = false;

	MDSS_XLOG(ctl->intf_num, ctl_flush_bits, sctl_flush_bits,
		split_lm_valid);
	wmb();
+2 −1
Original line number Diff line number Diff line
@@ -1206,6 +1206,7 @@ static void mdss_mdp_cmd_pingpong_done(void *arg)
			       atomic_read(&ctx->koff_cnt));
		if (sync_ppdone) {
			atomic_inc(&ctx->pp_done_cnt);
			if (!ctl->commit_in_progress)
				schedule_work(&ctx->pp_done_work);

			mdss_mdp_resource_control(ctl,