Kms.CrtcA CRT Controller.
Typically, one CRTC is used for each monitor, although it is possible to drive two identical monitors in mirror mode with only one.
type id = [ `Crtc ] Id.ttype t = {crtc_id : id;fb_id : Fb.id option;x : int;Position on the framebuffer
*)y : int;width : int;height : int;mode : Mode_info.t option;gamma_size : int;Number of gamma stops
*)}val set :
Device.t ->
id ->
?fb:Fb.id ->
pos:(int * int) ->
connectors:[ `Connector ] Id.t list ->
Mode_info.t option ->
unitThe old non-atomic API.
val page_flip :
?event:nativeint ->
?async:bool ->
?target:[ `None | `Absolute of Unsigned.UInt32.t | `Relative of int ] ->
Device.t ->
id ->
Fb.id ->
unitpage_flip dev id fb asks KMS to schedule a page flip for CRTC id.
Once any pending rendering targeting fb (as of ioctl time) has completed, the CRTC will be reprogrammed to display fb after the next vertical refresh. The call returns immediately, but subsequent rendering to the current fb will block in the execbuffer ioctl until the page flip happens. If a page flip is already pending as the ioctl is called, Unix.EBUSY will be raised.
?target is merely to clarify the target for when code dealing with a page flip runs during a vertical blank period.
val queue_sequence :
?next_on_miss:bool ->
user_data:nativeint ->
Device.t ->
id ->
[ `Absolute of Unsigned.UInt64.t | `Relative of int ] ->
Unsigned.UInt64.tQueue an event to be delivered at the specified sequence. The timestamp marks when the first pixel of the refresh cycle leaves the display engine for the display.
val pp : t Fmt.ttype 'a property = ([ `Crtc ], 'a) Property.tval get_properties : Device.t -> id -> [ `Crtc ] Properties.Values.tval active : bool propertyUse Mode_info.get to load the blob data.
val vrr_enabled : bool propertyval out_fence_ptr : Unix.file_descr option Ctypes.ptr option propertyHint: allocate a fence_ctype to hold the returned FD.