Linux ARM-MSM sub-architecture
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel-/w4YWyX8dFk@public.gmane.org>
To: Thomas Hellstrom <thomas-4+hqylr40dJg9hUCZPvPmw@public.gmane.org>
Cc: "David Airlie" <airlied-cv59FeDIM0c@public.gmane.org>,
	linux-arm-msm
	<linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"Maarten Lankhorst"
	<maarten.lankhorst-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
	"Linux Kernel Mailing List"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	dri-devel
	<dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>,
	"Rob Clark" <robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	"Noralf Trønnes" <noralf-L59+Z2yzLopAfugRpC6u6w@public.gmane.org>,
	"Sean Paul" <seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
	"Lukasz Spintzyk"
	<lukasz.spintzyk-mKY92deTM1QHrNJx0XZkJA@public.gmane.org>,
	"Daniel Vetter" <daniel-/w4YWyX8dFk@public.gmane.org>,
	"Gustavo Padovan"
	<gustavo-THi1TnShQwVAfugRpC6u6w@public.gmane.org>,
	"Deepak Singh Rawat"
	<drawat-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>,
	freedreno
	<freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>,
	"Ville Syrjälä"
	<ville.syrjala-VuQAYsv1563Yd54FQh9/CA@public.gmane.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-4+hqylr40dJg9hUCZPvPmw@public.gmane.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
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

  parent 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
     [not found]     ` <307adb15-412a-1fe2-f116-27fe5b4a657d-4+hqylr40dJg9hUCZPvPmw@public.gmane.org>
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
     [not found]               ` <9b731e33-32fd-e7e7-952f-75b87ff26f8a-4+hqylr40dJg9hUCZPvPmw@public.gmane.org>
2018-04-04 11:46                 ` Thomas Hellstrom
     [not found]                   ` <61931c2e-4c81-0d94-fd45-f4f7dd91cb13-4+hqylr40dJg9hUCZPvPmw@public.gmane.org>
2018-04-04 12:13                     ` Daniel Vetter
     [not found]             ` <20180404095604.GD3881-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2018-04-04 11:40               ` Rob Clark
     [not found]                 ` <CAF6AEGs4BdOUQQH6N8_ywTA=8uraJNm8FGc1ZL8Pm9tqymy3Nw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-04-04 12:16                   ` Daniel Vetter
2018-04-04 13:24                     ` Rob Clark
     [not found]                       ` <CAF6AEGv2yfBzSbcAdKqZ0wJT5XoF9uqZKKJT297aib10O88=xQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
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
     [not found]                 ` <7616bf87-bd2e-5003-af35-bc95f0e2a912-4+hqylr40dJg9hUCZPvPmw@public.gmane.org>
2018-04-06  0:36                   ` Rob Clark
     [not found] ` <20180403224225.26776-1-robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2018-04-04 10:03   ` Daniel Vetter
     [not found]     ` <20180404100300.GE3881-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2018-04-04 10:21       ` Daniel Vetter
     [not found]         ` <20180404102108.GF3881-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2018-04-04 10:36           ` Maarten Lankhorst
     [not found]             ` <4976c166-32b2-75ef-ee78-7e7893dd4121-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2018-04-04 11:37               ` Rob Clark
     [not found]                 ` <CAF6AEGvozzCDtkRjCjMsZ5HtdHXbFiiVM52jZaz=VfshONzqTA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-04-04 11:49                   ` Maarten Lankhorst
     [not found]                     ` <4386c0a5-e8e4-34d7-a977-4136e1dec44f-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2018-04-04 12:05                       ` Rob Clark
2018-04-04 12:23                         ` Maarten Lankhorst
2018-04-04 12:26                         ` Daniel Vetter
     [not found]                           ` <CAKMK7uEMsUOFDWishv6L0519Z7eiz+7LcHMpQAZu1bO7i2dVDA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-04-04 12:28                             ` Maarten Lankhorst
2018-04-04 13:26                             ` Rob Clark
2018-04-04 11:35           ` Rob Clark
     [not found]             ` <CAF6AEGtowtdQmUxNF_F3B3Yow+PDB43Eb0VJ_ZqGKpVw1iZBzA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-04-04 12:18               ` Daniel Vetter
2018-04-04 17:41   ` Noralf Trønnes
     [not found]     ` <4dac69b7-b0e6-a014-1c36-1a9934f14120-L59+Z2yzLopAfugRpC6u6w@public.gmane.org>
2018-04-04 17:56       ` Daniel Vetter
     [not found]         ` <CAKMK7uFvjQF-SxPkx_G5Y_o1AHkbms=Dhkie9de3s4JyepyH1g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
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-/w4ywyx8dfk@public.gmane.org \
    --cc=airlied-cv59FeDIM0c@public.gmane.org \
    --cc=drawat-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org \
    --cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=gustavo-THi1TnShQwVAfugRpC6u6w@public.gmane.org \
    --cc=linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=lukasz.spintzyk-mKY92deTM1QHrNJx0XZkJA@public.gmane.org \
    --cc=maarten.lankhorst-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=noralf-L59+Z2yzLopAfugRpC6u6w@public.gmane.org \
    --cc=robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
    --cc=thomas-4+hqylr40dJg9hUCZPvPmw@public.gmane.org \
    --cc=ville.syrjala-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    /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