Merge "msm: mdss: Choose the correct PPB for right only update in non-DSC mode"

This commit is contained in:
Linux Build Service Account 2017-01-28 00:46:31 -08:00 committed by Gerrit - the friendly Code Review server
commit f443e6b380

View file

@ -1,4 +1,4 @@
/* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved.
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License version 2 and
@ -51,8 +51,10 @@ struct mdss_mdp_cmd_ctx {
u32 current_pp_num; u32 current_pp_num;
/* /*
* aux_pp_num will be set only when topology is using split-lm. * aux_pp_num will be set only when topology is using split-lm.
* aux_pp_num will be used only when MDSS_QUIRK_DSC_RIGHT_ONLY_PU * aux_pp_num will be used
* quirk is set and on following partial updates. * if right-only update on DUAL_LM_SINGLE_DISPLAY with 3D Mux
* or if MDSS_QUIRK_DSC_RIGHT_ONLY_PU quirk is set
* and on following partial updates.
* *
* right-only update on DUAL_LM_SINGLE_DISPLAY with DSC_MERGE * right-only update on DUAL_LM_SINGLE_DISPLAY with DSC_MERGE
* right-only update on DUAL_LM_DUAL_DISPLAY with DSC * right-only update on DUAL_LM_DUAL_DISPLAY with DSC
@ -119,14 +121,32 @@ static int mdss_mdp_setup_vsync(struct mdss_mdp_cmd_ctx *ctx, bool enable);
static bool __mdss_mdp_cmd_is_aux_pp_needed(struct mdss_data_type *mdata, static bool __mdss_mdp_cmd_is_aux_pp_needed(struct mdss_data_type *mdata,
struct mdss_mdp_ctl *mctl) struct mdss_mdp_ctl *mctl)
{ {
return (mdata && mctl && mctl->is_master && bool mux3d, merge, quirk, rightonly;
mdss_has_quirk(mdata, MDSS_QUIRK_DSC_RIGHT_ONLY_PU) &&
is_dsc_compression(&mctl->panel_data->panel_info) && if (!mdata || !mctl || !mctl->is_master)
((mctl->mfd->split_mode == MDP_DUAL_LM_DUAL_DISPLAY) || return false;
((mctl->mfd->split_mode == MDP_DUAL_LM_SINGLE_DISPLAY) &&
(mctl->panel_data->panel_info.dsc_enc_total == 1))) && /*
!mctl->mixer_left->valid_roi && * aux_pp_num will be used:
mctl->mixer_right->valid_roi); * if right-only update on DUAL_LM_SINGLE_DISPLAY with 3D Mux
* or if MDSS_QUIRK_DSC_RIGHT_ONLY_PU quirk is set
* and on following partial updates.
*
* right-only update on DUAL_LM_SINGLE_DISPLAY with DSC_MERGE
* right-only update on DUAL_LM_DUAL_DISPLAY with DSC
*/
mux3d = ((mctl->mfd->split_mode == MDP_DUAL_LM_SINGLE_DISPLAY) &&
(mctl->opmode & MDSS_MDP_CTL_OP_PACK_3D_ENABLE));
merge = ((mctl->mfd->split_mode == MDP_DUAL_LM_SINGLE_DISPLAY) &&
(mctl->panel_data->panel_info.dsc_enc_total == 1));
quirk = (mdss_has_quirk(mdata, MDSS_QUIRK_DSC_RIGHT_ONLY_PU) &&
is_dsc_compression(&mctl->panel_data->panel_info) &&
((mctl->mfd->split_mode == MDP_DUAL_LM_DUAL_DISPLAY) ||
merge));
rightonly = !mctl->mixer_left->valid_roi &&
mctl->mixer_right->valid_roi;
return ((mux3d || quirk) && rightonly);
} }
static bool __mdss_mdp_cmd_is_panel_power_off(struct mdss_mdp_cmd_ctx *ctx) static bool __mdss_mdp_cmd_is_panel_power_off(struct mdss_mdp_cmd_ctx *ctx)