Commit b74571a8 authored by Charlene Liu's avatar Charlene Liu Committed by Alex Deucher

drm/amd/display: Use full update for swizzle mode change

[WHY & HOW]
1) We did linear/non linear transition properly long ago
2) We used that path to handle SystemDisplayEnable
3) We fixed a SystemDisplayEnable inability to fallback to passive by
   impacting the transition flow generically
4) AFMF later relied on the generic transition behavior

Separating the two flows to make (3) non-generic is the best immediate
coarse of action.

DC can discern SSAMPO3 very easily from SDE.

Cc: Mario Limonciello <mario.limonciello@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Reviewed-by: default avatarChris Park <chris.park@amd.com>
Signed-off-by: default avatarCharlene Liu <Charlene.Liu@amd.com>
Signed-off-by: default avatarAlex Hung <alex.hung@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 4bdc5b50
...@@ -2376,7 +2376,7 @@ static bool is_surface_in_context( ...@@ -2376,7 +2376,7 @@ static bool is_surface_in_context(
return false; return false;
} }
static enum surface_update_type get_plane_info_update_type(const struct dc_surface_update *u) static enum surface_update_type get_plane_info_update_type(const struct dc *dc, const struct dc_surface_update *u)
{ {
union surface_update_flags *update_flags = &u->surface->update_flags; union surface_update_flags *update_flags = &u->surface->update_flags;
enum surface_update_type update_type = UPDATE_TYPE_FAST; enum surface_update_type update_type = UPDATE_TYPE_FAST;
...@@ -2455,7 +2455,7 @@ static enum surface_update_type get_plane_info_update_type(const struct dc_surfa ...@@ -2455,7 +2455,7 @@ static enum surface_update_type get_plane_info_update_type(const struct dc_surfa
/* todo: below are HW dependent, we should add a hook to /* todo: below are HW dependent, we should add a hook to
* DCE/N resource and validated there. * DCE/N resource and validated there.
*/ */
if (u->plane_info->tiling_info.gfx9.swizzle != DC_SW_LINEAR) { if (!dc->debug.skip_full_updated_if_possible) {
/* swizzled mode requires RQ to be setup properly, /* swizzled mode requires RQ to be setup properly,
* thus need to run DML to calculate RQ settings * thus need to run DML to calculate RQ settings
*/ */
...@@ -2547,7 +2547,7 @@ static enum surface_update_type det_surface_update(const struct dc *dc, ...@@ -2547,7 +2547,7 @@ static enum surface_update_type det_surface_update(const struct dc *dc,
update_flags->raw = 0; // Reset all flags update_flags->raw = 0; // Reset all flags
type = get_plane_info_update_type(u); type = get_plane_info_update_type(dc, u);
elevate_update_type(&overall_type, type); elevate_update_type(&overall_type, type);
type = get_scaling_info_update_type(dc, u); type = get_scaling_info_update_type(dc, u);
......
...@@ -1060,6 +1060,7 @@ struct dc_debug_options { ...@@ -1060,6 +1060,7 @@ struct dc_debug_options {
bool enable_ips_visual_confirm; bool enable_ips_visual_confirm;
unsigned int sharpen_policy; unsigned int sharpen_policy;
unsigned int scale_to_sharpness_policy; unsigned int scale_to_sharpness_policy;
bool skip_full_updated_if_possible;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment