All plugins are loaded dynamically and can be extended and upgraded independently. Allow binary only plugins plugins are shared libraries that are loaded at runtime. Special care has been taking into making the plugin completely self contained. This is in the operations, specification of the capabilities of the plugin and properties. Connections between plugins are extremely light-weight.
Data can travel the pipeline with minimal overhead.
Provide a mechanism to directly work on the target memory. A plugin can for example directly write to the X servers shared mem. Buffers can also point to arbitrary memory like kernel memory. Refcounting and copy on write to minimize the amount of memcpy. Subbufers to efficiently split the data in a buffer.