drm/amd/display: Add vrr_active_variable to dc_stream_update
authorHarry VanZyllDeJong <harry.vanzylldejong@amd.com>
Mon, 10 May 2021 23:30:24 +0000 (19:30 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 15 Jun 2022 01:38:41 +0000 (21:38 -0400)
[WHY]
The display driver on some OSes need to track it in order to
perform memory clock switching decisions.

[HOW]
Propagate the vrr active state to dirty bit so that on mode set it
disables dynamic memory clock switching.

Acked-by: Alan Liu <HaoPing.Liu@amd.com>
Signed-off-by: Harry VanZyllDeJong <harry.vanzylldejong@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc.c
drivers/gpu/drm/amd/display/dc/dc_stream.h
drivers/gpu/drm/amd/display/modules/freesync/freesync.c
drivers/gpu/drm/amd/display/modules/inc/mod_freesync.h

index 7c2b652..49339c5 100644 (file)
@@ -2652,6 +2652,9 @@ static void copy_stream_update_to_stream(struct dc *dc,
        if (update->allow_freesync)
                stream->allow_freesync = *update->allow_freesync;
 
+       if (update->vrr_active_variable)
+               stream->vrr_active_variable = *update->vrr_active_variable;
+
        if (update->crtc_timing_adjust)
                stream->adjust = *update->crtc_timing_adjust;
 
index ae9382c..5a894c1 100644 (file)
@@ -304,6 +304,7 @@ struct dc_stream_update {
        bool *dpms_off;
        bool integer_scaling_update;
        bool *allow_freesync;
+       bool *vrr_active_variable;
 
        struct colorspace_transform *gamut_remap;
        enum dc_color_space *output_color_space;
index aa121d4..0686223 100644 (file)
@@ -1374,7 +1374,7 @@ unsigned long long mod_freesync_calc_field_rate_from_timing(
        return field_rate_in_uhz;
 }
 
-bool mod_freesync_get_freesync_enabled(struct mod_vrr_params *pVrr, struct dc_stream_state *const pStream)
+bool mod_freesync_get_freesync_enabled(struct mod_vrr_params *pVrr)
 {
        return (pVrr->state != VRR_STATE_UNSUPPORTED) && (pVrr->state != VRR_STATE_DISABLED);
 }
index 62e326d..afe1f6c 100644 (file)
@@ -195,7 +195,6 @@ unsigned int mod_freesync_calc_v_total_from_refresh(
                unsigned int refresh_in_uhz);
 
 // Returns true when FreeSync is supported and enabled (even if it is inactive)
-bool mod_freesync_get_freesync_enabled(struct mod_vrr_params *pVrr,
-               struct dc_stream_state *const pStream);
+bool mod_freesync_get_freesync_enabled(struct mod_vrr_params *pVrr);
 
 #endif