diff options
| author | Aric Cyr <Aric.Cyr@amd.com> | 2026-09-18 18:37:43 -0400 |
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2026-10-07 12:06:01 -0400 |
| commit | d07fc866c52dc759d823ecdbb026306c1273434c (patch) | |
| tree | 36d155ba0b2ee73b783e0fc68810c58e7db8c1de /scripts/stackusage | |
| parent | e69156294e47185ba96f879d6ddf9d092a61b74d (diff) | |
| download | linux-next-d07fc866c52dc759d823ecdbb026306c1273434c.tar.gz linux-next-d07fc866c52dc759d823ecdbb026306c1273434c.zip | |
drm/amd/display: only reprogram DRR when v_total values change
[Why]
dc_stream_adjust_vmin_vmax() programmed the OTG on every call. FreeSync
BTR calls it once per vblank, so identical v_total values were rewritten
every frame, each one paying dc_exit_ips_for_hw_access() and, when FAMS
is enabled, a blocking DMUB round trip from setup_manual_trigger().
[How]
Return early when timing_adjust_pending is clear and every v_total field
already matches the request, so hardware is only touched when the values
change. stream->adjust is still updated on every path that continues, so
a later commit programs the requested values.
timing_adjust_pending is the existing "stream->adjust has not reached
hardware" marker, so keep it accurate wherever hardware is left
untouched: set_drr_and_clear_adjust_pending() now sets it when called
with null params, which resets DRR in the OTG during pipe back-end
teardown, and the max_v_total overflow path only clears it when
set_long_vtotal() runs.
Reviewed-by: Josip Pavic <josip.pavic@amd.com>
Signed-off-by: Aric Cyr <Aric.Cyr@amd.com>
Signed-off-by: Roman Li <roman.li@amd.com>
Tested-by: Dan Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'scripts/stackusage')
0 files changed, 0 insertions, 0 deletions
