[PATCH 00/10] Freesync Panel Replay V2

Bhawanpreet Lakha Bhawanpreet.lakha at amd.com
Wed Jul 19 17:45:35 UTC 2023


On 2023-07-10 16:17, Alex Deucher wrote:
> On Mon, Jul 10, 2023 at 3:27 PM Bhawanpreet Lakha
> <Bhawanpreet.Lakha at amd.com> wrote:
>> This patch set introduces Freesync Panel Replay capability on DCN 3.1.4
>> and newer. Replay has been verified to be working with these patches (in
>> house)
>>
>> These patches are enabling panel replay in static screen use-cases.
>> Other use cases will be added as they are ready
>>
>>
>> The importance of Replay
>> ************************
>>
>> In some instances, the GPU is transmitting repeated frames to the sink
>> without any updates or changes in the content. These repeat transmission
>> are wasteful, resulting in power draw in different aspects of the system
>>
>> 1. DCN is fetching the frame of data from DF/UMC/DRAM. This memory traffic
>> prevents power down of parts of this HW path.
>>
>> 2. GPU is transmitting pixel data to the display through the main link of
>> the DisplayPort interface. This prevents power down of both the Source
>> transmitter (TX) and the Sink receiver (RX)
>>
>>
>>
>> How it improves on PSR
>> ************************
>>
>> The concepts of utilizing replay is similar to PSR, but there is a benefit of:
>>          Source and Sink remaining synchronized which allows for
>>                  - lower latency when switching from replay to live frames
>>                  - enable the possibility of more use cases
>>                  - easy control of the sink's refresh rate during replay
>>
>> Due to Source and Sink remaining timing synchronized, Replay can be activated
>> in more UI scenarios.
>>
>>
>> V2: Bug fixes, V1 had some issues which have all been fixed.
>>          - Invisible Cursor
>>          - Random Hang
>>          - Laggy System
>>
> Are there minimum DMCUB firmware versions required for this?  If so,
> we should check before enabling this.
>
> Alex
There should be one theoretically, but since we only enable this on 
DCN3.2.1+ the FW version shouldn't matter, unless there was some 
specific bug fix done.
>> Regards,
>> Bhawan
>>
>> Bhawanpreet Lakha (10):
>>    drm/amd/display: Add structs for Freesync Panel Replay
>>    drm/amd/display: Add Functions to enable Freesync Panel Replay
>>    drm/amd/display: Add Freesync Panel DM code
>>    drm/amd/display: Read replay data from sink
>>    drm/amd/display: Get replay info from VSDB
>>    drm/amd/display: Add Replay supported/enabled checks
>>    drm/amd/display: Update replay for clk_mgr optimizations
>>    drm/amd/display: Update adaptive sync infopackets for replay
>>    drm/amd/display: Handle Replay related hpd irq
>>    drm/amd/display: Enable Replay for static screen use cases
>>
>>   .../gpu/drm/amd/display/amdgpu_dm/Makefile    |   2 +-
>>   .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  71 ++-
>>   .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h |  14 +
>>   .../amd/display/amdgpu_dm/amdgpu_dm_crtc.c    |   9 +-
>>   .../amd/display/amdgpu_dm/amdgpu_dm_replay.c  | 183 ++++++++
>>   .../amd/display/amdgpu_dm/amdgpu_dm_replay.h  |  46 ++
>>   .../gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c  |   3 +
>>   drivers/gpu/drm/amd/display/dc/core/dc.c      |   6 +
>>   .../drm/amd/display/dc/core/dc_link_exports.c |   5 +
>>   drivers/gpu/drm/amd/display/dc/dc.h           |   6 +
>>   drivers/gpu/drm/amd/display/dc/dc_dmub_srv.c  |   3 +
>>   drivers/gpu/drm/amd/display/dc/dc_dp_types.h  |  29 ++
>>   drivers/gpu/drm/amd/display/dc/dc_types.h     |  41 ++
>>   drivers/gpu/drm/amd/display/dc/dce/Makefile   |   2 +-
>>   .../gpu/drm/amd/display/dc/dce/dmub_replay.c  | 303 +++++++++++++
>>   .../gpu/drm/amd/display/dc/dce/dmub_replay.h  |  58 +++
>>   .../display/dc/dce110/dce110_hw_sequencer.c   |   6 +
>>   .../drm/amd/display/dc/dcn21/dcn21_resource.c |   1 +
>>   .../drm/amd/display/dc/dcn30/dcn30_resource.c |   1 +
>>   .../amd/display/dc/dcn302/dcn302_resource.c   |   1 +
>>   .../amd/display/dc/dcn303/dcn303_resource.c   |   1 +
>>   .../drm/amd/display/dc/dcn31/dcn31_resource.c |  13 +
>>   .../amd/display/dc/dcn314/dcn314_resource.c   |  14 +
>>   .../amd/display/dc/dcn315/dcn315_resource.c   |   1 +
>>   .../amd/display/dc/dcn316/dcn316_resource.c   |   1 +
>>   .../gpu/drm/amd/display/dc/inc/core_types.h   |  19 +
>>   drivers/gpu/drm/amd/display/dc/inc/link.h     |  14 +
>>   .../drm/amd/display/dc/link/link_factory.c    |   7 +
>>   .../dc/link/protocols/link_dp_capability.c    |  10 +
>>   .../dc/link/protocols/link_dp_irq_handler.c   |  66 +++
>>   .../link/protocols/link_edp_panel_control.c   | 165 +++++++
>>   .../link/protocols/link_edp_panel_control.h   |   8 +
>>   .../gpu/drm/amd/display/dmub/inc/dmub_cmd.h   | 412 ++++++++++++++++++
>>   .../gpu/drm/amd/display/include/dpcd_defs.h   |   5 +-
>>   .../display/modules/info_packet/info_packet.c |   4 +
>>   .../amd/display/modules/power/power_helpers.c |   5 +
>>   .../amd/display/modules/power/power_helpers.h |   2 +
>>   drivers/gpu/drm/amd/include/amd_shared.h      |   2 +
>>   38 files changed, 1533 insertions(+), 6 deletions(-)
>>   create mode 100644 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_replay.c
>>   create mode 100644 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_replay.h
>>   create mode 100644 drivers/gpu/drm/amd/display/dc/dce/dmub_replay.c
>>   create mode 100644 drivers/gpu/drm/amd/display/dc/dce/dmub_replay.h
>>
>> --
>> 2.25.1
>>


More information about the amd-gfx mailing list