Skip to content

Commit bb47de7

Browse files
Nicholas Kazlauskasalexdeucher
authored andcommitted
drm/amdgpu: Set FreeSync state using drm VRR properties
Support for AMDGPU specific FreeSync properties and ioctls are dropped from amdgpu_dm in favor of supporting drm variable refresh rate properties. The notify_freesync and set_freesync_property functions are dropped from amdgpu_display_funcs. The drm vrr_capable property is now attached to any DP/HDMI connector. Its value is updated accordingly to the connector's FreeSync capabiltiy. The freesync_enable logic and ioctl control has has been dropped in favor of utilizing the vrr_enabled on the drm CRTC. This allows for more fine grained atomic control over which CRTCs should support variable refresh rate. To handle state changes for vrr_enabled it was easiest to drop the forced modeset on freesync_enabled change. This patch now performs the required stream updates when planes are flipped. This is done for a few reasons: (1) VRR stream updates can be done in the fast update path (2) amdgpu_dm_atomic_check would need to be hacked apart to check desired variable refresh state and capability before the CRTC disable pass. (3) Performing VRR stream updates on-flip is needed for enabling BTR support. VRR packets and timing adjustments are now tracked and compared to previous values sent to the hardware. Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent 520f08d commit bb47de7

File tree

3 files changed

+139
-130
lines changed

3 files changed

+139
-130
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -293,13 +293,6 @@ struct amdgpu_display_funcs {
293293
uint16_t connector_object_id,
294294
struct amdgpu_hpd *hpd,
295295
struct amdgpu_router *router);
296-
/* it is used to enter or exit into free sync mode */
297-
int (*notify_freesync)(struct drm_device *dev, void *data,
298-
struct drm_file *filp);
299-
/* it is used to allow enablement of freesync mode */
300-
int (*set_freesync_property)(struct drm_connector *connector,
301-
struct drm_property *property,
302-
uint64_t val);
303296

304297

305298
};

0 commit comments

Comments
 (0)