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

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

 



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
>




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

  Powered by Linux