mirror of
https://github.com/torvalds/linux.git
synced 2024-09-20 06:53:04 +00:00
drm/amd/display: Add DML2.1 option to disable DRR clamped P-State Strategies
[WHY & HOW] When DRR is active with variable refresh rate, add the ability to block DRR clamped P-State strategies (such as SubVP). Reviewed-by: Alvin Lee <alvin.lee2@amd.com> Signed-off-by: Dillon Varone <dillon.varone@amd.com> Signed-off-by: Wayne Lin <wayne.lin@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
e80f8f491d
commit
a0fcd3df45
|
@ -511,6 +511,7 @@ enum in_game_fams_config {
|
|||
INGAME_FAMS_SINGLE_DISP_ENABLE, // enable in-game fams
|
||||
INGAME_FAMS_DISABLE, // disable in-game fams
|
||||
INGAME_FAMS_MULTI_DISP_ENABLE, //enable in-game fams for multi-display
|
||||
INGAME_FAMS_MULTI_DISP_CLAMPED_ONLY, //enable in-game fams for multi-display only for clamped RR strategies
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -66,7 +66,9 @@ static void dml21_apply_debug_options(const struct dc *in_dc, struct dml2_contex
|
|||
disable_fams2;
|
||||
pmo_options->disable_fams2 = disable_fams2;
|
||||
|
||||
pmo_options->disable_drr_var_when_var_active = in_dc->debug.disable_fams_gaming;
|
||||
pmo_options->disable_drr_var_when_var_active = in_dc->debug.disable_fams_gaming == INGAME_FAMS_DISABLE ||
|
||||
in_dc->debug.disable_fams_gaming == INGAME_FAMS_MULTI_DISP_CLAMPED_ONLY;
|
||||
pmo_options->disable_drr_clamped_when_var_active = in_dc->debug.disable_fams_gaming == INGAME_FAMS_DISABLE;
|
||||
}
|
||||
|
||||
static void dml21_init(const struct dc *in_dc, struct dml2_context **dml_ctx, const struct dml2_configuration_options *config)
|
||||
|
|
|
@ -74,6 +74,7 @@ struct dml2_pmo_options {
|
|||
bool disable_drr_var;
|
||||
bool disable_drr_clamped;
|
||||
bool disable_drr_var_when_var_active;
|
||||
bool disable_drr_clamped_when_var_active;
|
||||
bool disable_fams2;
|
||||
bool disable_vactive_det_fill_bw_pad; /* dml2_project_dcn4x_stage2_auto_drr_svp and above only */
|
||||
bool disable_dyn_odm;
|
||||
|
|
|
@ -1441,8 +1441,11 @@ static bool stream_matches_drr_policy(struct dml2_pmo_instance *pmo,
|
|||
strategy_matches_drr_requirements = false;
|
||||
} else if (is_bit_set_in_bitfield(PMO_DRR_CLAMPED_STRATEGY_MASK, stream_pstate_method) &&
|
||||
(pmo->options->disable_drr_clamped ||
|
||||
!stream_descriptor->timing.drr_config.enabled ||
|
||||
(!stream_descriptor->timing.drr_config.drr_active_fixed && !stream_descriptor->timing.drr_config.drr_active_variable))) {
|
||||
(!stream_descriptor->timing.drr_config.enabled ||
|
||||
(!stream_descriptor->timing.drr_config.drr_active_fixed && !stream_descriptor->timing.drr_config.drr_active_variable)) ||
|
||||
(pmo->options->disable_drr_clamped_when_var_active &&
|
||||
stream_descriptor->timing.drr_config.enabled &&
|
||||
stream_descriptor->timing.drr_config.drr_active_variable))) {
|
||||
/* DRR fixed strategies are disallowed due to settings or policy */
|
||||
strategy_matches_drr_requirements = false;
|
||||
} else if (is_bit_set_in_bitfield(PMO_FW_STRATEGY_MASK, stream_pstate_method) &&
|
||||
|
|
Loading…
Reference in New Issue
Block a user