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

Commit 5ce4d5e6 authored by Nirmal Abraham's avatar Nirmal Abraham
Browse files

msm: mdss: avoid kickoff wait during validation phase



During ATOMIC_COMMIT validation phase, waiting for kickoff
introduces delay where the commit N+1 from userspace waits
on driver's commit N thereby causing fps drop.
Remove this wait during validate phase.

Change-Id: I20ec0f522ba2531df6abdbb04e95cdea19bc2687
Signed-off-by: default avatarNirmal Abraham <nabrah@codeaurora.org>
parent 7c75be09
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3011,6 +3011,7 @@ int mdp3_ctrl_init(struct msm_fb_data_type *mfd)
		goto init_done;
	}

	mfd->skip_koff_wait = true;
	mdp3_session->dma->output_config.out_sel = intf_type;
	mdp3_session->mfd = mfd;
	mdp3_session->panel = dev_get_platdata(&mfd->pdev->dev);
+29 −26
Original line number Diff line number Diff line
@@ -3380,20 +3380,24 @@ int mdss_fb_atomic_commit(struct fb_info *info,

	commit_v1 = &commit->commit_v1;
	if (commit_v1->flags & MDP_VALIDATE_LAYER) {
		if (!mfd->skip_koff_wait) {
			ret = mdss_fb_wait_for_kickoff(mfd);
			if (ret) {
				pr_err("wait for kickoff failed\n");
		} else {
				goto end;
			}
		}
		__ioctl_transition_dyn_mode_state(mfd,
			MSMFB_ATOMIC_COMMIT, true, false);
		if (mfd->panel.type == WRITEBACK_PANEL) {
				output_layer = commit_v1->output_layer;
			output_layer = (struct mdp_output_layer *)
					commit_v1->output_layer;
			if (!output_layer) {
				pr_err("Output layer is null\n");
				goto end;
			}
			wb_change = !mdss_fb_is_wb_config_same(mfd,
						commit_v1->output_layer);
					output_layer);
			if (wb_change) {
				old_xres = pinfo->xres;
				old_yres = pinfo->yres;
@@ -3407,7 +3411,6 @@ int mdss_fb_atomic_commit(struct fb_info *info,
		ret = mfd->mdp.atomic_validate(mfd, file, commit_v1);
		if (!ret)
			mfd->atomic_commit_pending = true;
		}
		goto end;
	} else {
		ret = mdss_fb_pan_idle(mfd);
+2 −1
Original line number Diff line number Diff line
/* Copyright (c) 2008-2017, The Linux Foundation. All rights reserved.
/* Copyright (c) 2008-2018, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -357,6 +357,7 @@ struct msm_fb_data_type {
	bool mdss_fb_split_stored;

	u32 wait_for_kickoff;
	u32 skip_koff_wait;
	u32 thermal_level;

	int fb_mmap_type;