pub struct RendererConfig {
pub crtc_id: u32,
pub crtc_index: u32,
pub preferred_size: u32,
pub forced_plane_id: u32,
pub allow_legacy: bool,
pub prefer_legacy: bool,
pub rotation: Rotation,
}Expand description
How to set a renderer up.
Fields§
§crtc_id: u32The CRTC the cursor belongs to, and its index in the resource list.
Both, because the id is what gets written to CRTC_ID and the index is
what possible_crtcs is a bitmask over. Deriving one from the other
needs the resource list, which the caller already has.
crtc_index: u32§preferred_size: u32Cursor size in pixels, or zero to take the driver’s preference.
forced_plane_id: u32Use this plane rather than choosing one. Zero to choose.
allow_legacy: boolWhether falling back to drmModeSetCursor is acceptable.
prefer_legacy: boolDrive the CRTC’s cursor plane through drmModeSetCursor and
drmModeMoveCursor rather than atomic commits.
On an atomic driver the legacy cursor ioctls run as an async plane
update that does not wait for vblank, so a moving pointer does not
contend with the caller’s scanout commits. The atomic path’s blocking
one-plane commit per move does: on vc4 it cost the scanout two vblanks
in three while the pointer moved (drm-cxx 0925491). Only when the
CRTC has a cursor plane that takes ARGB8888; needs allow_legacy;
ignored with forced_plane_id. See
Renderer::reserved_plane_id.
rotation: RotationWhich way up the cursor is drawn.