wlr-export-dmabuf-unstable-v1

a protocol for low overhead screen content capturing

(index)

An interface to capture surfaces in an efficient way by exporting DMA-BUFs.

Warning! The protocol described in this file is experimental and backward incompatible changes may be made. Backward compatible changes may be added together with the corresponding interface version bump. Backward incompatible changes are done by bumping the version number in the protocol and interface names and resetting the interface version. Once the protocol is to be declared stable, the 'z' prefix and the version number in the protocol and interface names are removed and the interface version number is reset.

zwlr_export_dmabuf_manager_v1

manager to inform clients and begin capturing

Interface
Version 1

This object is a manager with which to start capturing from sources.

zwlr_export_dmabuf_manager_v1.capture_output

capture a frame from an output

Request
Since Version 1

Capture the next frame of an entire output.

ArgumentTypeDescription
framenew_id<zwlr_export_dmabuf_frame_v1>

overlay_cursorint

include custom client hardware cursor on top of the frame

outputobject<wl_output>

zwlr_export_dmabuf_manager_v1.destroy

destroy the manager

Destructor Request
Since Version 1

All objects created by the manager will still remain valid, until their appropriate destroy request has been called.

zwlr_export_dmabuf_frame_v1

a DMA-BUF frame

Interface
Version 1

This object represents a single DMA-BUF frame.

If the capture is successful, the compositor will first send a "frame" event, followed by one or several "object". When the frame is available for readout, the "ready" event is sent.

If the capture failed, the "cancel" event is sent. This can happen anytime before the "ready" event.

Once either a "ready" or a "cancel" event is received, the client should destroy the frame. Once an "object" event is received, the client is responsible for closing the associated file descriptor.

All frames are read-only and may not be written into or altered.

zwlr_export_dmabuf_frame_v1.destroy

delete this object, used or not

Destructor Request
Since Version 1

Unreferences the frame. This request must be called as soon as its no longer used.

It can be called at any time by the client. The client will still have to close any FDs it has been given.

zwlr_export_dmabuf_frame_v1.frame

a frame description

Event
Since Version 1

Main event supplying the client with information about the frame. If the capture didn't fail, this event is always emitted first before any other events.

This event is followed by a number of "object" as specified by the "num_objects" argument.

ArgumentTypeDescription
widthuint

frame width in pixels

heightuint

frame height in pixels

offset_xuint

crop offset for the x axis

offset_yuint

crop offset for the y axis

buffer_flagsuint

flags which indicate properties (invert, interlacing), has the same values as zwp_linux_buffer_params_v1:flags

flagsuint<flags>

indicates special frame features

formatuint

format of the frame (DRM_FORMAT_*)

mod_highuint

drm format modifier, high

mod_lowuint

drm format modifier, low

num_objectsuint

indicates how many objects (FDs) the frame has (max 4)

zwlr_export_dmabuf_frame_v1.object

an object description

Event
Since Version 1

Event which serves to supply the client with the file descriptors containing the data for each object.

After receiving this event, the client must always close the file descriptor as soon as they're done with it and even if the frame fails.

ArgumentTypeDescription
indexuint

index of the current object

fdfd

fd of the current object

sizeuint

size in bytes for the current object

offsetuint

starting point for the data in the object's fd

strideuint

line size in bytes

plane_indexuint

index of the plane the data in the object applies to

zwlr_export_dmabuf_frame_v1.ready

indicates frame is available for reading

Event
Since Version 1

This event is sent as soon as the frame is presented, indicating it is available for reading. This event includes the time at which presentation happened at.

The timestamp is expressed as tv_sec_hi, tv_sec_lo, tv_nsec triples, each component being an unsigned 32-bit value. Whole seconds are in tv_sec which is a 64-bit value combined from tv_sec_hi and tv_sec_lo, and the additional fractional part in tv_nsec as nanoseconds. Hence, for valid timestamps tv_nsec must be in [0, 999999999]. The seconds part may have an arbitrary offset at start.

After receiving this event, the client should destroy this object.

ArgumentTypeDescription
tv_sec_hiuint

high 32 bits of the seconds part of the timestamp

tv_sec_louint

low 32 bits of the seconds part of the timestamp

tv_nsecuint

nanoseconds part of the timestamp

zwlr_export_dmabuf_frame_v1.cancel

indicates the frame is no longer valid

Event
Since Version 1

If the capture failed or if the frame is no longer valid after the "frame" event has been emitted, this event will be used to inform the client to scrap the frame.

If the failure is temporary, the client may capture again the same source. If the failure is permanent, any further attempts to capture the same source will fail again.

After receiving this event, the client should destroy this object.

ArgumentTypeDescription
reasonuint<cancel_reason>

indicates a reason for cancelling this frame capture

zwlr_export_dmabuf_frame_v1.flags

frame flags

Enum
Since Version 1

Special flags that should be respected by the client.

EntryValueSinceDescription
transient0x11

clients should copy frame before processing

zwlr_export_dmabuf_frame_v1.cancel_reason

cancel reason

Enum
Since Version 1

Indicates reason for cancelling the frame.

EntryValueSinceDescription
temporary01

temporary error, source will produce more frames

permanent11

fatal error, source will not produce frames

resizing21

temporary error, source will produce more frames

Copyright