From: Yongqiang Sun <yongqiang....@amd.com>

Change-Id: If787d1384eae0cdee917effc939464e0abc8453d
Signed-off-by: Yongqiang Sun <yongqiang....@amd.com>
Acked-by: Harry Wentland <harry.wentl...@amd.com>
Reviewed-by: Tony Cheng <tony.ch...@amd.com>
---
 drivers/gpu/drm/amd/display/dc/core/dc.c | 16 +++++++++++-----
 1 file changed, 11 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 9a3507e743cf..203cb9d0c89d 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -1024,7 +1024,8 @@ static unsigned int pixel_format_to_bpp(enum 
surface_pixel_format format)
 }
 
 static enum surface_update_type get_plane_info_update_type(
-               const struct dc_surface_update *u)
+               const struct dc_surface_update *u,
+               int surface_index)
 {
        struct dc_plane_info temp_plane_info = { { { { 0 } } } };
 
@@ -1049,7 +1050,11 @@ static enum surface_update_type 
get_plane_info_update_type(
 
        /* Special Validation parameters */
        temp_plane_info.format = u->plane_info->format;
-       temp_plane_info.visible = u->plane_info->visible;
+
+       if (surface_index == 0)
+               temp_plane_info.visible = u->plane_info->visible;
+       else
+               temp_plane_info.visible = u->surface->visible;
 
        if (memcmp(u->plane_info, &temp_plane_info,
                        sizeof(struct dc_plane_info)) != 0)
@@ -1111,7 +1116,8 @@ static enum surface_update_type  
get_scaling_info_update_type(
 
 static enum surface_update_type det_surface_update(
                const struct core_dc *dc,
-               const struct dc_surface_update *u)
+               const struct dc_surface_update *u,
+               int surface_index)
 {
        const struct validate_context *context = dc->current_context;
        enum surface_update_type type = UPDATE_TYPE_FAST;
@@ -1120,7 +1126,7 @@ static enum surface_update_type det_surface_update(
        if (!is_surface_in_context(context, u->surface))
                return UPDATE_TYPE_FULL;
 
-       type = get_plane_info_update_type(u);
+       type = get_plane_info_update_type(u, surface_index);
        if (overall_type < type)
                overall_type = type;
 
@@ -1157,7 +1163,7 @@ enum surface_update_type 
dc_check_update_surfaces_for_stream(
 
        for (i = 0 ; i < surface_count; i++) {
                enum surface_update_type type =
-                               det_surface_update(core_dc, &updates[i]);
+                               det_surface_update(core_dc, &updates[i], i);
 
                if (type == UPDATE_TYPE_FULL)
                        return type;
-- 
2.11.0

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

Reply via email to