[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