Expand description
DMA-BUF Protocol (zwp_linux_dmabuf_v1)
Provides zero-copy buffer sharing between GPU and compositor.
On VeridianOS, DMA-BUF handles are virtio-gpu resource IDs rather than Linux file descriptors. The protocol framework remains compatible with the Wayland zwp_linux_dmabuf_v1 specification, but the underlying buffer import mechanism uses virtio-gpu resource handles instead of dmabuf fds. This allows GPU-rendered content to be composited without copying pixel data through the CPU.
§Buffer lifecycle
- Client calls
create_params()to get a params builder - Client calls
add_plane()for each plane (most formats need 1) - Client calls
create_buffer()to finalize and import the buffer - The compositor can then sample from the imported buffer directly
Modules§
- fourcc
- Common DRM fourcc pixel format codes.
- modifiers
- DRM format modifiers describe GPU-specific memory tiling layouts.
Structs§
- DmaBuf
Buffer - Imported DMA-BUF buffer ready for compositor use.
- DmaBuf
Format - DMA-BUF format descriptor (fourcc + modifier pair).
- DmaBuf
Manager - DMA-BUF manager.
- DmaBuf
Params - DMA-BUF parameter builder (corresponds to zwp_linux_buffer_params_v1).
- DmaBuf
Plane - Single plane of a DMA-BUF.
Constants§
- MAX_
PLANES - Maximum number of planes per buffer
- ZWP_
LINUX_ BUFFER_ PARAMS_ V1_ ADD - add(fd, plane_idx, offset, stride, modifier_hi, modifier_lo)
- ZWP_
LINUX_ BUFFER_ PARAMS_ V1_ CREATE - create(width, height, format, flags)
- ZWP_
LINUX_ BUFFER_ PARAMS_ V1_ CREATED - created(buffer: new_id)
- ZWP_
LINUX_ BUFFER_ PARAMS_ V1_ CREATE_ IMMED - create_immed(buffer_id, width, height, format, flags) – since version 2
- ZWP_
LINUX_ BUFFER_ PARAMS_ V1_ DESTROY - destroy
- ZWP_
LINUX_ BUFFER_ PARAMS_ V1_ FAILED - failed
- ZWP_
LINUX_ BUFFER_ PARAMS_ V1_ FLAGS_ BOTTOM_ FIRST - Buffer content has bottom field first
- ZWP_
LINUX_ BUFFER_ PARAMS_ V1_ FLAGS_ INTERLACED - Buffer content is interlaced
- ZWP_
LINUX_ BUFFER_ PARAMS_ V1_ FLAGS_ Y_ INVERT - Bottom-first (y-inverted) buffer
- ZWP_
LINUX_ DMABUF_ V1 - Wayland global interface name
- ZWP_
LINUX_ DMABUF_ V1_ CREATE_ PARAMS - create_params(id: new_id) -> zwp_linux_buffer_params_v1
- ZWP_
LINUX_ DMABUF_ V1_ DESTROY - destroy
- ZWP_
LINUX_ DMABUF_ V1_ FORMAT - format(format: uint) – deprecated since version 4
- ZWP_
LINUX_ DMABUF_ V1_ GET_ DEFAULT_ FEEDBACK - get_default_feedback(id: new_id) – since version 4
- ZWP_
LINUX_ DMABUF_ V1_ GET_ SURFACE_ FEEDBACK - get_surface_feedback(id: new_id, surface: object) – since version 4
- ZWP_
LINUX_ DMABUF_ V1_ MODIFIER - modifier(format: uint, modifier_hi: uint, modifier_lo: uint) – since version 3
- ZWP_
LINUX_ DMABUF_ V1_ VERSION - Protocol version