From: Mauro Carvalho Chehab <mchehab@redhat.com>
To: Tomasz Stanislawski <t.stanislaws@samsung.com>
Cc: linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org,
sumit.semwal@ti.com, jesse.barker@linaro.org, rob@ti.com,
daniel@ffwll.ch, m.szyprowski@samsung.com,
kyungmin.park@samsung.com, hverkuil@xs4all.nl,
laurent.pinchart@ideasonboard.com, pawel@osciak.com
Subject: Re: [PATCH 05/10] v4l: add buffer exporting via dmabuf
Date: Mon, 23 Jan 2012 14:42:45 -0200 [thread overview]
Message-ID: <4F1D8E05.4060109@redhat.com> (raw)
In-Reply-To: <4F1D8324.5000709@samsung.com>
Em 23-01-2012 13:56, Tomasz Stanislawski escreveu:
> Hi Mauro,
>
> On 01/23/2012 04:04 PM, Mauro Carvalho Chehab wrote:
>> Em 23-01-2012 12:42, Tomasz Stanislawski escreveu:
>>> Hi Mauro.
>>> On 01/23/2012 03:32 PM, Mauro Carvalho Chehab wrote:
>>>> Em 23-01-2012 11:51, Tomasz Stanislawski escreveu:
>>>>> This patch adds extension to V4L2 api. It allow to export a mmap buffer as file
>>>>> descriptor. New ioctl VIDIOC_EXPBUF is added. It takes a buffer offset used by
>>>>> mmap and return a file descriptor on success.
>>>>
>>>> This requires more discussions.
>>>>
>>>> The usecase for this new API seems to replace the features previously provided
>>>> by the overlay mode. There, not only the buffer were exposed to userspace, but
>>>> some control were provided, in order to control the overlay window.
>>>
>>> This ioctl was introduced to support exporting of V4L2 buffers via dma-buf interface. This framework was little common with overlay mode. Could you describe what overlay mode feature is replaced by VIDIOC_EXPBUF?
>>
>> The V4L2 API doesn't just export "raw" buffers. It provides a logic to control
>> the streams, with includes buffer settings, buffer queue/dequeue, buffer meta-data
>> (like timestamps), etc.
>
> The DMABUF buffers are handled by vb2-core. It provides control for queuing and passing streaming and metadata management (like timestamps) to the driver.
>
>>
>> I would expect to see something similar for the dma buffers.
>
> Those features may be introduced to dma-buf. As I understand queue/dequeue refers to passing
> ownership between a CPU and a driver. It is handled in vb2-core. Passing buffer between multiple
> APIs like V4L2 and DRM will be probably handled in the userspace. Currently the dma-buf provides
> only the mechanism for mapping the same memory by multiple devices.
I'm not sure if the dma-buf itself should have such meta data, but the V4L2 API
likely needs it.
>>
>> With regards to the overlay mode, this is the old way to export DMA buffers between
>> a video capture driver and a graphics adapter driver. A dma-buf interface will
>> superseed the video overlay mode, as it will provide more features. Yet, care
>> should be taken when writing the userspace interface, in order to be sure that all
>> features needed will be provided there.
>>
>
> The s5p-tv and s5p-fimc do not have support for OVERLAY mode. As I know vb2-core
> has no support for the mode, either.
True. It was decided that overlay is an old design, and a dma-buffer
oriented approach would be needed. So, the decision were to not implement
anything there, until a proper dma-buf support were not added.
> What kind of features present in OVERLAYS are
> needed in dmabuf? Note that dmabuf do not have be used only for buffers with video data.
That's a good point. Basically, Ovelay mode is supported by
those 3 ioctl's:
#define VIDIOC_G_FBUF _IOR('V', 10, struct v4l2_framebuffer)
#define VIDIOC_S_FBUF _IOW('V', 11, struct v4l2_framebuffer)
#define VIDIOC_OVERLAY _IOW('V', 14, int)
With use these structs:
struct v4l2_pix_format {
__u32 width;
__u32 height;
__u32 pixelformat;
enum v4l2_field field;
__u32 bytesperline;
__u32 sizeimage;
enum v4l2_colorspace colorspace;
__u32 priv;
};
struct v4l2_framebuffer {
__u32 capability;
__u32 flags;
void *base; /* Should be replaced by the DMA buf specifics */
struct v4l2_pix_format fmt;
};
/* Flags for the 'capability' field. Read only */
#define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
#define V4L2_FBUF_CAP_CHROMAKEY 0x0002
#define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004
#define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
#define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010
#define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020
#define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040
#define V4L2_FBUF_CAP_SRC_CHROMAKEY 0x0080
/* Flags for the 'flags' field. */
#define V4L2_FBUF_FLAG_PRIMARY 0x0001
#define V4L2_FBUF_FLAG_OVERLAY 0x0002
#define V4L2_FBUF_FLAG_CHROMAKEY 0x0004
#define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008
#define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010
#define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020
#define V4L2_FBUF_FLAG_SRC_CHROMAKEY 0x0040
It should be noticed that devices that support OVERLAY can provide
data on both dma-buffer sharing and via the standard MMAP/read() mode at
the same time, each with a different video format. So, the VIDIOC_S_FBUF
ioctl needs to set the pixel format, and image size for the overlay,
while the other ioctl's set it for the MMAP (or read) mode.
Buffer queue/dequeue happens internally, and can be started/stopped via
a VIDIOC_OVERLAY call.
>>>>
>>>> Please start a separate thread about that, explaining how are you imagining that
>>>> a V4L2 application would use such ioctl.
>
> I will post a simple application that does buffer sharing between two V4L2 devices (camera and TV output).
Ok.
>>>
>>> This patch is essential for full implementation of support for DMABUF framework in V4L2. Therefore the patch cannot be moved to separate thread.
>>
>> I'm not proposing to move the patch to a separate thread. All I'm saying
>> is that the API extensions for dmabuf requires its own separate discussions.
>
> I agree. However DMA patches plays important role in this PoC patchset so I decided to keep patches to together. Moreover I wanted this code to compile successfully.
>
> I prefer to have a good reason for adding extension before proposing it on the mailing list. The DMA buffer sharing seams to be a right reason for adding dma_get_pages but comments for V4L2/Linaro people is needed.
>
>>
>> I couldn't guess, just from your patches, what ioctl's a V4L2 application
>> like tvtime or xawtv would use the DMABUF.
>
> DMABUF is dedicated for application that use streaming between at least two devices.
> Especially if those devices are controlled by different APIs, like DRM and V4L2.
> It would be probably used in the middle-ware like gstreamer or OpenMAX.
This is what the X11 v4l extension driver does: it shares DMA buffers between V4L2
and DRM. The extension currently relies on XV extension, simply because this is what
were available at the time the extension was written. I didn't have any time yet
to port it to use something more modern.
It is probably a good idea for you to take a look on it, when writing the API bits.
Its source is available at:
http://cgit.freedesktop.org/xorg/driver/xf86-video-v4l/
Regards,
Mauro
next prev parent reply other threads:[~2012-01-23 16:43 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-23 13:51 [PATCH 00/10] Integration of videobuf2 with dmabuf Tomasz Stanislawski
2012-01-23 13:51 ` [PATCH 01/10] arm: dma: support for dma_get_pages Tomasz Stanislawski
2012-01-23 13:51 ` [PATCH 02/10] [media] media: vb2: remove plane argument from call_memop and cleanup mempriv usage Tomasz Stanislawski
2012-01-23 13:51 ` [PATCH 03/10] media: vb2: add prepare/finish callbacks to allocators Tomasz Stanislawski
2012-02-03 15:42 ` Pawel Osciak
2012-01-23 13:51 ` [PATCH 04/10] v4l: vb2: fixes for DMABUF support Tomasz Stanislawski
2012-01-23 14:22 ` Mauro Carvalho Chehab
2012-01-23 14:32 ` Tomasz Stanislawski
2012-01-23 14:52 ` Mauro Carvalho Chehab
2012-01-23 15:25 ` Tomasz Stanislawski
2012-01-23 16:06 ` Mauro Carvalho Chehab
2012-01-23 16:37 ` Tomasz Stanislawski
2012-01-23 16:51 ` Mauro Carvalho Chehab
2012-01-25 5:35 ` Semwal, Sumit
2012-01-25 10:34 ` Tomasz Stanislawski
2012-01-25 14:09 ` Semwal, Sumit
2012-01-23 13:51 ` [PATCH 05/10] v4l: add buffer exporting via dmabuf Tomasz Stanislawski
2012-01-23 14:32 ` Mauro Carvalho Chehab
2012-01-23 14:37 ` Laurent Pinchart
2012-01-23 14:42 ` Tomasz Stanislawski
2012-01-23 15:04 ` Mauro Carvalho Chehab
2012-01-23 15:56 ` Tomasz Stanislawski
2012-01-23 16:42 ` Mauro Carvalho Chehab [this message]
2012-01-23 16:57 ` V4L2 Overlay mode replacement by dma-buf - was: " Mauro Carvalho Chehab
2012-01-24 0:11 ` Clark, Rob
2012-01-24 9:44 ` Laurent Pinchart
2012-01-24 11:07 ` [Linaro-mm-sig] " Subash Patel
2012-01-24 12:06 ` Tomasz Stanislawski
2012-01-27 13:40 ` Subash Patel
2012-01-30 14:16 ` Laurent Pinchart
2012-01-26 9:48 ` Tomasz Stanislawski
2012-02-03 15:47 ` Pawel Osciak
2012-02-03 15:50 ` Pawel Osciak
2012-01-23 13:51 ` [PATCH 06/10] v4l: vb2: " Tomasz Stanislawski
2012-01-23 13:51 ` [PATCH 07/10] v4l: vb2: remove dma-contig allocator Tomasz Stanislawski
2012-01-23 14:24 ` Mauro Carvalho Chehab
2012-01-23 13:51 ` [PATCH 08/10] v4l: vb2-dma-contig: code refactoring, support for DMABUF exporting Tomasz Stanislawski
2012-01-23 14:26 ` Mauro Carvalho Chehab
2012-01-23 14:35 ` Tomasz Stanislawski
2012-01-23 14:43 ` Mauro Carvalho Chehab
2012-01-23 14:35 ` [PATCH] media: vb2-memops: Export vb2_get_vma symbol Laurent Pinchart
2012-01-23 14:44 ` Tomasz Stanislawski
2012-03-21 11:12 ` Laurent Pinchart
2012-01-23 13:51 ` [PATCH 09/10] v4l: fimc: integrate capture i-face with dmabuf Tomasz Stanislawski
2012-01-23 13:51 ` [PATCH 10/10] v4l: s5p-tv: mixer: integrate " Tomasz Stanislawski
2012-01-23 14:37 ` [PATCH 00/10] Integration of videobuf2 " Mauro Carvalho Chehab
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=4F1D8E05.4060109@redhat.com \
--to=mchehab@redhat.com \
--cc=daniel@ffwll.ch \
--cc=hverkuil@xs4all.nl \
--cc=jesse.barker@linaro.org \
--cc=kyungmin.park@samsung.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-media@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=pawel@osciak.com \
--cc=rob@ti.com \
--cc=sumit.semwal@ti.com \
--cc=t.stanislaws@samsung.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;
as well as URLs for NNTP newsgroup(s).