From: Daniel Vetter <daniel@ffwll.ch>
To: Ramalingam C <ramalingam.c@intel.com>
Cc: paulo.r.zanoni@intel.com, daniel.vetter@ffwll.ch,
intel-gfx@lists.freedesktop.org, rodrigo.vivi@intel.com
Subject: Re: [RFC PATCH 00/18] Generic DRRS implementation across the encoders
Date: Tue, 30 Jun 2015 12:02:07 +0200 [thread overview]
Message-ID: <20150630100207.GM30960@phenom.ffwll.local> (raw)
In-Reply-To: <5592374A.9080601@intel.com>
On Tue, Jun 30, 2015 at 11:59:30AM +0530, Ramalingam C wrote:
>
> On Monday 29 June 2015 09:57 PM, Daniel Vetter wrote:
> >On Mon, Jun 29, 2015 at 04:52:14PM +0530, Ramalingam C wrote:
> >>On Friday 26 June 2015 10:46 PM, Daniel Vetter wrote:
> >>>On Fri, Jun 26, 2015 at 07:21:44PM +0530, Ramalingam C wrote:
> >>>- Static DRRS and generalized seamless DRRS are imo separate features and
> >>> we should split the patch series. seamless DRRS is already implemented
> >>> using the fb tracking, maybe extended with some hints to userspace.
> >>>
> >>> Static DRRS otoh is just a modeset with a different clock (plus a better
> >>> internal implementation to avoid flicker). So from that pov two
> >>> completely different features, both in the implementation and the
> >>> userspace ABI.
> >>Yup. Static is not even in our development radar :). All the code that I
> >>have shared is
> >>concerned only with seamless DRRS and it's two usecase scenarios( Idleness
> >>and Content based).
> >>Mentioned the Static DRRS in cover letter, just to give the two different
> >>DRRS supports available in general.
> >Hm then I'm confused how the content based DRRS is supposed to work. I
> >thought userspace requires a precise vrefresh rate (adjusted to content,
> >within the limits of what the panel can do ofc) and the kernel tries to
> >obey. That's what I consider static DRRS, i.e. userspace makes a fixed
> >request, kernel executes it exactly.
> If panel does support the static DRRS only and you are ok to do a complete
> modeset on a usecase then
> Whatever you have explained stands true for content based DRRS. I believe
> its another complete modeset w.r.t kernel.
> Which I am not addressing in this RFC.
>
> But If the panel supports seamless DRRS and userspace want a precise
> vrefresh rate (adjusted to the
> content, within the limits of what panel can do) then kernel can achieve the
> vrefresh change seamlessly
> (the way its done with Idleness scenario). This is the second usecase of
> seamless DRRS support of the panel.
> Infact We have implemented this and verified on android already for video
> playback.
> >
> >Seamless DRRS for me is when the kernel tries to change vrefresh when
> >everything is idle behind everyone's back.
> Seamless DRRS is a capability of the host and the panel. Usercase definition
> is upto us to do.
> >
> >I'm doing this split since seamless doesn't require new userspace
> >interfaces (we just use the frontbuffer tracking system), whereas static
> >needs explicit action from userspace and hence the dreaded userspace ABI
> >problem starts to kick in.
> Based on above usecase of the seamless drrs we need a fast modeset path
> which I have addressed at the RFC PATCH 16/18.
> And drm connector property to expose the SEAMLESS DRRS capability to the
> userspace. implemented at RFC PATCH 18/18
Summarizing our discussion from the mtg, there's 3 different cases here:
- transparent seamless DRRS where the kernel lowers vrefresh on idle
behind userspace's back. This is what we currently have integrated. No
new ABI required.
- seamless DRRS but upon explicit request from userspace. This is
essentially just a mode change, but excuted by the kernel without any
blanking or otherwise stalling. We can reuse the modeset ioctls for
this, just need a fast path (similar to the fast pfit update Maarten
already has in his atomic branches). For figuring out whether seamless
is possible we could reuse the atomic TEST_ONLY and ALLOW_MODESET flags.
Good chances that we don't need a new ABI.
- just changing the vrefresh of the panel, with full modeset/blanking. We
have the interface for that (we can do modesets), but currently our
panel compute_config code hardcodes the vrefresh to the preferred mode
of the panel. We need to change that and pick the vrefresh userspace
asked for. I think from an implementation pov it makes sense to first
fix up this case, and then in a 2nd step implement the seamless DRRS for
explicit mode changes.
Cheers, Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
prev parent reply other threads:[~2015-06-30 9:59 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
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 message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150630100207.GM30960@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=daniel.vetter@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
--cc=paulo.r.zanoni@intel.com \
--cc=ramalingam.c@intel.com \
--cc=rodrigo.vivi@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox