public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [RFC PATCH 00/18] Generic DRRS implementation across the encoders
@ 2015-06-26 13:51 Ramalingam C
  2015-06-26 13:51 ` [RFC PATCH 01/18] drm/i915: Removing the eDP specific DRRS implementation Ramalingam C
                   ` (18 more replies)
  0 siblings, 19 replies; 36+ messages in thread
From: Ramalingam C @ 2015-06-26 13:51 UTC (permalink / raw)
  To: intel-gfx, daniel.vetter, chris, rodrigo.vivi; +Cc: paulo.r.zanoni

Display Refresh Rate Switching (DRRS) is a power conservation feature
which enables swtching between low and high refresh rates,
dynamically, based on the usage scenario to save power.

This feature is applicable for internal panels.

Indication that the panel supports DRRS is given by the panel EDID, which
would list multiple refresh rates for one resolution along with VBT fields
like drrs_min_vrefresh.

DRRS is of 2 types - static and seamless.
Static needs full modeset. Which can be used in docking and undocking
scenarios.
Seamless DRRS involves changing RR without any visual effect to the user
and can be used during normal system usage. This is done by programming
certain registers.

Support for static/seamless DRRS may be indicated in the VBT based on
inputs from the panel spec.

We have implemented two DRRS use case scenrios :
1. Idleness DRRS,	2. Media playback DRRS (Content's FPS based)

Idleness DRRS:-
	The implementation is based on frontbuffer tracking implementation.
When there is a disturbance on the screen triggered by user activity or a
periodic system activity, DRRS is disabled (RR is changed to high RR).
When there is no movement on screen, after a timeout, a switch
to low RR is made.
	For integration with frontbuffer tracking code,
intel_drrs_invalidate() and intel_drrs_flush() are called.

Media playback DRRS (Content's FPS based):
	Based on the content's Frames Per Second, minimum required vrefresh
is called in userspace. If the panel supports the minimum required vrefresh
and if the DRRS is supported on the platform, userspace will make a modeset
request with same mode and FB but with different vrefresh.
	Panel's vrefresh range will be exposed through connector's modelist and
connector property is created to expose the DRRS capability to the userspace.

	In DRRS state machine Media plyabck DRRS holds the highest priority.
Idleness DRRS is disabled as soon as Media playback DRRS is requested.
Idleness DRRS is reenabled when the userspace indicates the exit of Media
playback DRRS by requesting for highest vrefresh supported.

NOTE:
1. DRM documentation will be made once the RFC is closed along with IGT.
2. Currently in RFC, platform support is developed only for VLV.
   it will be extended to other platform once the design is approved.
3. Basic design of DSI DRRS and Content based DRRS is functionally tested on
   Android(VLV & CHT).

Ramalingam C (18):
  drm/i915: Removing the eDP specific DRRS implementation
  drm/i915: Generic DRRS state Machine
  drm/i915: Addition of the drrs_min_vrefresh in VBT
  drm/i915: Implementation of Generic DSI DRRS
  drm/i915: Adjusting the pclk for dual link and burst mode
  drm/i915: VLV dsi drrs support
  drm/i915: Generic eDP DRRS implementation
  drm/i915: VLV eDP DRRS methods
  drm/i915: Cloned mode check
  drm/i915: Initializing DRRS for all connectors
  drm/i915: Updating the crtc modes in DRRS transitions
  drm/i915: Redesigning dp_set_m_n to receive divider values
  drm/i915: MEDIA_RR support in general DRRS state machine
  drm/i915: MEDIA_RR support in eDP DRRS module
  drm/i915: MEDIA_RR support in DSI DRRS module
  drm/i915: Filtering media playback DRRS requests
  drm/i915: Addition of downclock mode to connector modelist
  drm/i915: Connector property for DRRS capability

 drivers/gpu/drm/i915/Makefile            |    3 +
 drivers/gpu/drm/i915/i915_debugfs.c      |  110 -----
 drivers/gpu/drm/i915/i915_drv.h          |   91 +++-
 drivers/gpu/drm/i915/i915_reg.h          |    4 +
 drivers/gpu/drm/i915/intel_bios.c        |    3 +
 drivers/gpu/drm/i915/intel_bios.h        |    9 +-
 drivers/gpu/drm/i915/intel_ddi.c         |    2 -
 drivers/gpu/drm/i915/intel_display.c     |   57 ++-
 drivers/gpu/drm/i915/intel_dp.c          |  397 +---------------
 drivers/gpu/drm/i915/intel_drrs.c        |  728 ++++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/intel_drrs.h        |   38 ++
 drivers/gpu/drm/i915/intel_drv.h         |   45 +-
 drivers/gpu/drm/i915/intel_dsi.c         |   29 +-
 drivers/gpu/drm/i915/intel_dsi.h         |    3 +
 drivers/gpu/drm/i915/intel_dsi_drrs.c    |  415 +++++++++++++++++
 drivers/gpu/drm/i915/intel_dsi_drrs.h    |   66 +++
 drivers/gpu/drm/i915/intel_dsi_pll.c     |  303 +++++++++++--
 drivers/gpu/drm/i915/intel_edp_drrs.c    |  196 ++++++++
 drivers/gpu/drm/i915/intel_edp_drrs.h    |   29 ++
 drivers/gpu/drm/i915/intel_frontbuffer.c |    4 +-
 drivers/gpu/drm/i915/intel_modes.c       |   28 ++
 21 files changed, 1959 insertions(+), 601 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/intel_drrs.c
 create mode 100644 drivers/gpu/drm/i915/intel_drrs.h
 create mode 100644 drivers/gpu/drm/i915/intel_dsi_drrs.c
 create mode 100644 drivers/gpu/drm/i915/intel_dsi_drrs.h
 create mode 100644 drivers/gpu/drm/i915/intel_edp_drrs.c
 create mode 100644 drivers/gpu/drm/i915/intel_edp_drrs.h

-- 
1.7.9.5

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2015-06-30  9:59 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-06-26 13:51 [RFC PATCH 00/18] Generic DRRS implementation across the encoders Ramalingam C
2015-06-26 13:51 ` [RFC PATCH 01/18] drm/i915: Removing the eDP specific DRRS implementation Ramalingam C
2015-06-26 16:50   ` Daniel Vetter
2015-06-29 11:24     ` Ramalingam C
2015-06-26 13:51 ` [RFC PATCH 02/18] drm/i915: Generic DRRS state Machine Ramalingam C
2015-06-26 13:51 ` [RFC PATCH 03/18] drm/i915: Addition of the drrs_min_vrefresh in VBT Ramalingam C
2015-06-26 13:51 ` [RFC PATCH 04/18] drm/i915: Implementation of Generic DSI DRRS Ramalingam C
2015-06-26 13:51 ` [RFC PATCH 05/18] drm/i915: Adjusting the pclk for dual link and burst mode Ramalingam C
2015-06-26 13:51 ` [RFC PATCH 06/18] drm/i915: VLV dsi drrs support Ramalingam C
2015-06-26 13:51 ` [RFC PATCH 07/18] drm/i915: Generic eDP DRRS implementation Ramalingam C
2015-06-26 13:51 ` [RFC PATCH 08/18] drm/i915: VLV eDP DRRS methods Ramalingam C
2015-06-26 13:51 ` [RFC PATCH 09/18] drm/i915: Cloned mode check Ramalingam C
2015-06-26 17:08   ` Daniel Vetter
2015-06-26 17:14     ` Chris Wilson
2015-06-26 17:38       ` Daniel Vetter
2015-06-29 11:48     ` Ramalingam C
2015-06-29 16:16       ` Daniel Vetter
2015-06-26 13:51 ` [RFC PATCH 10/18] drm/i915: Initializing DRRS for all connectors Ramalingam C
2015-06-26 17:12   ` Daniel Vetter
2015-06-29 14:52     ` Ramalingam C
2015-06-26 13:51 ` [RFC PATCH 11/18] drm/i915: Updating the crtc modes in DRRS transitions Ramalingam C
2015-06-26 17:11   ` Daniel Vetter
2015-06-29 14:58     ` Ramalingam C
2015-06-29 16:23       ` Daniel Vetter
2015-06-26 13:51 ` [RFC PATCH 12/18] drm/i915: Redesigning dp_set_m_n to receive divider values Ramalingam C
2015-06-26 13:51 ` [RFC PATCH 13/18] drm/i915: MEDIA_RR support in general DRRS state machine Ramalingam C
2015-06-26 13:51 ` [RFC PATCH 14/18] drm/i915: MEDIA_RR support in eDP DRRS module Ramalingam C
2015-06-26 13:51 ` [RFC PATCH 15/18] drm/i915: MEDIA_RR support in DSI " Ramalingam C
2015-06-26 13:52 ` [RFC PATCH 16/18] drm/i915: Filtering media playback DRRS requests Ramalingam C
2015-06-26 13:52 ` [RFC PATCH 17/18] drm/i915: Addition of downclock mode to connector modelist Ramalingam C
2015-06-26 13:52 ` [RFC PATCH 18/18] drm/i915: Connector property for DRRS capability Ramalingam C
2015-06-26 17:16 ` [RFC PATCH 00/18] Generic DRRS implementation across the encoders Daniel Vetter
2015-06-29 11:22   ` Ramalingam C
2015-06-29 16:27     ` Daniel Vetter
2015-06-30  6:29       ` Ramalingam C
2015-06-30 10:02         ` Daniel Vetter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox