From: Thomas Hellstrom <thellstrom@vmware.com>
To: Daniel Stone <daniel@fooishbar.org>
Cc: "dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
Daniel Vetter <daniel.vetter@intel.com>
Subject: Re: about mmap dma-buf and sync
Date: Mon, 24 Aug 2015 18:56:12 +0200 [thread overview]
Message-ID: <55DB4CAC.6070404@vmware.com> (raw)
In-Reply-To: <CAPj87rObdZh0rgyVe0DRPsBEykOT9Ei5CBMFvm3eNWDOvbhscg@mail.gmail.com>
Hi, Daniel,
On 08/24/2015 05:52 PM, Daniel Stone wrote:
> Hi Thomas,
>
> On 24 August 2015 at 10:50, Thomas Hellstrom <thomas@shipmail.org> wrote:
>> In any case, Ideally I'd want the struct dma_buf_sync look something like
>>
>> enum dma_buf_sync_flags {
>> DMA_BUF_SYNC_READ = (1 << 0),
>> DMA_BUF_SYNC_WRITE = (2 << 0),
>> DMA_BUF_SYNC_RW = (3 << 0),
>> DMA_BUF_SYNC_START = (0 << 2),
>> DMA_BUF_SYNC_END = (1 << 2),
>>
>> DMA_BUF_SYNC_VALID_FLAGS_MASK = DMA_BUF_SYNC_RW |
>> DMA_BUF_SYNC_END
>> };
>>
>>
>> /* begin/end dma-buf functions used for userspace mmap. */
>> struct dma_buf_sync {
>> enum dma_buf_sync_flags flags;
>> __u64 x;
>> __u64 width;
>>
>> /* 2D Sync parameters */
>> __u64 stride;
>> __u64 y;
>> __u64 height;
>>
>> }
>>
>>
>> So again, why use a 2D sync in the first place when it's probably possible to batch 1D syncs in the driver?
>> It all boils down to the number of syscalls required, and also the fact that it's probably not trivial to batch sync calls in the read-write case. One can, again, argue that there might be 3D cases or other obscure sync cases,
>> but in that case, let's implement them in the future if the overhead becomes unbearable. If the sync mechanism gets established as
>> mandatory, the problem will solve itself. And at least now we cover the most common case and we don't need to add a new multiplexing
>> mechanism in the sync IOCTL since we already have one in the IOCTL mechanism. We can simply add a new sync IOCTL for new obscure sync cases if desired.
> I still don't think this ameliorates the need for batching: consider
> the case where you update two disjoint screen regions and want them
> both flushed. Either you issue two separate sync calls (which can be
> disadvantageous performance-wise on some hardware / setups), or you
> accumulate the regions and only flush later. So either two ioctls (one
> in the style of dirtyfb and one to perform the sync/flush; you can
> shortcut to assume the full buffer was damaged if the former is
> missing), or one like this:
>
> struct dma_buf_sync_2d {
> enum dma_buf_sync_flags flags;
>
> __u64 stride_bytes;
> __u32 bytes_per_pixel;
> __u32 num_regions;
>
> struct {
> __u64 x;
> __u64 y;
> __u64 width;
> __u64 height;
> } regions[];
> };
>
> Cheers,
> Daniel
Fine with me, although perhaps bytes_per_pixel is a bit redundant?
/Thomas
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2015-08-24 16:56 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <55D50442.5080102@intel.com>
2015-08-20 6:48 ` about mmap dma-buf and sync Thomas Hellstrom
2015-08-20 14:33 ` Rob Clark
2015-08-20 19:27 ` Thomas Hellstrom
2015-08-20 19:32 ` Thomas Hellstrom
2015-08-21 16:42 ` Rob Clark
2015-08-20 14:53 ` Jerome Glisse
2015-08-20 19:39 ` Thomas Hellstrom
2015-08-20 20:34 ` Jerome Glisse
2015-08-21 5:25 ` Thomas Hellstrom
2015-08-21 10:28 ` Lucas Stach
2015-08-21 10:51 ` Thomas Hellstrom
2015-08-21 13:32 ` Jerome Glisse
2015-08-21 14:15 ` Thomas Hellstrom
2015-08-21 16:00 ` Jerome Glisse
2015-08-21 22:00 ` Thomas Hellstrom
2015-08-24 1:41 ` Jerome Glisse
2015-08-24 9:59 ` Thomas Hellstrom
2015-08-21 23:06 ` Tiago Vignatti
2015-08-24 9:50 ` Thomas Hellstrom
2015-08-24 15:52 ` Daniel Stone
2015-08-24 16:56 ` Thomas Hellstrom [this message]
2015-08-24 17:04 ` Daniel Stone
2015-08-24 17:10 ` Thomas Hellstrom
2015-08-24 17:12 ` Daniel Stone
2015-08-24 17:42 ` Thomas Hellstrom
2015-08-24 17:56 ` Michael Spang
2015-08-25 5:25 ` Thomas Hellstrom
2015-08-24 18:01 ` Tiago Vignatti
2015-08-24 23:03 ` Tiago Vignatti
2015-08-25 9:02 ` Daniel Vetter
2015-08-25 9:30 ` Thomas Hellstrom
2015-08-25 16:14 ` Tiago Vignatti
2015-08-26 0:02 ` [PATCH v4] dma-buf: Add ioctls to allow userspace to flush Tiago Vignatti
2015-08-26 6:49 ` Thomas Hellstrom
2015-08-26 12:10 ` Daniel Vetter
2015-08-26 12:28 ` Thomas Hellstrom
2015-08-26 12:58 ` Daniel Vetter
2015-08-26 14:32 ` Tiago Vignatti
2015-08-26 14:50 ` Thomas Hellstrom
2015-08-26 14:51 ` Daniel Vetter
2015-08-26 14:58 ` Tiago Vignatti
2015-08-26 15:37 ` Thomas Hellstrom
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=55DB4CAC.6070404@vmware.com \
--to=thellstrom@vmware.com \
--cc=daniel.vetter@intel.com \
--cc=daniel@fooishbar.org \
--cc=dri-devel@lists.freedesktop.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.