public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: Thomas Hellstrom <thomas@shipmail.org>
Cc: "Daniel Vetter" <daniel@ffwll.ch>,
	"Rob Clark" <robdclark@gmail.com>,
	"Noralf Trønnes" <noralf@tronnes.org>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	freedreno <freedreno@lists.freedesktop.org>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	"Ville Syrjälä" <ville.syrjala@linux.intel.com>,
	"Lukasz Spintzyk" <lukasz.spintzyk@displaylink.com>,
	"Deepak Singh Rawat" <drawat@vmware.com>,
	"Gustavo Padovan" <gustavo@padovan.org>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Sean Paul" <seanpaul@chromium.org>,
	"David Airlie" <airlied@linux.ie>,
	"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>
Subject: Re: [RFC] drm/atomic+msm: add helper to implement legacy dirtyfb
Date: Wed, 4 Apr 2018 10:43:20 +0200	[thread overview]
Message-ID: <20180404084320.GA3881@phenom.ffwll.local> (raw)
In-Reply-To: <307adb15-412a-1fe2-f116-27fe5b4a657d@shipmail.org>

On Wed, Apr 04, 2018 at 10:22:21AM +0200, Thomas Hellstrom wrote:
> Hi,
> 
> On 04/04/2018 08:58 AM, Daniel Vetter wrote:
> > On Wed, Apr 4, 2018 at 12:42 AM, Rob Clark <robdclark@gmail.com> wrote:
> > > Add an atomic helper to implement dirtyfb support.  This is needed to
> > > support DSI command-mode panels with x11 userspace (ie. when we can't
> > > rely on pageflips to trigger a flush to the panel).
> > > 
> > > To signal to the driver that the async atomic update needs to
> > > synchronize with fences, even though the fb didn't change, the
> > > drm_atomic_state::dirty flag is added.
> > > 
> > > Signed-off-by: Rob Clark <robdclark@gmail.com>
> > > ---
> > > Background: there are a number of different folks working on getting
> > > upstream kernel working on various different phones/tablets with qcom
> > > SoC's.. many of them have command mode panels, so we kind of need a
> > > way to support the legacy dirtyfb ioctl for x11 support.
> > > 
> > > I know there is work on a proprer non-legacy atomic property for
> > > userspace to communicate dirty-rect(s) to the kernel, so this can
> > > be improved from triggering a full-frame flush once that is in
> > > place.  But we kinda needa a stop-gap solution.
> > > 
> > > I had considered an in-driver solution for this, but things get a
> > > bit tricky if userspace ands up combining dirtyfb ioctls with page-
> > > flips, because we need to synchronize setting various CTL.FLUSH bits
> > > with setting the CTL.START bit.  (ie. really all we need to do for
> > > cmd mode panels is bang CTL.START, but is this ends up racing with
> > > pageflips setting FLUSH bits, then bad things.)  The easiest soln
> > > is to wrap this up as an atomic commit and rely on the worker to
> > > serialize things.  Hence adding an atomic dirtyfb helper.
> > > 
> > > I guess at least the helper, with some small addition to translate
> > > and pass-thru the dirty rect(s) is useful to the final atomic dirty-
> > > rect property solution.  Depending on how far off that is, a stop-
> > > gap solution could be useful.
> > Adding Noralf, who iirc already posted the full dirty helpers already somewhere.
> > -Daniel
> 
> I've asked Deepak to RFC the core changes suggested for the full dirty blob
> on dri-devel. It builds on DisplayLink's suggestion, with a simple helper to
> get to the desired coordinates.
> 
> One thing to perhaps discuss is how we would like to fit this with
> front-buffer rendering and the dirty ioctl. In the page-flip context, the
> dirty rects, like egl's swapbuffer_with_damage is a hint to restrict the
> damage region that can be fully ignored by the driver, new content is
> indicated by a new framebuffer.
> 
> We could do the same for frontbuffer rendering: Either set a dirty flag like
> you do here, or provide a content_age state member. Since we clear the dirty
> flag on state copies, I guess that would be sufficient. The blob rectangles
> would then become a hint to restrict the damage region.

I'm not entirely following here - I thought for frontbuffer rendering the
dirty rects have always just been a hint, and that the driver was always
free to re-upload the entire buffer to the screen.

And through a helper like Rob's proposing here (and have floated around in
different versions already) we'd essentially map a frontbuffer dirtyfb
call to a fake flip with dirty rect. Manual upload drivers already need to
upload the entire screen if they get a flip, since some userspace uses
that to flush out frontbuffer rendering (instead of calling dirtyfb).

So from that pov the new dirty flag is kinda not necessary imo.

> Another approach would be to have the presence of dirty rects without
> framebuffer change to indicate frontbuffer rendering.
> 
> I think I like the first approach best, although it may be tempting for
> user-space apps to just set the dirty bit instead of providing the full
> damage region.

Or I'm not following you here, because I don't quite see the difference
between dirtyfb and a flip.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

  reply	other threads:[~2018-04-04  8:43 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-03 22:42 [RFC] drm/atomic+msm: add helper to implement legacy dirtyfb Rob Clark
2018-04-04  6:58 ` Daniel Vetter
2018-04-04  8:22   ` Thomas Hellstrom
2018-04-04  8:43     ` Daniel Vetter [this message]
2018-04-04  9:10       ` Thomas Hellstrom
2018-04-04  9:56         ` Daniel Vetter
2018-04-04 10:28           ` Thomas Hellstrom
2018-04-04 11:46             ` Thomas Hellstrom
2018-04-04 12:13               ` Daniel Vetter
2018-04-04 11:40           ` Rob Clark
2018-04-04 12:16             ` Daniel Vetter
2018-04-04 13:24               ` Rob Clark
2018-04-04 13:28                 ` Daniel Vetter
2018-04-05 13:30           ` Thomas Hellstrom
2018-04-05 13:35             ` Daniel Vetter
2018-04-06  0:19               ` Deepak Singh Rawat
2018-04-06  0:36             ` Rob Clark
2018-04-04 10:03 ` Daniel Vetter
2018-04-04 10:21   ` Daniel Vetter
2018-04-04 10:36     ` Maarten Lankhorst
2018-04-04 11:37       ` Rob Clark
2018-04-04 11:49         ` Maarten Lankhorst
2018-04-04 12:05           ` Rob Clark
2018-04-04 12:23             ` Maarten Lankhorst
2018-04-04 12:26             ` Daniel Vetter
2018-04-04 12:28               ` Maarten Lankhorst
2018-04-04 13:26               ` Rob Clark
2018-04-04 11:35     ` Rob Clark
2018-04-04 12:18       ` Daniel Vetter
2018-04-04 17:41 ` Noralf Trønnes
2018-04-04 17:56   ` Daniel Vetter
2018-04-04 18:52     ` Noralf Trønnes
2018-04-04 19:19   ` Rob Clark

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=20180404084320.GA3881@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=airlied@linux.ie \
    --cc=drawat@vmware.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=gustavo@padovan.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lukasz.spintzyk@displaylink.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=noralf@tronnes.org \
    --cc=robdclark@gmail.com \
    --cc=seanpaul@chromium.org \
    --cc=thomas@shipmail.org \
    --cc=ville.syrjala@linux.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