pub struct PlaneState {
pub plane_id: u32,
pub crtc_id: u32,
pub fb_id: u32,
pub width: u32,
pub height: u32,
pub pointer_x: i32,
pub pointer_y: i32,
pub hotspot: Option<(u32, u32)>,
pub rotation: Rotation,
pub rotation_mask: u64,
}Expand description
The state a cursor plane is put into for one frame.
Distinct from crate::sprite::Placement, which says where the sprite
landed inside the buffer. This says where the buffer lands on the screen.
Fields§
§plane_id: u32The plane being written.
crtc_id: u32The CRTC it feeds.
fb_id: u32The framebuffer to scan out.
width: u32Buffer dimensions. Source and destination match: a cursor plane is not asked to scale.
height: u32§pointer_x: i32Where the pointer is on the CRTC.
pointer_y: i32§hotspot: Option<(u32, u32)>The hotspot in buffer coordinates, from
compose.
None before a cursor has been drawn, which is a real state: the
buffer exists so the size can be probed, but nothing is in it yet.
rotation: RotationHow the sprite is turned.
rotation_mask: u64The rotations the plane can do in hardware, as a DRM_MODE_ROTATE_*
mask. Zero when it has no rotation property.
Supplied rather than read back from the property, because rotation is
a bitmask and a property store reports ranges. Guessing here would make
every rotation look supported and turn the sprite twice: once in
software, once by the hardware.