Re: [PATCH 00/10] Freesync Panel Replay V2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2023-07-10 16:17, Alex Deucher wrote:
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
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




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux