From: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
To: Kieran Bingham <kieran.bingham@ideasonboard.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
linux-media@vger.kernel.org,
Guennadi Liakhovetski <g.liakhovetski@gmx.de>,
Olivier BRAUN <olivier.braun@stereolabs.com>,
Troy Kisky <troy.kisky@boundarydevices.com>,
Randy Dunlap <rdunlap@infradead.org>,
Philipp Zabel <philipp.zabel@gmail.com>
Subject: Re: [PATCH v4 0/6] Asynchronous UVC
Date: Tue, 15 May 2018 16:22:33 -0300 [thread overview]
Message-ID: <20180515162233.2937906e@vento.lan> (raw)
In-Reply-To: <cover.3cb9065dabdf5d455da508fb4109201e626d5ee7.1522168131.git-series.kieran.bingham@ideasonboard.com>
Em Tue, 27 Mar 2018 17:45:57 +0100
Kieran Bingham <kieran.bingham@ideasonboard.com> escreveu:
> The Linux UVC driver has long provided adequate performance capabilities for
> web-cams and low data rate video devices in Linux while resolutions were low.
>
> Modern USB cameras are now capable of high data rates thanks to USB3 with
> 1080p, and even 4k capture resolutions supported.
>
> Cameras such as the Stereolabs ZED (bulk transfers) or the Logitech BRIO
> (isochronous transfers) can generate more data than an embedded ARM core is
> able to process on a single core, resulting in frame loss.
>
> A large part of this performance impact is from the requirement to
> ‘memcpy’ frames out from URB packets to destination frames. This unfortunate
> requirement is due to the UVC protocol allowing a variable length header, and
> thus it is not possible to provide the target frame buffers directly.
>
> Extra throughput is possible by moving the actual memcpy actions to a work
> queue, and moving the memcpy out of interrupt context thus allowing work tasks
> to be scheduled across multiple cores.
>
> This series has been tested on both the ZED and BRIO cameras on arm64
> platforms, and with thanks to Randy Dunlap, a Dynex 1.3MP Webcam, a Sonix USB2
> Camera, and a built in Toshiba Laptop camera, and with thanks to Philipp Zabel
> for testing on a Lite-On internal Laptop Webcam, Logitech C910 (USB2 isoc),
> Oculus Sensor (USB3 isoc), and Microsoft HoloLens Sensors (USB3 bulk).
>
> As far as I am aware iSight devices, and devices which use UVC to encode data
> (output device) have not yet been tested - but should find no ill effect (at
> least not until they are tested of course :D )
>
> Tested-by: Randy Dunlap <rdunlap@infradead.org>
> Tested-by: Philipp Zabel <philipp.zabel@gmail.com>
>
> v2:
> - Fix race reported by Guennadi
>
> v3:
> - Fix similar race reported by Laurent
> - Only queue work if required (encode/isight do not queue work)
> - Refactor/Rename variables for clarity
>
> v4:
> - (Yet another) Rework of the uninitialise path.
> This time to hopefully clean up the shutdown races for good.
> use usb_poison_urb() to halt all URBs, then flush the work queue
> before freeing.
> - Rebase to latest linux-media/master
Kieran/Laurent,
What's the status of this patchset?
Regards,
Mauro
>
> Kieran Bingham (6):
> media: uvcvideo: Refactor URB descriptors
> media: uvcvideo: Convert decode functions to use new context structure
> media: uvcvideo: Protect queue internals with helper
> media: uvcvideo: queue: Simplify spin-lock usage
> media: uvcvideo: queue: Support asynchronous buffer handling
> media: uvcvideo: Move decode processing to process context
>
> drivers/media/usb/uvc/uvc_isight.c | 6 +-
> drivers/media/usb/uvc/uvc_queue.c | 102 +++++++++++++----
> drivers/media/usb/uvc/uvc_video.c | 180 +++++++++++++++++++++---------
> drivers/media/usb/uvc/uvcvideo.h | 59 ++++++++--
> 4 files changed, 266 insertions(+), 81 deletions(-)
>
> base-commit: a77cfdf6bd06eef0dadea2b541a7c01502b1b4f6
Thanks,
Mauro
next prev parent reply other threads:[~2018-05-15 19:22 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-27 16:45 [PATCH v4 0/6] Asynchronous UVC Kieran Bingham
2018-03-27 16:45 ` [PATCH v4 1/6] media: uvcvideo: Refactor URB descriptors Kieran Bingham
2018-03-27 16:45 ` [PATCH v4 2/6] media: uvcvideo: Convert decode functions to use new context structure Kieran Bingham
2018-03-27 16:46 ` [PATCH v4 3/6] media: uvcvideo: Protect queue internals with helper Kieran Bingham
2018-03-27 16:46 ` [PATCH v4 4/6] media: uvcvideo: queue: Simplify spin-lock usage Kieran Bingham
2018-07-30 19:57 ` Laurent Pinchart
2018-11-06 15:10 ` Kieran Bingham
2018-03-27 16:46 ` [PATCH v4 5/6] media: uvcvideo: queue: Support asynchronous buffer handling Kieran Bingham
2018-03-27 16:46 ` [PATCH v4 6/6] media: uvcvideo: Move decode processing to process context Kieran Bingham
2018-06-04 12:09 ` Guennadi Liakhovetski
2018-06-04 12:34 ` Kieran Bingham
2018-07-30 22:11 ` Laurent Pinchart
2018-08-07 9:54 ` Tomasz Figa
2018-08-07 23:06 ` Laurent Pinchart
2018-08-07 23:13 ` Laurent Pinchart
2018-08-08 3:50 ` Tomasz Figa
2018-08-08 13:49 ` Kieran Bingham
2018-11-06 15:13 ` Kieran Bingham
2018-11-07 4:38 ` Tomasz Figa
2018-05-15 19:22 ` Mauro Carvalho Chehab [this message]
2018-05-15 20:19 ` [PATCH v4 0/6] Asynchronous UVC Kieran Bingham
2018-05-15 21:45 ` 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=20180515162233.2937906e@vento.lan \
--to=mchehab+samsung@kernel.org \
--cc=g.liakhovetski@gmx.de \
--cc=kieran.bingham@ideasonboard.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=olivier.braun@stereolabs.com \
--cc=philipp.zabel@gmail.com \
--cc=rdunlap@infradead.org \
--cc=troy.kisky@boundarydevices.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