Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file type_description.ml
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767openCtypesletint_of_unix(fd:Unix.file_descr):int=Obj.magicfdletunix_of_int(fd:int):Unix.file_descr=assert(fd>=0);Obj.magicfdmoduleTypes(F:TYPE)=structopenFletfd=view~read:unix_of_int~write:int_of_unixintletfd_opt=viewint~read:(function|-1->None|x->Some(unix_of_intx))~write:(function|None->-1|Somex->int_of_unixx)letid()=view~read:Id.of_uint32~write:Id.to_uint32uint32_tletobject_id:[`Crtc|`Connector|`Encoder|`Mode|`Property|`Fb|`Blob|`Plane]Id.ttyp=id()letproperty_id:[`Property]Id.ttyp=id()letbuffer_id:[`Buffer]Id.ttyp=id()letcrtc_id:[`Crtc]Id.ttyp=id()letfb_id:[`Fb]Id.ttyp=id()letconnector_id:[`Connector]Id.ttyp=id()letencoder_id:[`Encoder]Id.ttyp=id()letplane_id:[`Plane]Id.ttyp=id()letblob_id:[`Blob]Id.ttyp=id()letlessee_id:[`Lessee]Id.ttyp=id()typegrant=Grant:[<`Connector|`Crtc|`Plane]Id.t->grant[@@unboxed]letgrant=viewuint32_t~read:(funx->Grant(Id.of_uint32x))~write:(fun(Grantx)->Id.to_uint32x)letid_opt()=viewuint32_t~read:(funx->ifx=Unsigned.UInt32.zerothenNoneelseSome(Id.of_uint32x))~write:(functionNone->Unsigned.UInt32.zero|Somex->Id.to_uint32x)letbuffer_id_opt:[`Buffer]Id.toptiontyp=id_opt()letfb_id_opt:[`Fb]Id.toptiontyp=id_opt()letencoder_id_opt:[`Encoder]Id.toptiontyp=id_opt()letcrtc_id_opt:[`Crtc]Id.toptiontyp=id_opt()letflags32=uint32_tletint_uint8=view~read:Unsigned.UInt8.to_int~write:Unsigned.UInt8.of_intuint8_tletint_uint16=view~read:Unsigned.UInt16.to_int~write:Unsigned.UInt16.of_intuint16_tletint_ushort=view~read:Unsigned.UShort.to_int~write:Unsigned.UShort.of_intushort(* libdrm takes userdata as void*, but returns it as uint64.
OCaml's nativeint seems the best for this, as it's defined to be the same width
as a C pointer. Since user-data always comes from the application originally,
the conversion from 64-bit to nativeint shouldn't be a problem. *)letuserdata_voidp=view~read:Ctypes.raw_address_of_ptr~write:Ctypes.ptr_of_raw_address(ptrvoid)letuserdata_uint64=viewuint64_t~read:(funx->Unsigned.UInt64.to_int64x|>Int64.to_nativeint)~write:(funx->Int64.of_nativeintx|>Unsigned.UInt64.of_int64)(* On 64-bit systems, we can always represent 32-bit C ints as plain OCaml ints.
On 32-bit systems, most values should also fit in a 31-bit OCaml int. *)letint_uint32=view~read:Unsigned.UInt32.to_int~write:Unsigned.UInt32.of_intuint32_tletint_int32=view~read:Int32.to_int~write:Int32.of_intint32_tletdim=int_uint32letpitch=int_uint32letoffset=int_uint32letufixed=view~read:Ufixed.of_bits~write:Ufixed.to_bitsuint32_tletint_uint64=view~read:Unsigned.UInt64.to_int~write:Unsigned.UInt64.of_intuint64_tletsize=view~read:Unsigned.UInt64.to_int64~write:Unsigned.UInt64.of_int64uint64_tletdrm_format=viewuint32_t~read:Fourcc.of_uint32~write:Fourcc.to_uint32letdrm_modifier=viewuint64_t~read:Modifier.of_uint64~write:Modifier.to_uint64moduleNode=structletprimary=constant"DRM_NODE_PRIMARY"intletrender=constant"DRM_NODE_RENDER"intendmodulePageFlipFlags=structletevent=constant"DRM_MODE_PAGE_FLIP_EVENT"uint32_tletasync=constant"DRM_MODE_PAGE_FLIP_ASYNC"uint32_tlettarget_absolute=constant"DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE"uint32_tlettarget_relative=constant"DRM_MODE_PAGE_FLIP_TARGET_RELATIVE"uint32_tendmoduleCrtcSequenceFlags=structletrelative=constant"DRM_CRTC_SEQUENCE_RELATIVE"uint32_tletnext_on_miss=constant"DRM_CRTC_SEQUENCE_NEXT_ON_MISS"uint32_tendmoduleFbFlags=structletinterlaced=constant"DRM_MODE_FB_INTERLACED"uint32_tletmodifiers=constant"DRM_MODE_FB_MODIFIERS"uint32_tendmoduleDmabuf=structletrdwr=constant"DRM_RDWR"flags32letcloexec=constant"DRM_CLOEXEC"flags32letsync_rw=constant"DMA_BUF_SYNC_RW"uint32_tletioctl_export_sync_file=constant"DMA_BUF_IOCTL_EXPORT_SYNC_FILE"ulongletioctl_import_sync_file=constant"DMA_BUF_IOCTL_IMPORT_SYNC_FILE"ulongendmoduleDrmPciBusInfo=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmPciBusInfo"letdomain=F.fieldt"domain"int_uint16letbus=F.fieldt"bus"int_uint8letdev=F.fieldt"dev"int_uint8letfunc=F.fieldt"func"int_uint8let()=F.sealtendmoduleDrmPciDeviceInfo=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmPciDeviceInfo"letvendor_id=F.fieldt"vendor_id"int_uint16letdevice_id=F.fieldt"device_id"int_uint16letsubvendor_id=F.fieldt"subvendor_id"int_uint16letsubdevice_id=F.fieldt"subdevice_id"int_uint16letrevision_id=F.fieldt"revision_id"int_uint8let()=F.sealtendmoduleDrmUsbBusInfo=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmUsbBusInfo"letbus=F.fieldt"bus"int_uint8letdev=F.fieldt"dev"int_uint8let()=F.sealtendmoduleDrmUsbDeviceInfo=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmUsbDeviceInfo"letvendor=F.fieldt"vendor"int_uint16letproduct=F.fieldt"product"int_uint16let()=F.sealtendmoduleDrmPlatformBusInfo=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmPlatformBusInfo"letfullname=F.fieldt"fullname"(F.arrayConfig.drm_platform_device_name_lenF.char)let()=F.sealtendmoduleDrmPlatformDeviceInfo=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmPlatformDeviceInfo"letcompatible=F.fieldt"compatible"F.(ptr(ptrchar))let()=F.sealtendmoduleDrmHost1xBusInfo=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmHost1xBusInfo"letfullname=F.fieldt"fullname"(F.arrayConfig.drm_host1x_device_name_lenF.char)let()=F.sealtendmoduleDrmHost1xDeviceInfo=DrmPlatformDeviceInfomoduleBusinfo=structtypemarktypectype=markCtypes.unionlett:ctypeF.typ=F.union"{
drmPciBusInfoPtr pci;
drmUsbBusInfoPtr usb;
drmPlatformBusInfoPtr platform;
drmHost1xBusInfoPtr host1x;
}"letpci=F.fieldt"pci"(F.ptrDrmPciBusInfo.t)letusb=F.fieldt"usb"(F.ptrDrmUsbBusInfo.t)letplatform=F.fieldt"platform"(F.ptrDrmPlatformBusInfo.t)lethost1x=F.fieldt"host1x"(F.ptrDrmHost1xBusInfo.t)let()=F.sealtendmoduleDeviceinfo=structletget_pci_revision=constant"DRM_DEVICE_GET_PCI_REVISION"uint32_ttypemarktypectype=markCtypes.unionlett:ctypeF.typ=lift_typ(Ctypes.union"{
drmPciDeviceInfoPtr pci;
drmUsbDeviceInfoPtr usb;
drmPlatformDeviceInfoPtr platform;
drmHost1xDeviceInfoPtr host1x;
}")letpci=F.fieldt"pci"(F.ptrDrmPciDeviceInfo.t)letusb=F.fieldt"usb"(F.ptrDrmUsbDeviceInfo.t)letplatform=F.fieldt"platform"(F.ptrDrmPlatformDeviceInfo.t)lethost1x=F.fieldt"host1x"(F.ptrDrmHost1xDeviceInfo.t)let()=F.sealtendmoduleDevice=structtypemarktypet=markCtypes.structurelett:tF.typ=F.structure"_drmDevice"letnodes=F.fieldt"nodes"F.(ptr(arrayConfig.drm_node_max(ptrchar)))letavailable_nodes=F.fieldt"available_nodes"F.intletbustype=F.fieldt"bustype"F.intletbusinfo=F.fieldt"businfo"Businfo.tletdeviceinfo=F.fieldt"deviceinfo"Deviceinfo.tlet()=F.sealtendmoduleDrmModeModeInfo=structmoduleType=structletbuiltin=constant"DRM_MODE_TYPE_BUILTIN"uint32_tletclock_c=constant"DRM_MODE_TYPE_CLOCK_C"uint32_tletcrtc_c=constant"DRM_MODE_TYPE_CRTC_C"uint32_tletpreferred=constant"DRM_MODE_TYPE_PREFERRED"uint32_tletdefault=constant"DRM_MODE_TYPE_DEFAULT"uint32_tletuserdef=constant"DRM_MODE_TYPE_USERDEF"uint32_tletdriver=constant"DRM_MODE_TYPE_DRIVER"uint32_tendmoduleFlags=structletphsync=constant"DRM_MODE_FLAG_PHSYNC"uint32_tletnhsync=constant"DRM_MODE_FLAG_NHSYNC"uint32_tletpvsync=constant"DRM_MODE_FLAG_PVSYNC"uint32_tletnvsync=constant"DRM_MODE_FLAG_NVSYNC"uint32_tletinterlace=constant"DRM_MODE_FLAG_INTERLACE"uint32_tletdblscan=constant"DRM_MODE_FLAG_DBLSCAN"uint32_tletcsync=constant"DRM_MODE_FLAG_CSYNC"uint32_tletpcsync=constant"DRM_MODE_FLAG_PCSYNC"uint32_tletncsync=constant"DRM_MODE_FLAG_NCSYNC"uint32_tlethskew=constant"DRM_MODE_FLAG_HSKEW"uint32_tletbcast=constant"DRM_MODE_FLAG_BCAST"uint32_tletpixmux=constant"DRM_MODE_FLAG_PIXMUX"uint32_tletdblclk=constant"DRM_MODE_FLAG_DBLCLK"uint32_tletclkdiv2=constant"DRM_MODE_FLAG_CLKDIV2"uint32_tendmoduleStereo_mode=structletmask=constant"DRM_MODE_FLAG_3D_MASK"uint32_tletnone=constant"DRM_MODE_FLAG_3D_NONE"uint32_tletframe_packing=constant"DRM_MODE_FLAG_3D_FRAME_PACKING"uint32_tletfield_alternative=constant"DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE"uint32_tletline_alternative=constant"DRM_MODE_FLAG_3D_LINE_ALTERNATIVE"uint32_tletside_by_side_full=constant"DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL"uint32_tletl_depth=constant"DRM_MODE_FLAG_3D_L_DEPTH"uint32_tletl_depth_gfx_gfx_depth=constant"DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH"uint32_tlettop_and_bottom=constant"DRM_MODE_FLAG_3D_TOP_AND_BOTTOM"uint32_tletside_by_side_half=constant"DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF"uint32_tendmoduleAspect_ratio=structletmask=constant"DRM_MODE_FLAG_PIC_AR_MASK"uint32_tletar_none=constant"DRM_MODE_FLAG_PIC_AR_NONE"uint32_tletar_4_3=constant"DRM_MODE_FLAG_PIC_AR_4_3"uint32_tletar_16_9=constant"DRM_MODE_FLAG_PIC_AR_16_9"uint32_tletar_64_27=constant"DRM_MODE_FLAG_PIC_AR_64_27"uint32_tletar_256_135=constant"DRM_MODE_FLAG_PIC_AR_256_135"uint32_tendtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmModeModeInfo"letclock=F.fieldt"clock"int_uint32lethdisplay=F.fieldt"hdisplay"int_uint16lethsync_start=F.fieldt"hsync_start"int_uint16lethsync_end=F.fieldt"hsync_end"int_uint16lethtotal=F.fieldt"htotal"int_uint16lethskew=F.fieldt"hskew"int_uint16letvdisplay=F.fieldt"vdisplay"int_uint16letvsync_start=F.fieldt"vsync_start"int_uint16letvsync_end=F.fieldt"vsync_end"int_uint16letvtotal=F.fieldt"vtotal"int_uint16letvscan=F.fieldt"vscan"int_uint16letvrefresh=F.fieldt"vrefresh"int_uint32letflags=F.fieldt"flags"F.uint32_tlettyp=F.fieldt"type"F.uint32_tletname=F.fieldt"name"(F.arrayConfig.drm_display_mode_lenF.char)let()=F.sealtendmoduleDrmVersion=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmVersion"letversion_major=F.fieldt"version_major"F.intletversion_minor=F.fieldt"version_minor"F.intletversion_patchlevel=F.fieldt"version_patchlevel"F.intletname_len=F.fieldt"name_len"F.intletname=F.fieldt"name"F.(ptrchar)letdate_len=F.fieldt"date_len"F.intletdate=F.fieldt"date"F.(ptrchar)letdesc_len=F.fieldt"desc_len"F.intletdesc=F.fieldt"desc"F.(ptrchar)let()=F.sealtendmoduleDrmModeRes=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmModeRes"letcount_fbs=F.fieldt"count_fbs"F.intletfbs=F.fieldt"fbs"(F.ptrfb_id)letcount_crtcs=F.fieldt"count_crtcs"F.intletcrtcs=F.fieldt"crtcs"(F.ptrcrtc_id)letcount_connectors=F.fieldt"count_connectors"F.intletconnectors=F.fieldt"connectors"(F.ptrconnector_id)letcount_encoders=F.fieldt"count_encoders"F.intletencoders=F.fieldt"encoders"(F.ptrencoder_id)letmin_width=F.fieldt"min_width"int_uint32letmax_width=F.fieldt"max_width"int_uint32letmin_height=F.fieldt"min_height"int_uint32letmax_height=F.fieldt"max_height"int_uint32let()=F.sealtendmoduleDrmModeCrtc=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmModeCrtc"letcrtc_id=F.fieldt"crtc_id"crtc_idletbuffer_id=F.fieldt"buffer_id"fb_id_optletx=F.fieldt"x"int_uint32lety=F.fieldt"y"int_uint32letwidth=F.fieldt"width"int_uint32letheight=F.fieldt"height"int_uint32letmode_valid=F.fieldt"mode_valid"F.intletmode=F.fieldt"mode"DrmModeModeInfo.tletgamma_size=F.fieldt"gamma_size"F.intlet()=F.sealtendmoduleDrmModeSubPixel=structtypet=|Unknown|Horizontal_rgb|Horizontal_bgr|Vertical_rgb|Vertical_bgr|Noneletunknown=constant"DRM_MODE_SUBPIXEL_UNKNOWN"int64_tlethorizontal_rgb=constant"DRM_MODE_SUBPIXEL_HORIZONTAL_RGB"int64_tlethorizontal_bgr=constant"DRM_MODE_SUBPIXEL_HORIZONTAL_BGR"int64_tletvertical_rgb=constant"DRM_MODE_SUBPIXEL_VERTICAL_RGB"int64_tletvertical_bgr=constant"DRM_MODE_SUBPIXEL_VERTICAL_BGR"int64_tletnone=constant"DRM_MODE_SUBPIXEL_NONE"int64_tlett=enum"drmModeSubPixel"~typedef:true~unexpected:(fun_->Unknown)[Unknown,unknown;Horizontal_rgb,horizontal_rgb;Horizontal_bgr,horizontal_bgr;Vertical_rgb,vertical_rgb;Vertical_bgr,vertical_bgr;None,none;]endmoduleDrmModeConnection=structtypet=|Connected|Disconnected|Unknown_connectionletconnected=constant"DRM_MODE_CONNECTED"int64_tletdisconnected=constant"DRM_MODE_DISCONNECTED"int64_tletunknown_connection=constant"DRM_MODE_UNKNOWNCONNECTION"int64_tlett=enum"drmModeConnection"~typedef:true~unexpected:(fun_->Unknown_connection)[Connected,connected;Disconnected,disconnected;Unknown_connection,unknown_connection;]endmoduleDrmModeConnectorType=structlett=uint32_tletv_Unknown=constant"DRM_MODE_CONNECTOR_Unknown"uint32_tletv_VGA=constant"DRM_MODE_CONNECTOR_VGA"uint32_tletv_DVII=constant"DRM_MODE_CONNECTOR_DVII"uint32_tletv_DVID=constant"DRM_MODE_CONNECTOR_DVID"uint32_tletv_DVIA=constant"DRM_MODE_CONNECTOR_DVIA"uint32_tletv_Composite=constant"DRM_MODE_CONNECTOR_Composite"uint32_tletv_SVIDEO=constant"DRM_MODE_CONNECTOR_SVIDEO"uint32_tletv_LVDS=constant"DRM_MODE_CONNECTOR_LVDS"uint32_tletv_Component=constant"DRM_MODE_CONNECTOR_Component"uint32_tletv_9PinDIN=constant"DRM_MODE_CONNECTOR_9PinDIN"uint32_tletv_DisplayPort=constant"DRM_MODE_CONNECTOR_DisplayPort"uint32_tletv_HDMIA=constant"DRM_MODE_CONNECTOR_HDMIA"uint32_tletv_HDMIB=constant"DRM_MODE_CONNECTOR_HDMIB"uint32_tletv_TV=constant"DRM_MODE_CONNECTOR_TV"uint32_tletv_eDP=constant"DRM_MODE_CONNECTOR_eDP"uint32_tletv_VIRTUAL=constant"DRM_MODE_CONNECTOR_VIRTUAL"uint32_tletv_DSI=constant"DRM_MODE_CONNECTOR_DSI"uint32_tletv_DPI=constant"DRM_MODE_CONNECTOR_DPI"uint32_tletv_WRITEBACK=constant"DRM_MODE_CONNECTOR_WRITEBACK"uint32_tletv_SPI=constant"DRM_MODE_CONNECTOR_SPI"uint32_tletv_USB=constant"DRM_MODE_CONNECTOR_USB"uint32_tendmoduleDrmModeConnector=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmModeConnector"leteid=encoder_idletconnector_id=F.fieldt"connector_id"connector_idletencoder_id=F.fieldt"encoder_id"encoder_id_optletconnector_type=F.fieldt"connector_type"F.uint32_tletconnector_type_id=F.fieldt"connector_type_id"int_uint32letconnection=F.fieldt"connection"DrmModeConnection.tletmmWidth=F.fieldt"mmWidth"int_uint32letmmHeight=F.fieldt"mmHeight"int_uint32letsubpixel=F.fieldt"subpixel"DrmModeSubPixel.tletcount_modes=F.fieldt"count_modes"F.intletmodes=F.fieldt"modes"(F.ptrDrmModeModeInfo.t)letcount_props=F.fieldt"count_props"F.intletprops=F.fieldt"props"(F.ptrproperty_id)letprop_values=F.fieldt"prop_values"(F.ptrF.uint64_t)letcount_encoders=F.fieldt"count_encoders"F.intletencoders=F.fieldt"encoders"(F.ptreid)let()=F.sealtendmoduleDrmModeEncoderType=structletv_None=constant"DRM_MODE_ENCODER_NONE"uint32_tletv_Dac=constant"DRM_MODE_ENCODER_DAC"uint32_tletv_Tmds=constant"DRM_MODE_ENCODER_TMDS"uint32_tletv_Lvds=constant"DRM_MODE_ENCODER_LVDS"uint32_tletv_Tvdac=constant"DRM_MODE_ENCODER_TVDAC"uint32_tletv_Virtual=constant"DRM_MODE_ENCODER_VIRTUAL"uint32_tletv_Dsi=constant"DRM_MODE_ENCODER_DSI"uint32_tletv_Dpmst=constant"DRM_MODE_ENCODER_DPMST"uint32_tletv_Dpi=constant"DRM_MODE_ENCODER_DPI"uint32_tendmoduleDrmModeEncoder=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmModeEncoder"letencoder_id=F.fieldt"encoder_id"encoder_idletencoder_type=F.fieldt"encoder_type"F.uint32_tletcrtc_id=F.fieldt"crtc_id"crtc_id_optletpossible_crtcs=F.fieldt"possible_crtcs"F.uint32_tletpossible_clones=F.fieldt"possible_clones"F.uint32_tlet()=F.sealtendmoduleDrmModePlaneRes=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmModePlaneRes"letcount_planes=F.fieldt"count_planes"int_uint32letplanes=F.fieldt"planes"(F.ptrplane_id)let()=F.sealtendmoduleDrmModePlane=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmModePlane"letcount_formats=F.fieldt"count_formats"int_uint32letformats=F.fieldt"formats"(F.ptrdrm_format)letplane_id=F.fieldt"plane_id"plane_idletcrtc_id=F.fieldt"crtc_id"crtc_id_optletfb_id=F.fieldt"fb_id"fb_id_optletcrtc_x=F.fieldt"crtc_x"int_uint32letcrtc_y=F.fieldt"crtc_y"int_uint32letx=F.fieldt"x"int_uint32lety=F.fieldt"y"int_uint32letpossible_crtcs=F.fieldt"possible_crtcs"F.uint32_tletgamma_size=F.fieldt"gamma_size"F.uint32_tlet()=F.sealtendmoduleDrmModeObjectProperties=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmModeObjectProperties"letcount_props=F.fieldt"count_props"int_uint32letprops=F.fieldt"props"(F.ptrproperty_id)letprop_values=F.fieldt"prop_values"(F.ptrF.uint64_t)let()=F.sealtendmoduleDrmModeObjectType=structletcrtc=constant"DRM_MODE_OBJECT_CRTC"uint32_tletconnector=constant"DRM_MODE_OBJECT_CONNECTOR"uint32_tletencoder=constant"DRM_MODE_OBJECT_ENCODER"uint32_tletmode=constant"DRM_MODE_OBJECT_MODE"uint32_tletproperty=constant"DRM_MODE_OBJECT_PROPERTY"uint32_tletfb=constant"DRM_MODE_OBJECT_FB"uint32_tletblob=constant"DRM_MODE_OBJECT_BLOB"uint32_tletplane=constant"DRM_MODE_OBJECT_PLANE"uint32_tletany=constant"DRM_MODE_OBJECT_ANY"uint32_tendmoduleDrmModePropertyEnum=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"drm_mode_property_enum"letvalue=F.fieldt"value"uint64_tletname=F.fieldt"name"(F.arrayConfig.drm_prop_name_lenF.char)let()=F.sealtendmoduleDrmModeProperty=structmoduleFlags=structletpending=constant"DRM_MODE_PROP_PENDING"uint32_tletrange=constant"DRM_MODE_PROP_RANGE"uint32_tletimmutable=constant"DRM_MODE_PROP_IMMUTABLE"uint32_tletenum=constant"DRM_MODE_PROP_ENUM"uint32_tletblob=constant"DRM_MODE_PROP_BLOB"uint32_tletbitmask=constant"DRM_MODE_PROP_BITMASK"uint32_tletobject_=constant"DRM_MODE_PROP_OBJECT"uint32_tletsigned_range=constant"DRM_MODE_PROP_SIGNED_RANGE"uint32_tendtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmModeProperty"letprop_id=F.fieldt"prop_id"property_idletflags=F.fieldt"flags"flags32letname=F.fieldt"name"(F.arrayConfig.drm_prop_name_lenF.char)letcount_values=F.fieldt"count_values"F.intletvalues=F.fieldt"values"(F.ptrF.uint64_t)letcount_enums=F.fieldt"count_enums"F.intletenums=F.fieldt"enums"(ptrDrmModePropertyEnum.t)letcount_blobs=F.fieldt"count_blobs"F.intletblob_ids=F.fieldt"blob_ids"(F.ptrblob_id)let()=F.sealtendmoduleDrmModePropertyBlob=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmModePropertyBlob"letid=F.fieldt"id"blob_idletlength=F.fieldt"length"int_uint32letdata=F.fieldt"data"(F.ptrF.void)let()=F.sealtendmoduleDrmModeFormatModifierIterator=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmModeFormatModifierIterator"letfmt_idx=F.fieldt"fmt_idx"uint32_tletmod_idx=F.fieldt"mod_idx"uint32_tletfmt=F.fieldt"fmt"drm_formatletmodifier=F.fieldt"mod"drm_modifierlet()=F.sealtendmoduleCap=structtype'aty=Int:intty|Bool:booltytype'at='aty*Unsigned.UInt64.tletboolx=Bool,constantxuint64_tletintx=Int,constantxuint64_tletdumb_buffer=bool"DRM_CAP_DUMB_BUFFER"letvblank_high_crtc=bool"DRM_CAP_VBLANK_HIGH_CRTC"letdumb_preferred_depth=int"DRM_CAP_DUMB_PREFERRED_DEPTH"letdumb_prefer_shadow=bool"DRM_CAP_DUMB_PREFER_SHADOW"letprime=int"DRM_CAP_PRIME"lettimestamp_monotonic=bool"DRM_CAP_TIMESTAMP_MONOTONIC"letasync_page_flip=Bool,Unsigned.UInt64.of_int0x7(* bool "DRM_CAP_ASYNC_PAGE_FLIP" -- Debian 12 too old *)letcursor_width=int"DRM_CAP_CURSOR_WIDTH"letcursor_height=int"DRM_CAP_CURSOR_HEIGHT"letaddfb2_modifiers=bool"DRM_CAP_ADDFB2_MODIFIERS"letpage_flip_target=bool"DRM_CAP_PAGE_FLIP_TARGET"letcrtc_in_vblank_event=bool"DRM_CAP_CRTC_IN_VBLANK_EVENT"letsyncobj=bool"DRM_CAP_SYNCOBJ"letsyncobj_timeline=bool"DRM_CAP_SYNCOBJ_TIMELINE"letatomic_async_page_flip=Bool,Unsigned.UInt64.of_int0x15(* bool "DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP" *)endmoduleClient_cap=structtypet=Unsigned.UInt64.tlett=Ctypes.uint64_tletstereo_3d=constant"DRM_CLIENT_CAP_STEREO_3D"F.uint64_tletuniversal_planes=constant"DRM_CLIENT_CAP_UNIVERSAL_PLANES"F.uint64_tletatomic=constant"DRM_CLIENT_CAP_ATOMIC"F.uint64_tletaspect_ratio=constant"DRM_CLIENT_CAP_ASPECT_RATIO"F.uint64_tletwriteback_connectors=constant"DRM_CLIENT_CAP_WRITEBACK_CONNECTORS"F.uint64_t(* Debian 12 didn't have this, so just hard-code it for now *)letcursor_plane_hotspot=Unsigned.UInt64.of_int6(* let cursor_plane_hotspot = constant "DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT" F.uint64_t *)endmoduleDrmModeFB2=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"_drmModeFB2"letfb_id=F.fieldt"fb_id"fb_idletwidth=F.fieldt"width"int_uint32letheight=F.fieldt"height"int_uint32letpixel_format=F.fieldt"pixel_format"drm_formatletmodifier=F.fieldt"modifier"drm_modifierletflags=F.fieldt"flags"flags32lethandles=F.fieldt"handles"(F.array4buffer_id_opt)letpitches=F.fieldt"pitches"(F.array4pitch)letoffsets=F.fieldt"offsets"(F.array4offset)let()=F.sealtendmoduleAtomicReqPtr:sigtypetvalt:tptrtypvalt_opt:tptroptiontypend=structtypet=unitlett=typedef(ptrvoid)"drmModeAtomicReqPtr"lett_opt=typedef(ptr_optvoid)"drmModeAtomicReqPtr"endmoduleAtomicFlags=structlettest_only=constant"DRM_MODE_ATOMIC_TEST_ONLY"uint32_tletnonblock=constant"DRM_MODE_ATOMIC_NONBLOCK"uint32_tletallow_modeset=constant"DRM_MODE_ATOMIC_ALLOW_MODESET"uint32_tendmoduleDma_buf_export_sync_file=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"dma_buf_export_sync_file"letflags=F.fieldt"flags"uint32_tletfd=F.fieldt"fd"fdlet()=F.sealtendmoduleDma_buf_import_sync_file=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"dma_buf_import_sync_file"letflags=F.fieldt"flags"uint32_tletfd=F.fieldt"fd"fdlet()=F.sealtendmoduleDrm_clip_rect=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"drm_clip_rect"letx1=F.fieldt"x1"int_ushortlety1=F.fieldt"y1"int_ushortletx2=F.fieldt"x2"int_ushortlety2=F.fieldt"y2"int_ushortlet()=F.sealtendmoduleDrm_event_type=structletvblank=constant"DRM_EVENT_VBLANK"uint32_tletflip_complete=constant"DRM_EVENT_FLIP_COMPLETE"uint32_tletcrtc_sequence=constant"DRM_EVENT_CRTC_SEQUENCE"uint32_tendmoduleDrm_event=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"drm_event"lettyp=F.fieldt"type"uint32_tletlength=F.fieldt"length"int_uint32let()=F.sealtendmoduleDrm_event_vblank=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"drm_event_vblank"letbase=F.fieldt"base"Drm_event.tletuser_data=F.fieldt"user_data"userdata_uint64lettv_sec=F.fieldt"tv_sec"uint32_tlettv_usec=F.fieldt"tv_usec"int_uint32letsequence=F.fieldt"sequence"uint32_tletcrtc_id=F.fieldt"crtc_id"crtc_idlet()=F.sealtendmoduleDrm_event_crtc_sequence=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"drm_event_crtc_sequence"letbase=F.fieldt"base"Drm_event.tletuser_data=F.fieldt"user_data"userdata_uint64lettime_ns=F.fieldt"time_ns"int64_tletsequence=F.fieldt"sequence"uint64_tlet()=F.sealtendmoduleLeaseFlags=structletcloexec=constant"O_CLOEXEC"intendmoduleDrmModeLesseeList=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"drmModeLesseeList"letcount=F.fieldt"count"int_uint32letlessees=F.fieldt"lessees"(array0lessee_id)let()=F.sealtendmoduleDrmModeObjectList=structtypemarktypectype=markCtypes.structurelett:ctypeF.typ=F.structure"drmModeObjectList"letcount=F.fieldt"count"int_uint32letobjects=F.fieldt"objects"(array0grant)let()=F.sealtendend