mbox series

[v4,0/2] Add support for 'power saving policy' property

Message ID 20240703051722.328-1-mario.limonciello@amd.com (mailing list archive)
Headers show
Series Add support for 'power saving policy' property | expand

Message

Mario Limonciello July 3, 2024, 5:17 a.m. UTC
During the Display Next hackfest 2024 one of the topics discussed
was the need for compositor to be able to relay intention to drivers
that color fidelity is preferred over power savings.

To accomplish this a new optional DRM property is being introduced called
"power saving policy".  This property is a bit mask that can be configured
with requests of "Require color accuracy" or "Require low latency"
that can be configured by the compositor.

When a driver advertises support for this property and the compositor
sets it to "Require color accuracy" then the driver will disable any power
saving features that can compromise color fidelity.

In practice the main feature this currently applies to is the
"Adaptive Backlight Modulation" feature within AMD DCN on eDP panels.

When the compositor has marked the property  "Require color accuracy" then
this feature will be disabled and any userspace that tries to turn it on
will get an -EBUSY return code.

Compositors can also request that low latency is critical which in
practice should cause PSR and PSR2 to be disabled.

When the compositor has restored the value back to no requirements then
the previous value that would have been programmed will be restored.

v3->v4:
 * Fixup for Xaver's reported issue
v2->v3:
 * Updates from Leo's comments (see individual patches)

Mario Limonciello (2):
  drm: Introduce 'power saving policy' drm property
  drm/amd: Add power_saving_policy drm property to eDP connectors

 drivers/gpu/drm/amd/amdgpu/amdgpu_display.c   |  4 ++
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 50 +++++++++++++++++--
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h |  2 +
 drivers/gpu/drm/drm_connector.c               | 48 ++++++++++++++++++
 include/drm/drm_connector.h                   |  2 +
 include/drm/drm_mode_config.h                 |  5 ++
 include/uapi/drm/drm_mode.h                   |  7 +++
 7 files changed, 113 insertions(+), 5 deletions(-)

Comments

Hamza Mahfooz July 10, 2024, 9:01 p.m. UTC | #1
On 7/3/24 01:17, Mario Limonciello wrote:
> During the Display Next hackfest 2024 one of the topics discussed
> was the need for compositor to be able to relay intention to drivers
> that color fidelity is preferred over power savings.
> 
> To accomplish this a new optional DRM property is being introduced called
> "power saving policy".  This property is a bit mask that can be configured
> with requests of "Require color accuracy" or "Require low latency"
> that can be configured by the compositor.
> 
> When a driver advertises support for this property and the compositor
> sets it to "Require color accuracy" then the driver will disable any power
> saving features that can compromise color fidelity.
> 
> In practice the main feature this currently applies to is the
> "Adaptive Backlight Modulation" feature within AMD DCN on eDP panels.
> 
> When the compositor has marked the property  "Require color accuracy" then
> this feature will be disabled and any userspace that tries to turn it on
> will get an -EBUSY return code.
> 
> Compositors can also request that low latency is critical which in
> practice should cause PSR and PSR2 to be disabled.
> 
> When the compositor has restored the value back to no requirements then
> the previous value that would have been programmed will be restored.

Applied, thanks!

> 
> v3->v4:
>   * Fixup for Xaver's reported issue
> v2->v3:
>   * Updates from Leo's comments (see individual patches)
> 
> Mario Limonciello (2):
>    drm: Introduce 'power saving policy' drm property
>    drm/amd: Add power_saving_policy drm property to eDP connectors
> 
>   drivers/gpu/drm/amd/amdgpu/amdgpu_display.c   |  4 ++
>   .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 50 +++++++++++++++++--
>   .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h |  2 +
>   drivers/gpu/drm/drm_connector.c               | 48 ++++++++++++++++++
>   include/drm/drm_connector.h                   |  2 +
>   include/drm/drm_mode_config.h                 |  5 ++
>   include/uapi/drm/drm_mode.h                   |  7 +++
>   7 files changed, 113 insertions(+), 5 deletions(-)
>