Sharing Userspace IO Devices for fast access to multimedia hardware
|Time:||15:45 - 16:30|
|Day:||Friday 22 January 2010|
|Location:||Ilott Theatre (Town Hall)|
UIO is a Linux kernel interface for accessing devices, such that the driver logic can be implemented in userspace. It is very lightweight, and provides no mechanisms for co-ordinating access to the device, or management of resources associated with it.
We introduce UIOMux: a resource management layer for UIO devices, providing fine-grained locking, memory management and interrupt dispatch. It is used in the Linux multimedia architecture for SH-Mobile, a system-on-chip with video compression and image manipulation functions. An example will be given for managing an image rescaling and colorspace conversion hardware unit (VEU). We demonstrate how multiple VEUs can be shared, how the driver logic is implemented as a shared library (libshveu), and how this is used in higher level software such as GStreamer plugins. This architecture allows coordination of access to multiple hardware units, so that zero-copy pipelines combining the VEU with camera capture and hardware video encoding/decoding can be constructed by conventional GStreamer applications.
UIOMux is implemented as a stateful shared library, allowing in-process device access by applications without context-switching. We'll consider the advantages and disadvantages of this approach, and make comparisons with in-kernel resource management and persistent dbus services.
Conrad works with Renesas in Tokyo, designing the Linux multimedia architecture for a new line of mobile processors; and for Wikimedia Foundation, working on Ogg integration for Mozilla Firefox. He has previously worked on the free software sound editor Sweep for Pixar, and on Annodex at CSIRO.