libblit is a small 2D graphics library. It aims to provide an API along the lines of the X11 render extension, Plan 9's libdraw, and Go's image/draw package. Another goal is to provide a common interface that can be used with a variety of windowing systems and rendering systems.
Here are some planned rendering and display mechanisms:
- Rendering to X11 pixmap with X11 render extension, presented with X11 present extension.
- Rendering and presenting with Vulkan to
VkSurfaceKHR
(X11 or Wayland). - Rendering to SHM buffer with pixman, exported to X11 pixmap with X11 SHM extension, presented with X11 present extension.
- Rendering to SHM buffer with pixman, exported to
wl_buffer
withwl_shm
, attached towl_surface
. - Rendering to mmapped DRM dumb buffer with pixman, presented directly to display with KMS.
- Rendering to
VkImage
imported fromgbm_bo
created for scanout with GBM, exported to DMA-BUF fd, presented directly to display with KMS.
libblit is currently in the design/experimentation phase, so none of the API is final and may change dramatically without notice.
- Importing/exporting buffers (DMA-BUF, SHM).
- Synchronization, both internally and DRM syncobj for imported/exported buffers.
- Format modifier for image creation.