metal: implement tearing
This commit is contained in:
parent
d355059ad9
commit
49f6304716
31 changed files with 726 additions and 51 deletions
|
|
@ -41,14 +41,15 @@ use crate::{
|
|||
dmabuf::DmaBuf,
|
||||
drm::sys::{
|
||||
auth_magic, drm_format_modifier, drm_format_modifier_blob, drop_master, get_version,
|
||||
revoke_lease, DRM_CAP_CURSOR_HEIGHT, DRM_CAP_CURSOR_WIDTH, FORMAT_BLOB_CURRENT,
|
||||
revoke_lease, DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP, DRM_CAP_CURSOR_HEIGHT,
|
||||
DRM_CAP_CURSOR_WIDTH, FORMAT_BLOB_CURRENT,
|
||||
},
|
||||
Modifier, INVALID_MODIFIER,
|
||||
},
|
||||
};
|
||||
pub use sys::{
|
||||
drm_mode_modeinfo, DRM_CLIENT_CAP_ATOMIC, DRM_MODE_ATOMIC_ALLOW_MODESET,
|
||||
DRM_MODE_ATOMIC_NONBLOCK, DRM_MODE_PAGE_FLIP_EVENT,
|
||||
DRM_MODE_ATOMIC_NONBLOCK, DRM_MODE_PAGE_FLIP_ASYNC, DRM_MODE_PAGE_FLIP_EVENT,
|
||||
};
|
||||
|
||||
#[derive(Debug, Error)]
|
||||
|
|
@ -339,6 +340,10 @@ impl DrmMaster {
|
|||
Ok((width, height))
|
||||
}
|
||||
|
||||
pub fn supports_async_commit(&self) -> bool {
|
||||
self.get_cap(DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP) == Ok(1)
|
||||
}
|
||||
|
||||
pub fn get_connector_info(
|
||||
&self,
|
||||
connector: DrmConnector,
|
||||
|
|
|
|||
|
|
@ -238,6 +238,7 @@ const DRM_MODE_PROP_ATOMIC: u32 = 0x80000000;
|
|||
|
||||
pub const DRM_CAP_CURSOR_WIDTH: u64 = 0x8;
|
||||
pub const DRM_CAP_CURSOR_HEIGHT: u64 = 0x9;
|
||||
pub const DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP: u64 = 0x15;
|
||||
|
||||
#[repr(C)]
|
||||
struct drm_mode_property_enum {
|
||||
|
|
@ -865,6 +866,7 @@ struct drm_mode_atomic {
|
|||
const DRM_IOCTL_MODE_ATOMIC: u64 = drm_iowr::<drm_mode_atomic>(0xbc);
|
||||
|
||||
pub const DRM_MODE_PAGE_FLIP_EVENT: u32 = 0x01;
|
||||
pub const DRM_MODE_PAGE_FLIP_ASYNC: u32 = 0x02;
|
||||
pub const DRM_MODE_ATOMIC_TEST_ONLY: u32 = 0x0100;
|
||||
pub const DRM_MODE_ATOMIC_NONBLOCK: u32 = 0x0200;
|
||||
pub const DRM_MODE_ATOMIC_ALLOW_MODESET: u32 = 0x0400;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue