]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/amdgpu: Add preferred mode in modeset when freesync video mode's enabled.
authorSolomon Chiu <solomon.chiu@amd.com>
Tue, 27 Jul 2021 16:20:30 +0000 (00:20 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 6 Aug 2021 01:18:00 +0000 (21:18 -0400)
[Why]
With kernel module parameter "freesync_video" is enabled, if the mode
is changed to preferred mode(the mode with highest rate), then Freesync
fails because the preferred mode is treated as one of freesync video
mode, and then be configurated as freesync video mode(fixed refresh
rate).

[How]
Skip freesync fixed rate configurating when modeset to preferred mode.

Signed-off-by: Solomon Chiu <solomon.chiu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

index e4787934aa481ee82ab84b8a8a8ad88b8a472049..3e28f17c84fa1527bf73d39ce99e203931a1e666 100644 (file)
@@ -9616,7 +9616,12 @@ static int dm_update_crtc_state(struct amdgpu_display_manager *dm,
                } else if (amdgpu_freesync_vid_mode && aconnector &&
                           is_freesync_video_mode(&new_crtc_state->mode,
                                                  aconnector)) {
-                       set_freesync_fixed_config(dm_new_crtc_state);
+                       struct drm_display_mode *high_mode;
+
+                       high_mode = get_highest_refresh_rate_mode(aconnector, false);
+                       if (!drm_mode_equal(&new_crtc_state->mode, high_mode)) {
+                               set_freesync_fixed_config(dm_new_crtc_state);
+                       }
                }
 
                ret = dm_atomic_get_state(state, &dm_state);