diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2740-drm-amd-display-Loosen-plane_info-and-scaling_info-c.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2740-drm-amd-display-Loosen-plane_info-and-scaling_info-c.patch | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2740-drm-amd-display-Loosen-plane_info-and-scaling_info-c.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2740-drm-amd-display-Loosen-plane_info-and-scaling_info-c.patch new file mode 100644 index 00000000..45deec9d --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2740-drm-amd-display-Loosen-plane_info-and-scaling_info-c.patch @@ -0,0 +1,62 @@ +From 21e8331c687fcd73a65ed60a848eaa1e6dc3b157 Mon Sep 17 00:00:00 2001 +From: Andrew Jiang <Andrew.Jiang@amd.com> +Date: Mon, 6 Nov 2017 15:53:36 -0500 +Subject: [PATCH 2740/4131] drm/amd/display: Loosen plane_info and scaling_info + checks + +Make it so that differing dcc and plane size fields don't necessarily +result in a full update, along with upscaling modes. This allows us to +save some unnecessary full updates. + +Signed-off-by: Andrew Jiang <Andrew.Jiang@amd.com> +Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> +Acked-by: Harry Wentland <harry.wentland@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc.c | 17 ++++++++++++----- + 1 file changed, 12 insertions(+), 5 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c +index 8df4deb..baab9c2 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc.c +@@ -1130,9 +1130,7 @@ static enum surface_update_type get_plane_info_update_type( + /* Full update parameters */ + temp_plane_info.color_space = u->surface->color_space; + temp_plane_info.input_tf = u->surface->input_tf; +- temp_plane_info.dcc = u->surface->dcc; + temp_plane_info.horizontal_mirror = u->surface->horizontal_mirror; +- temp_plane_info.plane_size = u->surface->plane_size; + temp_plane_info.rotation = u->surface->rotation; + temp_plane_info.stereo_format = u->surface->stereo_format; + +@@ -1175,14 +1173,23 @@ static enum surface_update_type get_scaling_info_update_type( + if (!u->scaling_info) + return UPDATE_TYPE_FAST; + +- if (u->scaling_info->src_rect.width != u->surface->src_rect.width +- || u->scaling_info->src_rect.height != u->surface->src_rect.height +- || u->scaling_info->clip_rect.width != u->surface->clip_rect.width ++ if (u->scaling_info->clip_rect.width != u->surface->clip_rect.width + || u->scaling_info->clip_rect.height != u->surface->clip_rect.height + || u->scaling_info->dst_rect.width != u->surface->dst_rect.width + || u->scaling_info->dst_rect.height != u->surface->dst_rect.height) + return UPDATE_TYPE_FULL; + ++ if (u->scaling_info->src_rect.width != u->surface->src_rect.width ++ || u->scaling_info->src_rect.height != u->surface->src_rect.height) { ++ ++ if (u->scaling_info->src_rect.width > u->surface->src_rect.width ++ && u->scaling_info->src_rect.height > u->surface->src_rect.height) ++ return UPDATE_TYPE_FULL; ++ ++ /* Upscaling does not require a full update */ ++ return UPDATE_TYPE_MED; ++ } ++ + if (u->scaling_info->src_rect.x != u->surface->src_rect.x + || u->scaling_info->src_rect.y != u->surface->src_rect.y + || u->scaling_info->clip_rect.x != u->surface->clip_rect.x +-- +2.7.4 + |