[go: up one dir, main page]

Trait drm::control::Device

source ·
pub trait Device: Device {
Show 36 methods // Provided methods fn resource_handles(&self) -> Result<ResourceHandles, SystemError> { ... } fn plane_handles(&self) -> Result<Vec<Handle>, SystemError> { ... } fn get_connector( &self, handle: Handle, force_probe: bool ) -> Result<Info, SystemError> { ... } fn get_encoder(&self, handle: Handle) -> Result<Info, SystemError> { ... } fn get_crtc(&self, handle: Handle) -> Result<Info, SystemError> { ... } fn set_crtc( &self, handle: Handle, framebuffer: Option<Handle>, pos: (u32, u32), conns: &[Handle], mode: Option<Mode> ) -> Result<(), SystemError> { ... } fn get_framebuffer(&self, handle: Handle) -> Result<Info, SystemError> { ... } fn get_planar_framebuffer( &self, handle: Handle ) -> Result<PlanarInfo, SystemError> { ... } fn add_framebuffer<B>( &self, buffer: &B, depth: u32, bpp: u32 ) -> Result<Handle, SystemError> where B: Buffer + ?Sized { ... } fn add_planar_framebuffer<B>( &self, planar_buffer: &B, modifiers: &[Option<DrmModifier>; 4], flags: u32 ) -> Result<Handle, SystemError> where B: PlanarBuffer + ?Sized { ... } fn dirty_framebuffer( &self, handle: Handle, clips: &[ClipRect] ) -> Result<(), SystemError> { ... } fn destroy_framebuffer(&self, handle: Handle) -> Result<(), SystemError> { ... } fn get_plane(&self, handle: Handle) -> Result<Info, SystemError> { ... } fn set_plane( &self, handle: Handle, crtc: Handle, framebuffer: Option<Handle>, flags: u32, crtc_rect: (i32, i32, u32, u32), src_rect: (u32, u32, u32, u32) ) -> Result<(), SystemError> { ... } fn get_property(&self, handle: Handle) -> Result<Info, SystemError> { ... } fn set_property<T: ResourceHandle>( &self, handle: T, prop: Handle, value: RawValue ) -> Result<(), SystemError> { ... } fn create_property_blob<T>( &self, data: &T ) -> Result<Value<'static>, SystemError> { ... } fn get_property_blob(&self, blob: u64) -> Result<Vec<u8>, SystemError> { ... } fn destroy_property_blob(&self, blob: u64) -> Result<(), SystemError> { ... } fn get_modes(&self, handle: Handle) -> Result<Vec<Mode>, SystemError> { ... } fn get_properties<T: ResourceHandle>( &self, handle: T ) -> Result<PropertyValueSet, SystemError> { ... } fn get_gamma( &self, crtc: Handle, red: &mut [u16], green: &mut [u16], blue: &mut [u16] ) -> Result<(), SystemError> { ... } fn set_gamma( &self, crtc: Handle, red: &[u16], green: &[u16], blue: &[u16] ) -> Result<(), SystemError> { ... } fn open_buffer(&self, name: Name) -> Result<Handle, SystemError> { ... } fn close_buffer(&self, handle: Handle) -> Result<(), SystemError> { ... } fn create_dumb_buffer( &self, size: (u32, u32), format: DrmFourcc, bpp: u32 ) -> Result<DumbBuffer, SystemError> { ... } fn map_dumb_buffer<'a>( &self, buffer: &'a mut DumbBuffer ) -> Result<DumbMapping<'a>, SystemError> { ... } fn destroy_dumb_buffer(&self, buffer: DumbBuffer) -> Result<(), SystemError> { ... } fn set_cursor<B>( &self, crtc: Handle, buffer: Option<&B> ) -> Result<(), SystemError> where B: Buffer + ?Sized { ... } fn set_cursor2<B>( &self, crtc: Handle, buffer: Option<&B>, hotspot: (i32, i32) ) -> Result<(), SystemError> where B: Buffer + ?Sized { ... } fn move_cursor( &self, crtc: Handle, pos: (i32, i32) ) -> Result<(), SystemError> { ... } fn atomic_commit( &self, flags: AtomicCommitFlags, req: AtomicModeReq ) -> Result<(), SystemError> { ... } fn prime_fd_to_buffer(&self, fd: RawFd) -> Result<Handle, SystemError> { ... } fn buffer_to_prime_fd( &self, handle: Handle, flags: u32 ) -> Result<RawFd, SystemError> { ... } fn page_flip( &self, handle: Handle, framebuffer: Handle, flags: PageFlipFlags, target_sequence: Option<PageFlipTarget> ) -> Result<(), SystemError> { ... } fn receive_events(&self) -> Result<Events, SystemError> where Self: Sized { ... }
}
Expand description

This trait should be implemented by any object that acts as a DRM device and provides modesetting functionality.

Like the parent super::Device trait, this crate does not provide a concrete object for this trait.

Example

use drm::control::Device as ControlDevice;

/// Assuming the [`Card`] wrapper already implements [`drm::Device`]
impl ControlDevice for Card {}

Provided Methods§

source

fn resource_handles(&self) -> Result<ResourceHandles, SystemError>

Gets the set of resource handles that this device currently controls

source

fn plane_handles(&self) -> Result<Vec<Handle>, SystemError>

Gets the set of plane handles that this device currently has

source

fn get_connector( &self, handle: Handle, force_probe: bool ) -> Result<Info, SystemError>

Returns information about a specific connector

Force-probing

If force_probe is set to true and the DRM client is the current DRM master, the kernel will perform a forced probe on the connector to refresh the connector status, modes and EDID. A forced-probe can be slow, might cause flickering and the ioctl will block.

  • User needs to force-probe connectors to ensure their metadata is up-to-date at startup and after receiving a hot-plug event.
  • User may perform a forced-probe when the user explicitly requests it.
  • User shouldn’t perform a forced-probe in other situations.
source

fn get_encoder(&self, handle: Handle) -> Result<Info, SystemError>

Returns information about a specific encoder

source

fn get_crtc(&self, handle: Handle) -> Result<Info, SystemError>

Returns information about a specific CRTC

source

fn set_crtc( &self, handle: Handle, framebuffer: Option<Handle>, pos: (u32, u32), conns: &[Handle], mode: Option<Mode> ) -> Result<(), SystemError>

Set CRTC state

source

fn get_framebuffer(&self, handle: Handle) -> Result<Info, SystemError>

Returns information about a specific framebuffer

source

fn get_planar_framebuffer( &self, handle: Handle ) -> Result<PlanarInfo, SystemError>

Returns information about a specific framebuffer (with modifiers)

source

fn add_framebuffer<B>( &self, buffer: &B, depth: u32, bpp: u32 ) -> Result<Handle, SystemError>where B: Buffer + ?Sized,

Add a new framebuffer

source

fn add_planar_framebuffer<B>( &self, planar_buffer: &B, modifiers: &[Option<DrmModifier>; 4], flags: u32 ) -> Result<Handle, SystemError>where B: PlanarBuffer + ?Sized,

Add framebuffer (with modifiers)

source

fn dirty_framebuffer( &self, handle: Handle, clips: &[ClipRect] ) -> Result<(), SystemError>

Mark parts of a framebuffer dirty

source

fn destroy_framebuffer(&self, handle: Handle) -> Result<(), SystemError>

Destroy a framebuffer

source

fn get_plane(&self, handle: Handle) -> Result<Info, SystemError>

Returns information about a specific plane

source

fn set_plane( &self, handle: Handle, crtc: Handle, framebuffer: Option<Handle>, flags: u32, crtc_rect: (i32, i32, u32, u32), src_rect: (u32, u32, u32, u32) ) -> Result<(), SystemError>

Set plane state.

Providing no framebuffer clears the plane.

source

fn get_property(&self, handle: Handle) -> Result<Info, SystemError>

Returns information about a specific property.

source

fn set_property<T: ResourceHandle>( &self, handle: T, prop: Handle, value: RawValue ) -> Result<(), SystemError>

Sets a property for a specific resource.

source

fn create_property_blob<T>( &self, data: &T ) -> Result<Value<'static>, SystemError>

Create a property blob value from a given data blob

source

fn get_property_blob(&self, blob: u64) -> Result<Vec<u8>, SystemError>

Get a property blob’s data

source

fn destroy_property_blob(&self, blob: u64) -> Result<(), SystemError>

Destroy a given property blob value

source

fn get_modes(&self, handle: Handle) -> Result<Vec<Mode>, SystemError>

Returns the set of Modes that a particular connector supports.

source

fn get_properties<T: ResourceHandle>( &self, handle: T ) -> Result<PropertyValueSet, SystemError>

Gets a list of property handles and values for this resource.

source

fn get_gamma( &self, crtc: Handle, red: &mut [u16], green: &mut [u16], blue: &mut [u16] ) -> Result<(), SystemError>

Receive the currently set gamma ramp of a crtc

source

fn set_gamma( &self, crtc: Handle, red: &[u16], green: &[u16], blue: &[u16] ) -> Result<(), SystemError>

Set a gamma ramp for the given crtc

source

fn open_buffer(&self, name: Name) -> Result<Handle, SystemError>

Open a GEM buffer handle by name

source

fn close_buffer(&self, handle: Handle) -> Result<(), SystemError>

Close a GEM buffer handle

source

fn create_dumb_buffer( &self, size: (u32, u32), format: DrmFourcc, bpp: u32 ) -> Result<DumbBuffer, SystemError>

Create a new dumb buffer with a given size and pixel format

source

fn map_dumb_buffer<'a>( &self, buffer: &'a mut DumbBuffer ) -> Result<DumbMapping<'a>, SystemError>

Map the buffer for access

source

fn destroy_dumb_buffer(&self, buffer: DumbBuffer) -> Result<(), SystemError>

Free the memory resources of a dumb buffer

source

fn set_cursor<B>( &self, crtc: Handle, buffer: Option<&B> ) -> Result<(), SystemError>where B: Buffer + ?Sized,

👎Deprecated: Usage of deprecated ioctl set_cursor: use a cursor plane instead

Sets a hardware-cursor on the given crtc with the image of a given buffer

A buffer argument of None will clear the cursor.

source

fn set_cursor2<B>( &self, crtc: Handle, buffer: Option<&B>, hotspot: (i32, i32) ) -> Result<(), SystemError>where B: Buffer + ?Sized,

👎Deprecated: Usage of deprecated ioctl set_cursor2: use a cursor plane instead

Sets a hardware-cursor on the given crtc with the image of a given buffer and a hotspot marking the click point of the cursor.

A buffer argument of None will clear the cursor.

source

fn move_cursor(&self, crtc: Handle, pos: (i32, i32)) -> Result<(), SystemError>

👎Deprecated: Usage of deprecated ioctl move_cursor: use a cursor plane instead

Moves a set cursor on a given crtc

source

fn atomic_commit( &self, flags: AtomicCommitFlags, req: AtomicModeReq ) -> Result<(), SystemError>

Request an atomic commit with given flags and property-value pair for a list of objects.

source

fn prime_fd_to_buffer(&self, fd: RawFd) -> Result<Handle, SystemError>

Convert a prime file descriptor to a GEM buffer handle

source

fn buffer_to_prime_fd( &self, handle: Handle, flags: u32 ) -> Result<RawFd, SystemError>

Convert a prime file descriptor to a GEM buffer handle

source

fn page_flip( &self, handle: Handle, framebuffer: Handle, flags: PageFlipFlags, target_sequence: Option<PageFlipTarget> ) -> Result<(), SystemError>

Queue a page flip on the given crtc

source

fn receive_events(&self) -> Result<Events, SystemError>where Self: Sized,

Receive pending events

Implementors§