On Mon, Jul 10, 2023 at 3:27 PM Bhawanpreet Lakha <Bhawanpreet.Lakha@xxxxxxx> 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 > 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 >