drm/amd/display: remove usage of legacy_cursor_update
authorShirish S <shirish.s@amd.com>
Fri, 1 Dec 2017 06:27:04 +0000 (01:27 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 6 Dec 2017 17:48:26 +0000 (12:48 -0500)
Currently the atomic check code uses legacy_cursor_update
to differnetiate if the cursor plane is being requested by
the user, which is not required as we shall be updating
plane only if modeset is requested/required.

Have tested cursor plane and underlay get updated seamlessly,
without any lag or frame drops.

Signed-off-by: Shirish S <shirish.s@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Reviewed-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

index 82226a337bde35ff24f1269754e0dd9bc2b74c70..9aff7eea4375e26e5940bee9c15f33e298bde6af 100644 (file)
@@ -4739,8 +4739,6 @@ static int dm_update_planes_state(struct dc *dc,
 static int amdgpu_dm_atomic_check(struct drm_device *dev,
                                  struct drm_atomic_state *state)
 {
-       int i;
-       int ret;
        struct amdgpu_device *adev = dev->dev_private;
        struct dc *dc = adev->dm.dc;
        struct dm_atomic_state *dm_state = to_dm_atomic_state(state);
@@ -4748,6 +4746,7 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,
        struct drm_connector_state *old_con_state, *new_con_state;
        struct drm_crtc *crtc;
        struct drm_crtc_state *old_crtc_state, *new_crtc_state;
+       int ret, i;
 
        /*
         * This bool will be set for true for any modeset/reset
@@ -4759,37 +4758,21 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,
        if (ret)
                goto fail;
 
-       /*
-        * legacy_cursor_update should be made false for SoC's having
-        * a dedicated hardware plane for cursor in amdgpu_dm_atomic_commit(),
-        * otherwise for software cursor plane,
-        * we should not add it to list of affected planes.
-        */
-       if (state->legacy_cursor_update) {
-               for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) {
-                       if (new_crtc_state->color_mgmt_changed) {
-                               ret = drm_atomic_add_affected_planes(state, crtc);
-                               if (ret)
-                                       goto fail;
-                       }
-               }
-       } else {
-               for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
-                       if (!drm_atomic_crtc_needs_modeset(new_crtc_state) &&
-                                       !new_crtc_state->color_mgmt_changed)
-                               continue;
+       for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
+               if (!drm_atomic_crtc_needs_modeset(new_crtc_state) &&
+                   !new_crtc_state->color_mgmt_changed)
+                       continue;
 
-                       if (!new_crtc_state->enable)
-                               continue;
+               if (!new_crtc_state->enable)
+                       continue;
 
-                       ret = drm_atomic_add_affected_connectors(state, crtc);
-                       if (ret)
-                               return ret;
+               ret = drm_atomic_add_affected_connectors(state, crtc);
+               if (ret)
+                       return ret;
 
-                       ret = drm_atomic_add_affected_planes(state, crtc);
-                       if (ret)
-                               goto fail;
-               }
+               ret = drm_atomic_add_affected_planes(state, crtc);
+               if (ret)
+                       goto fail;
        }
 
        dm_state->context = dc_create_state();