All of lore.kernel.org
 help / color / mirror / Atom feed
From: tom.cooksey@arm.com (Tom Cooksey)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC 1/1] drm/pl111: Initial drm/kms driver for pl111
Date: Tue, 13 Aug 2013 15:35:19 +0100	[thread overview]
Message-ID: <000801ce9832$562a42c0$027ec840$@cooksey@arm.com> (raw)
In-Reply-To: <000701ce9526$4bb43440$e31c9cc0$@cooksey@arm.com>

> > > > So in the above, after X receives the second DRI2SwapBuffers, it
> > > > doesn't need to get scheduled again for the next frame to be both
> > > > rendered by the GPU and issued to the display for scanout.
> > >
> > > well, this is really only an issue if you are so loaded that you
> > > don't get a chance to schedule for ~16ms.. which is pretty long
> > > time.
> 
> Yes - it really is 16ms (minus interrupt/workqueue latency) isn't it?
> Hmmm, that does sound very long. Will try out some experiments and see.

We're looking at moving the flip queue into the DDX driver, however
it's not as straight-forward as I thought. With the current design,
all rate-limiting happens on the client side. So even if you only have
double buffering, using KDS you can queue up as many asynchronous
GPU-render/scan-out pairs as you want. It's up to EGL in the client
application to figure out there's a lot of frames in-flight and so
should probably block the application's render thread in
eglSwapBuffers to let the GPU and/or display catch up a bit.

If we only allow a single outstanding page-flip job in DRM, there'd be
a race if we returned a buffer to the client which had an outstanding
page-flip queued up in the DDX: The client could issue a render job to
the buffer just as the DDX processed the page-flip from the queue,
making the scan-out block until the GPU rendered the next frame. It
would also mean the previous frame would have been lost as it never
got scanned out before the GPU rendered the next-next frame to it.

So instead, I think we'll have to block (suspend?) a client in 
ScheduleSwap if the next buffer it would obtain with DRI2GetBuffers
has an outstanding page-flip in the user-space queue. We then wake
the client up again _after_ we get the page-flip event for the
previous page flip and have issued the page-flip to the next buffer
to the DRM. That way the DRM display driver has already registered its
intention to use the buffer with KDS before the client ever gets hold
of it.

Note: I say KDS here, but I assume the same issues will apply on any
implicit buffer-based synchronization. I.e. dma-fence.

It's not really a problem I don't think, but mention it to see if you
can see a reason why the above wouldn't work before we go and
implement it - it's a fairly big change to the DDX. Can you see any
issues with it? PrepareAccess gets interesting...



Cheers,

Tom

  parent reply	other threads:[~2013-08-13 14:35 UTC|newest]

Thread overview: 131+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-25 17:17 [RFC 0/1] drm/pl111: Initial drm/kms driver for pl111 tom.cooksey
2013-07-25 17:17 ` tom.cooksey
2013-07-25 17:17 ` tom.cooksey at arm.com
2013-07-25 17:17 ` [RFC 1/1] " tom.cooksey
2013-08-07 16:17   ` Rob Clark
2013-08-07 16:46     ` Daniel Vetter
2013-08-07 16:46       ` Daniel Vetter
2013-08-07 16:46       ` Daniel Vetter
2013-08-09 16:15       ` Tom Cooksey
2013-08-09 16:15       ` Tom Cooksey
2013-08-09 16:15       ` Tom Cooksey
     [not found]       ` <520515b0.88b70e0a.3ecd.1004SMTPIN_ADDED_BROKEN@mx.google.com>
2013-08-09 16:34         ` Rob Clark
2013-08-09 16:34           ` Rob Clark
2013-08-09 16:34           ` Rob Clark
2013-08-09 16:57           ` Daniel Vetter
2013-08-09 16:57             ` Daniel Vetter
2013-08-09 16:57             ` Daniel Vetter
2013-08-09 17:31             ` Tom Cooksey
2013-08-13 14:35               ` Tom Cooksey
2013-08-13 14:35               ` Tom Cooksey [this message]
2013-08-13 14:35               ` Tom Cooksey
2013-08-09 17:31             ` Tom Cooksey
2013-08-09 17:31             ` Tom Cooksey
     [not found]             ` <5205277e.84320f0a.1cdf.ffff8816SMTPIN_ADDED_BROKEN@mx.google.com>
2013-08-10 12:30               ` Rob Clark
2013-08-10 12:30                 ` Rob Clark
2013-08-10 12:30                 ` Rob Clark
     [not found]             ` <520a4435.070a0e0a.4fce.ffff9731SMTPIN_ADDED_BROKEN@mx.google.com>
2013-08-13 14:58               ` Rob Clark
2013-08-13 14:58                 ` Rob Clark
2013-08-13 14:58                 ` Rob Clark
2013-08-14 14:59                 ` Tom Cooksey
2013-08-14 14:59                 ` Tom Cooksey
2013-08-14 14:59                 ` Tom Cooksey
2013-08-10  4:56       ` Inki Dae
2013-07-25 18:21 ` [RFC 0/1] " Rob Clark
2013-07-25 18:21   ` Rob Clark
2013-07-25 18:21   ` Rob Clark
2013-07-26 14:06   ` Pawel Moll
2013-07-26 14:06     ` Pawel Moll
2013-07-26 14:06     ` Pawel Moll
2013-07-26 14:21     ` Rob Clark
2013-07-26 14:21       ` Rob Clark
2013-07-26 14:21       ` Rob Clark
2013-07-26 14:41       ` Pawel Moll
2013-07-26 14:41         ` Pawel Moll
2013-07-26 14:41         ` Pawel Moll
2013-07-26 14:14   ` Russell King - ARM Linux
2013-07-26 14:14     ` Russell King - ARM Linux
2013-07-26 14:14     ` Russell King - ARM Linux
2013-07-26 14:24     ` Rob Clark
2013-07-26 14:24       ` Rob Clark
2013-07-26 14:24       ` Rob Clark
2013-07-26 15:58   ` Tom Cooksey
2013-07-26 15:58   ` Tom Cooksey
2013-07-26 15:58   ` Tom Cooksey
     [not found]   ` <51f29cd1.e686440a.66b2.fffff9d5SMTPIN_ADDED_BROKEN@mx.google.com>
2013-07-26 18:56     ` Daniel Vetter
2013-07-26 18:56       ` Daniel Vetter
2013-07-26 18:56       ` Daniel Vetter
     [not found]   ` <51f29ccd.f014b40a.34cc.ffffca2aSMTPIN_ADDED_BROKEN@mx.google.com>
2013-07-29 14:58     ` Rob Clark
2013-07-29 14:58       ` Rob Clark
2013-07-29 14:58       ` Rob Clark
2013-08-05 17:10       ` Tom Cooksey
2013-08-05 17:10       ` Tom Cooksey
2013-08-05 17:10       ` Tom Cooksey
     [not found]       ` <51ffdc7e.06b8b40a.2cc8.0fe0SMTPIN_ADDED_BROKEN@mx.google.com>
2013-08-05 18:07         ` Rob Clark
2013-08-05 18:07           ` Rob Clark
2013-08-05 18:07           ` Rob Clark
2013-08-06 11:31           ` Tom Cooksey
2013-08-06 11:31           ` Tom Cooksey
2013-08-06 11:31           ` Tom Cooksey
2013-08-06 12:18             ` [Linaro-mm-sig] " Lucas Stach
2013-08-06 12:18               ` Lucas Stach
2013-08-06 12:18               ` Lucas Stach
2013-08-06 14:14               ` Rob Clark
2013-08-06 14:14                 ` Rob Clark
2013-08-06 14:14                 ` Rob Clark
2013-08-06 14:36                 ` Lucas Stach
2013-08-06 14:36                   ` Lucas Stach
2013-08-06 14:36                   ` Lucas Stach
2013-08-06 14:59                   ` Rob Clark
2013-08-06 14:59                     ` Rob Clark
2013-08-06 14:59                     ` Rob Clark
2013-08-06 15:28               ` Daniel Vetter
2013-08-06 15:28                 ` Daniel Vetter
2013-08-06 15:28                 ` Daniel Vetter
2013-08-06 15:28                 ` Daniel Vetter
2013-09-14 21:33             ` Daniel Stone
2013-09-14 21:33               ` Daniel Stone
2013-09-14 21:33               ` Daniel Stone
     [not found]           ` <5200deb3.0b24b40a.3b26.ffffbadeSMTPIN_ADDED_BROKEN@mx.google.com>
2013-08-06 12:15             ` Rob Clark
2013-08-06 12:15               ` Rob Clark
2013-08-06 12:15               ` Rob Clark
2013-08-06 14:03               ` Tom Cooksey
2013-08-06 14:03               ` Tom Cooksey
2013-08-06 14:03               ` Tom Cooksey
     [not found]               ` <52010257.245fc20a.6ff8.1cfdSMTPIN_ADDED_BROKEN@mx.google.com>
2013-08-06 14:40                 ` Rob Clark
2013-08-06 14:40                   ` Rob Clark
2013-08-06 14:40                   ` Rob Clark
2013-08-06 17:38                   ` Tom Cooksey
2013-08-06 17:38                   ` Tom Cooksey
2013-08-06 17:38                   ` Tom Cooksey
     [not found]                   ` <52013482.e107c20a.27f9.ffffa718SMTPIN_ADDED_BROKEN@mx.google.com>
2013-08-06 19:06                     ` Rob Clark
2013-08-06 19:06                       ` Rob Clark
2013-08-06 19:06                       ` Rob Clark
2013-08-07 17:33                       ` Tom Cooksey
2013-08-07 17:33                       ` Tom Cooksey
2013-08-07 17:33                       ` Tom Cooksey
     [not found]                       ` <520284fe.a16ec20a.2d3c.6e19SMTPIN_ADDED_BROKEN@mx.google.com>
2013-08-07 17:56                         ` [Linaro-mm-sig] " Alex Deucher
2013-08-07 17:56                           ` Alex Deucher
2013-08-07 17:56                           ` Alex Deucher
     [not found]                       ` <520284d6.07300f0a.72a4.1623SMTPIN_ADDED_BROKEN@mx.google.com>
2013-08-07 18:12                         ` Rob Clark
2013-08-07 18:12                           ` Rob Clark
2013-08-07 18:12                           ` Rob Clark
2013-08-09 16:15                           ` Tom Cooksey
2013-08-09 16:15                           ` Tom Cooksey
2013-08-09 16:15                           ` Tom Cooksey
     [not found]                           ` <520515b9.87370f0a.16e6.2380SMTPIN_ADDED_BROKEN@mx.google.com>
2013-08-09 17:12                             ` Rob Clark
2013-08-09 17:12                               ` Rob Clark
2013-08-09 17:12                               ` Rob Clark
2013-08-14 15:01                               ` Tom Cooksey
2013-08-14 15:01                               ` Tom Cooksey
2013-08-14 15:01                               ` Tom Cooksey
2013-08-07  4:23               ` John Stultz
2013-08-07  4:23                 ` John Stultz
2013-08-07  4:23                 ` John Stultz
2013-08-07  4:23                 ` John Stultz
2013-08-07 13:27                 ` Rob Clark
2013-08-07 13:27                   ` Rob Clark
2013-08-07 13:27                   ` Rob Clark
2013-08-07  3:57       ` John Stultz
2013-08-07  3:57         ` John Stultz
2013-08-07  3:57         ` John Stultz

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='000801ce9832$562a42c0$027ec840$@cooksey@arm.com' \
    --to=tom.cooksey@arm.com \
    --cc=linux-arm-kernel@lists.infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.