From: Dmytro Laktyushkin <dmytro.laktyush...@amd.com>

Change-Id: I8747a1bb298e57824515f126990429dbbca05ecd
Signed-off-by: Dmytro Laktyushkin <dmytro.laktyush...@amd.com>
Reviewed-by: Tony Cheng <tony.ch...@amd.com>
Acked-by: Harry Wentland <harry.wentl...@amd.com>
---
 drivers/gpu/drm/amd/display/dc/core/dc.c | 47 +++++++++-----------------------
 1 file changed, 13 insertions(+), 34 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c 
b/drivers/gpu/drm/amd/display/dc/core/dc.c
index bc9808180346..6d56cb0c29cc 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -1122,45 +1122,24 @@ static enum surface_update_type 
get_plane_info_update_type(
 static enum surface_update_type  get_scaling_info_update_type(
                const struct dc_surface_update *u)
 {
-       struct dc_scaling_info temp_scaling_info = { { 0 } };
-
        if (!u->scaling_info)
                return UPDATE_TYPE_FAST;
 
-       /* Copy all parameters that will cause a full update
-        * from current surface, the rest of the parameters
-        * from provided plane configuration.
-        * Perform memory compare and special validation
-        * for those that can cause fast/medium updates
-        */
-
-       /* Full Update Parameters */
-       temp_scaling_info.dst_rect = u->surface->dst_rect;
-       temp_scaling_info.src_rect = u->surface->src_rect;
-       temp_scaling_info.scaling_quality = u->surface->scaling_quality;
-
-       /* Special validation required */
-       temp_scaling_info.clip_rect = u->scaling_info->clip_rect;
-
-       if (memcmp(u->scaling_info, &temp_scaling_info,
-                       sizeof(struct dc_scaling_info)) != 0)
+       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
+                       || 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;
 
-       /* Check Clip rectangles if not equal
-        * difference is in offsets == > UPDATE_TYPE_MED
-        * difference is in dimensions == > UPDATE_TYPE_FULL
-        */
-       if (memcmp(&u->scaling_info->clip_rect,
-                       &u->surface->clip_rect, sizeof(struct rect)) != 0) {
-               if ((u->scaling_info->clip_rect.height ==
-                       u->surface->clip_rect.height) &&
-                       (u->scaling_info->clip_rect.width ==
-                       u->surface->clip_rect.width)) {
-                       return UPDATE_TYPE_MED;
-               } else {
-                       return UPDATE_TYPE_FULL;
-               }
-       }
+       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
+                       || u->scaling_info->clip_rect.y != 
u->surface->clip_rect.y
+                       || u->scaling_info->dst_rect.x != u->surface->dst_rect.x
+                       || u->scaling_info->dst_rect.y != 
u->surface->dst_rect.y)
+               return UPDATE_TYPE_MED;
 
        return UPDATE_TYPE_FAST;
 }
-- 
2.11.0

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to