Sync headers with drm-next
Synchronize drm.h, drm_mode.h and drm_fourcc.h to drm-next. Generated using make headers_install. Generated from drm-next branch commit 52920704df878050123dfeb469aa6ab8022547c1 Signed-off-by: Simon Ser <contact@emersion.fr>main
parent
4de32c8609
commit
431becd4e0
|
@ -629,8 +629,8 @@ struct drm_gem_open {
|
||||||
/**
|
/**
|
||||||
* DRM_CAP_VBLANK_HIGH_CRTC
|
* DRM_CAP_VBLANK_HIGH_CRTC
|
||||||
*
|
*
|
||||||
* If set to 1, the kernel supports specifying a CRTC index in the high bits of
|
* If set to 1, the kernel supports specifying a :ref:`CRTC index<crtc_index>`
|
||||||
* &drm_wait_vblank_request.type.
|
* in the high bits of &drm_wait_vblank_request.type.
|
||||||
*
|
*
|
||||||
* Starting kernel version 2.6.39, this capability is always set to 1.
|
* Starting kernel version 2.6.39, this capability is always set to 1.
|
||||||
*/
|
*/
|
||||||
|
@ -903,6 +903,27 @@ struct drm_syncobj_timeline_wait {
|
||||||
__u32 pad;
|
__u32 pad;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct drm_syncobj_eventfd
|
||||||
|
* @handle: syncobj handle.
|
||||||
|
* @flags: Zero to wait for the point to be signalled, or
|
||||||
|
* &DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE to wait for a fence to be
|
||||||
|
* available for the point.
|
||||||
|
* @point: syncobj timeline point (set to zero for binary syncobjs).
|
||||||
|
* @fd: Existing eventfd to sent events to.
|
||||||
|
* @pad: Must be zero.
|
||||||
|
*
|
||||||
|
* Register an eventfd to be signalled by a syncobj. The eventfd counter will
|
||||||
|
* be incremented by one.
|
||||||
|
*/
|
||||||
|
struct drm_syncobj_eventfd {
|
||||||
|
__u32 handle;
|
||||||
|
__u32 flags;
|
||||||
|
__u64 point;
|
||||||
|
__s32 fd;
|
||||||
|
__u32 pad;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
struct drm_syncobj_array {
|
struct drm_syncobj_array {
|
||||||
__u64 handles;
|
__u64 handles;
|
||||||
|
@ -966,6 +987,19 @@ extern "C" {
|
||||||
#define DRM_IOCTL_GET_STATS DRM_IOR( 0x06, struct drm_stats)
|
#define DRM_IOCTL_GET_STATS DRM_IOR( 0x06, struct drm_stats)
|
||||||
#define DRM_IOCTL_SET_VERSION DRM_IOWR(0x07, struct drm_set_version)
|
#define DRM_IOCTL_SET_VERSION DRM_IOWR(0x07, struct drm_set_version)
|
||||||
#define DRM_IOCTL_MODESET_CTL DRM_IOW(0x08, struct drm_modeset_ctl)
|
#define DRM_IOCTL_MODESET_CTL DRM_IOW(0x08, struct drm_modeset_ctl)
|
||||||
|
/**
|
||||||
|
* DRM_IOCTL_GEM_CLOSE - Close a GEM handle.
|
||||||
|
*
|
||||||
|
* GEM handles are not reference-counted by the kernel. User-space is
|
||||||
|
* responsible for managing their lifetime. For example, if user-space imports
|
||||||
|
* the same memory object twice on the same DRM file description, the same GEM
|
||||||
|
* handle is returned by both imports, and user-space needs to ensure
|
||||||
|
* &DRM_IOCTL_GEM_CLOSE is performed once only. The same situation can happen
|
||||||
|
* when a memory object is allocated, then exported and imported again on the
|
||||||
|
* same DRM file description. The &DRM_IOCTL_MODE_GETFB2 IOCTL is an exception
|
||||||
|
* and always returns fresh new GEM handles even if an existing GEM handle
|
||||||
|
* already refers to the same memory object before the IOCTL is performed.
|
||||||
|
*/
|
||||||
#define DRM_IOCTL_GEM_CLOSE DRM_IOW (0x09, struct drm_gem_close)
|
#define DRM_IOCTL_GEM_CLOSE DRM_IOW (0x09, struct drm_gem_close)
|
||||||
#define DRM_IOCTL_GEM_FLINK DRM_IOWR(0x0a, struct drm_gem_flink)
|
#define DRM_IOCTL_GEM_FLINK DRM_IOWR(0x0a, struct drm_gem_flink)
|
||||||
#define DRM_IOCTL_GEM_OPEN DRM_IOWR(0x0b, struct drm_gem_open)
|
#define DRM_IOCTL_GEM_OPEN DRM_IOWR(0x0b, struct drm_gem_open)
|
||||||
|
@ -1006,7 +1040,37 @@ extern "C" {
|
||||||
#define DRM_IOCTL_UNLOCK DRM_IOW( 0x2b, struct drm_lock)
|
#define DRM_IOCTL_UNLOCK DRM_IOW( 0x2b, struct drm_lock)
|
||||||
#define DRM_IOCTL_FINISH DRM_IOW( 0x2c, struct drm_lock)
|
#define DRM_IOCTL_FINISH DRM_IOW( 0x2c, struct drm_lock)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DRM_IOCTL_PRIME_HANDLE_TO_FD - Convert a GEM handle to a DMA-BUF FD.
|
||||||
|
*
|
||||||
|
* User-space sets &drm_prime_handle.handle with the GEM handle to export and
|
||||||
|
* &drm_prime_handle.flags, and gets back a DMA-BUF file descriptor in
|
||||||
|
* &drm_prime_handle.fd.
|
||||||
|
*
|
||||||
|
* The export can fail for any driver-specific reason, e.g. because export is
|
||||||
|
* not supported for this specific GEM handle (but might be for others).
|
||||||
|
*
|
||||||
|
* Support for exporting DMA-BUFs is advertised via &DRM_PRIME_CAP_EXPORT.
|
||||||
|
*/
|
||||||
#define DRM_IOCTL_PRIME_HANDLE_TO_FD DRM_IOWR(0x2d, struct drm_prime_handle)
|
#define DRM_IOCTL_PRIME_HANDLE_TO_FD DRM_IOWR(0x2d, struct drm_prime_handle)
|
||||||
|
/**
|
||||||
|
* DRM_IOCTL_PRIME_FD_TO_HANDLE - Convert a DMA-BUF FD to a GEM handle.
|
||||||
|
*
|
||||||
|
* User-space sets &drm_prime_handle.fd with a DMA-BUF file descriptor to
|
||||||
|
* import, and gets back a GEM handle in &drm_prime_handle.handle.
|
||||||
|
* &drm_prime_handle.flags is unused.
|
||||||
|
*
|
||||||
|
* If an existing GEM handle refers to the memory object backing the DMA-BUF,
|
||||||
|
* that GEM handle is returned. Therefore user-space which needs to handle
|
||||||
|
* arbitrary DMA-BUFs must have a user-space lookup data structure to manually
|
||||||
|
* reference-count duplicated GEM handles. For more information see
|
||||||
|
* &DRM_IOCTL_GEM_CLOSE.
|
||||||
|
*
|
||||||
|
* The import can fail for any driver-specific reason, e.g. because import is
|
||||||
|
* only supported for DMA-BUFs allocated on this DRM device.
|
||||||
|
*
|
||||||
|
* Support for importing DMA-BUFs is advertised via &DRM_PRIME_CAP_IMPORT.
|
||||||
|
*/
|
||||||
#define DRM_IOCTL_PRIME_FD_TO_HANDLE DRM_IOWR(0x2e, struct drm_prime_handle)
|
#define DRM_IOCTL_PRIME_FD_TO_HANDLE DRM_IOWR(0x2e, struct drm_prime_handle)
|
||||||
|
|
||||||
#define DRM_IOCTL_AGP_ACQUIRE DRM_IO( 0x30)
|
#define DRM_IOCTL_AGP_ACQUIRE DRM_IO( 0x30)
|
||||||
|
@ -1044,6 +1108,16 @@ extern "C" {
|
||||||
#define DRM_IOCTL_MODE_GETPROPBLOB DRM_IOWR(0xAC, struct drm_mode_get_blob)
|
#define DRM_IOCTL_MODE_GETPROPBLOB DRM_IOWR(0xAC, struct drm_mode_get_blob)
|
||||||
#define DRM_IOCTL_MODE_GETFB DRM_IOWR(0xAD, struct drm_mode_fb_cmd)
|
#define DRM_IOCTL_MODE_GETFB DRM_IOWR(0xAD, struct drm_mode_fb_cmd)
|
||||||
#define DRM_IOCTL_MODE_ADDFB DRM_IOWR(0xAE, struct drm_mode_fb_cmd)
|
#define DRM_IOCTL_MODE_ADDFB DRM_IOWR(0xAE, struct drm_mode_fb_cmd)
|
||||||
|
/**
|
||||||
|
* DRM_IOCTL_MODE_RMFB - Remove a framebuffer.
|
||||||
|
*
|
||||||
|
* This removes a framebuffer previously added via ADDFB/ADDFB2. The IOCTL
|
||||||
|
* argument is a framebuffer object ID.
|
||||||
|
*
|
||||||
|
* Warning: removing a framebuffer currently in-use on an enabled plane will
|
||||||
|
* disable that plane. The CRTC the plane is linked to may also be disabled
|
||||||
|
* (depending on driver capabilities).
|
||||||
|
*/
|
||||||
#define DRM_IOCTL_MODE_RMFB DRM_IOWR(0xAF, unsigned int)
|
#define DRM_IOCTL_MODE_RMFB DRM_IOWR(0xAF, unsigned int)
|
||||||
#define DRM_IOCTL_MODE_PAGE_FLIP DRM_IOWR(0xB0, struct drm_mode_crtc_page_flip)
|
#define DRM_IOCTL_MODE_PAGE_FLIP DRM_IOWR(0xB0, struct drm_mode_crtc_page_flip)
|
||||||
#define DRM_IOCTL_MODE_DIRTYFB DRM_IOWR(0xB1, struct drm_mode_fb_dirty_cmd)
|
#define DRM_IOCTL_MODE_DIRTYFB DRM_IOWR(0xB1, struct drm_mode_fb_dirty_cmd)
|
||||||
|
@ -1080,8 +1154,38 @@ extern "C" {
|
||||||
#define DRM_IOCTL_SYNCOBJ_TRANSFER DRM_IOWR(0xCC, struct drm_syncobj_transfer)
|
#define DRM_IOCTL_SYNCOBJ_TRANSFER DRM_IOWR(0xCC, struct drm_syncobj_transfer)
|
||||||
#define DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL DRM_IOWR(0xCD, struct drm_syncobj_timeline_array)
|
#define DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL DRM_IOWR(0xCD, struct drm_syncobj_timeline_array)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DRM_IOCTL_MODE_GETFB2 - Get framebuffer metadata.
|
||||||
|
*
|
||||||
|
* This queries metadata about a framebuffer. User-space fills
|
||||||
|
* &drm_mode_fb_cmd2.fb_id as the input, and the kernels fills the rest of the
|
||||||
|
* struct as the output.
|
||||||
|
*
|
||||||
|
* If the client is DRM master or has &CAP_SYS_ADMIN, &drm_mode_fb_cmd2.handles
|
||||||
|
* will be filled with GEM buffer handles. Fresh new GEM handles are always
|
||||||
|
* returned, even if another GEM handle referring to the same memory object
|
||||||
|
* already exists on the DRM file description. The caller is responsible for
|
||||||
|
* removing the new handles, e.g. via the &DRM_IOCTL_GEM_CLOSE IOCTL. The same
|
||||||
|
* new handle will be returned for multiple planes in case they use the same
|
||||||
|
* memory object. Planes are valid until one has a zero handle -- this can be
|
||||||
|
* used to compute the number of planes.
|
||||||
|
*
|
||||||
|
* Otherwise, &drm_mode_fb_cmd2.handles will be zeroed and planes are valid
|
||||||
|
* until one has a zero &drm_mode_fb_cmd2.pitches.
|
||||||
|
*
|
||||||
|
* If the framebuffer has a format modifier, &DRM_MODE_FB_MODIFIERS will be set
|
||||||
|
* in &drm_mode_fb_cmd2.flags and &drm_mode_fb_cmd2.modifier will contain the
|
||||||
|
* modifier. Otherwise, user-space must ignore &drm_mode_fb_cmd2.modifier.
|
||||||
|
*
|
||||||
|
* To obtain DMA-BUF FDs for each plane without leaking GEM handles, user-space
|
||||||
|
* can export each handle via &DRM_IOCTL_PRIME_HANDLE_TO_FD, then immediately
|
||||||
|
* close each unique handle via &DRM_IOCTL_GEM_CLOSE, making sure to not
|
||||||
|
* double-close handles which are specified multiple times in the array.
|
||||||
|
*/
|
||||||
#define DRM_IOCTL_MODE_GETFB2 DRM_IOWR(0xCE, struct drm_mode_fb_cmd2)
|
#define DRM_IOCTL_MODE_GETFB2 DRM_IOWR(0xCE, struct drm_mode_fb_cmd2)
|
||||||
|
|
||||||
|
#define DRM_IOCTL_SYNCOBJ_EVENTFD DRM_IOWR(0xCF, struct drm_syncobj_eventfd)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Device specific ioctls should only be in their respective headers
|
* Device specific ioctls should only be in their respective headers
|
||||||
* The device specific ioctl range is from 0x40 to 0x9f.
|
* The device specific ioctl range is from 0x40 to 0x9f.
|
||||||
|
|
|
@ -88,6 +88,18 @@ extern "C" {
|
||||||
*
|
*
|
||||||
* The authoritative list of format modifier codes is found in
|
* The authoritative list of format modifier codes is found in
|
||||||
* `include/uapi/drm/drm_fourcc.h`
|
* `include/uapi/drm/drm_fourcc.h`
|
||||||
|
*
|
||||||
|
* Open Source User Waiver
|
||||||
|
* -----------------------
|
||||||
|
*
|
||||||
|
* Because this is the authoritative source for pixel formats and modifiers
|
||||||
|
* referenced by GL, Vulkan extensions and other standards and hence used both
|
||||||
|
* by open source and closed source driver stacks, the usual requirement for an
|
||||||
|
* upstream in-kernel or open source userspace user does not apply.
|
||||||
|
*
|
||||||
|
* To ensure, as much as feasible, compatibility across stacks and avoid
|
||||||
|
* confusion with incompatible enumerations stakeholders for all relevant driver
|
||||||
|
* stacks should approve additions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define fourcc_code(a, b, c, d) ((__u32)(a) | ((__u32)(b) << 8) | \
|
#define fourcc_code(a, b, c, d) ((__u32)(a) | ((__u32)(b) << 8) | \
|
||||||
|
@ -645,6 +657,49 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC fourcc_mod_code(INTEL, 12)
|
#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC fourcc_mod_code(INTEL, 12)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Intel Color Control Surfaces (CCS) for display ver. 14 render compression.
|
||||||
|
*
|
||||||
|
* The main surface is tile4 and at plane index 0, the CCS is linear and
|
||||||
|
* at index 1. A 64B CCS cache line corresponds to an area of 4x1 tiles in
|
||||||
|
* main surface. In other words, 4 bits in CCS map to a main surface cache
|
||||||
|
* line pair. The main surface pitch is required to be a multiple of four
|
||||||
|
* tile4 widths.
|
||||||
|
*/
|
||||||
|
#define I915_FORMAT_MOD_4_TILED_MTL_RC_CCS fourcc_mod_code(INTEL, 13)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Intel Color Control Surfaces (CCS) for display ver. 14 media compression
|
||||||
|
*
|
||||||
|
* The main surface is tile4 and at plane index 0, the CCS is linear and
|
||||||
|
* at index 1. A 64B CCS cache line corresponds to an area of 4x1 tiles in
|
||||||
|
* main surface. In other words, 4 bits in CCS map to a main surface cache
|
||||||
|
* line pair. The main surface pitch is required to be a multiple of four
|
||||||
|
* tile4 widths. For semi-planar formats like NV12, CCS planes follow the
|
||||||
|
* Y and UV planes i.e., planes 0 and 1 are used for Y and UV surfaces,
|
||||||
|
* planes 2 and 3 for the respective CCS.
|
||||||
|
*/
|
||||||
|
#define I915_FORMAT_MOD_4_TILED_MTL_MC_CCS fourcc_mod_code(INTEL, 14)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Intel Color Control Surface with Clear Color (CCS) for display ver. 14 render
|
||||||
|
* compression.
|
||||||
|
*
|
||||||
|
* The main surface is tile4 and is at plane index 0 whereas CCS is linear
|
||||||
|
* and at index 1. The clear color is stored at index 2, and the pitch should
|
||||||
|
* be ignored. The clear color structure is 256 bits. The first 128 bits
|
||||||
|
* represents Raw Clear Color Red, Green, Blue and Alpha color each represented
|
||||||
|
* by 32 bits. The raw clear color is consumed by the 3d engine and generates
|
||||||
|
* the converted clear color of size 64 bits. The first 32 bits store the Lower
|
||||||
|
* Converted Clear Color value and the next 32 bits store the Higher Converted
|
||||||
|
* Clear Color value when applicable. The Converted Clear Color values are
|
||||||
|
* consumed by the DE. The last 64 bits are used to store Color Discard Enable
|
||||||
|
* and Depth Clear Value Valid which are ignored by the DE. A CCS cache line
|
||||||
|
* corresponds to an area of 4x1 tiles in the main surface. The main surface
|
||||||
|
* pitch is required to be a multiple of 4 tile widths.
|
||||||
|
*/
|
||||||
|
#define I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC fourcc_mod_code(INTEL, 15)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Tiled, NV12MT, grouped in 64 (pixels) x 32 (lines) -sized macroblocks
|
* Tiled, NV12MT, grouped in 64 (pixels) x 32 (lines) -sized macroblocks
|
||||||
*
|
*
|
||||||
|
|
|
@ -312,16 +312,48 @@ struct drm_mode_set_plane {
|
||||||
__u32 src_w;
|
__u32 src_w;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct drm_mode_get_plane - Get plane metadata.
|
||||||
|
*
|
||||||
|
* Userspace can perform a GETPLANE ioctl to retrieve information about a
|
||||||
|
* plane.
|
||||||
|
*
|
||||||
|
* To retrieve the number of formats supported, set @count_format_types to zero
|
||||||
|
* and call the ioctl. @count_format_types will be updated with the value.
|
||||||
|
*
|
||||||
|
* To retrieve these formats, allocate an array with the memory needed to store
|
||||||
|
* @count_format_types formats. Point @format_type_ptr to this array and call
|
||||||
|
* the ioctl again (with @count_format_types still set to the value returned in
|
||||||
|
* the first ioctl call).
|
||||||
|
*/
|
||||||
struct drm_mode_get_plane {
|
struct drm_mode_get_plane {
|
||||||
|
/**
|
||||||
|
* @plane_id: Object ID of the plane whose information should be
|
||||||
|
* retrieved. Set by caller.
|
||||||
|
*/
|
||||||
__u32 plane_id;
|
__u32 plane_id;
|
||||||
|
|
||||||
|
/** @crtc_id: Object ID of the current CRTC. */
|
||||||
__u32 crtc_id;
|
__u32 crtc_id;
|
||||||
|
/** @fb_id: Object ID of the current fb. */
|
||||||
__u32 fb_id;
|
__u32 fb_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @possible_crtcs: Bitmask of CRTC's compatible with the plane. CRTC's
|
||||||
|
* are created and they receive an index, which corresponds to their
|
||||||
|
* position in the bitmask. Bit N corresponds to
|
||||||
|
* :ref:`CRTC index<crtc_index>` N.
|
||||||
|
*/
|
||||||
__u32 possible_crtcs;
|
__u32 possible_crtcs;
|
||||||
|
/** @gamma_size: Never used. */
|
||||||
__u32 gamma_size;
|
__u32 gamma_size;
|
||||||
|
|
||||||
|
/** @count_format_types: Number of formats. */
|
||||||
__u32 count_format_types;
|
__u32 count_format_types;
|
||||||
|
/**
|
||||||
|
* @format_type_ptr: Pointer to ``__u32`` array of formats that are
|
||||||
|
* supported by the plane. These formats do not require modifiers.
|
||||||
|
*/
|
||||||
__u64 format_type_ptr;
|
__u64 format_type_ptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -509,22 +541,74 @@ struct drm_mode_get_connector {
|
||||||
*/
|
*/
|
||||||
#define DRM_MODE_PROP_ATOMIC 0x80000000
|
#define DRM_MODE_PROP_ATOMIC 0x80000000
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct drm_mode_property_enum - Description for an enum/bitfield entry.
|
||||||
|
* @value: numeric value for this enum entry.
|
||||||
|
* @name: symbolic name for this enum entry.
|
||||||
|
*
|
||||||
|
* See struct drm_property_enum for details.
|
||||||
|
*/
|
||||||
struct drm_mode_property_enum {
|
struct drm_mode_property_enum {
|
||||||
__u64 value;
|
__u64 value;
|
||||||
char name[DRM_PROP_NAME_LEN];
|
char name[DRM_PROP_NAME_LEN];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct drm_mode_get_property - Get property metadata.
|
||||||
|
*
|
||||||
|
* User-space can perform a GETPROPERTY ioctl to retrieve information about a
|
||||||
|
* property. The same property may be attached to multiple objects, see
|
||||||
|
* "Modeset Base Object Abstraction".
|
||||||
|
*
|
||||||
|
* The meaning of the @values_ptr field changes depending on the property type.
|
||||||
|
* See &drm_property.flags for more details.
|
||||||
|
*
|
||||||
|
* The @enum_blob_ptr and @count_enum_blobs fields are only meaningful when the
|
||||||
|
* property has the type &DRM_MODE_PROP_ENUM or &DRM_MODE_PROP_BITMASK. For
|
||||||
|
* backwards compatibility, the kernel will always set @count_enum_blobs to
|
||||||
|
* zero when the property has the type &DRM_MODE_PROP_BLOB. User-space must
|
||||||
|
* ignore these two fields if the property has a different type.
|
||||||
|
*
|
||||||
|
* User-space is expected to retrieve values and enums by performing this ioctl
|
||||||
|
* at least twice: the first time to retrieve the number of elements, the
|
||||||
|
* second time to retrieve the elements themselves.
|
||||||
|
*
|
||||||
|
* To retrieve the number of elements, set @count_values and @count_enum_blobs
|
||||||
|
* to zero, then call the ioctl. @count_values will be updated with the number
|
||||||
|
* of elements. If the property has the type &DRM_MODE_PROP_ENUM or
|
||||||
|
* &DRM_MODE_PROP_BITMASK, @count_enum_blobs will be updated as well.
|
||||||
|
*
|
||||||
|
* To retrieve the elements themselves, allocate an array for @values_ptr and
|
||||||
|
* set @count_values to its capacity. If the property has the type
|
||||||
|
* &DRM_MODE_PROP_ENUM or &DRM_MODE_PROP_BITMASK, allocate an array for
|
||||||
|
* @enum_blob_ptr and set @count_enum_blobs to its capacity. Calling the ioctl
|
||||||
|
* again will fill the arrays.
|
||||||
|
*/
|
||||||
struct drm_mode_get_property {
|
struct drm_mode_get_property {
|
||||||
__u64 values_ptr; /* values and blob lengths */
|
/** @values_ptr: Pointer to a ``__u64`` array. */
|
||||||
__u64 enum_blob_ptr; /* enum and blob id ptrs */
|
__u64 values_ptr;
|
||||||
|
/** @enum_blob_ptr: Pointer to a struct drm_mode_property_enum array. */
|
||||||
|
__u64 enum_blob_ptr;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @prop_id: Object ID of the property which should be retrieved. Set
|
||||||
|
* by the caller.
|
||||||
|
*/
|
||||||
__u32 prop_id;
|
__u32 prop_id;
|
||||||
|
/**
|
||||||
|
* @flags: ``DRM_MODE_PROP_*`` bitfield. See &drm_property.flags for
|
||||||
|
* a definition of the flags.
|
||||||
|
*/
|
||||||
__u32 flags;
|
__u32 flags;
|
||||||
|
/**
|
||||||
|
* @name: Symbolic property name. User-space should use this field to
|
||||||
|
* recognize properties.
|
||||||
|
*/
|
||||||
char name[DRM_PROP_NAME_LEN];
|
char name[DRM_PROP_NAME_LEN];
|
||||||
|
|
||||||
|
/** @count_values: Number of elements in @values_ptr. */
|
||||||
__u32 count_values;
|
__u32 count_values;
|
||||||
/* This is only used to count enum values, not blobs. The _blobs is
|
/** @count_enum_blobs: Number of elements in @enum_blob_ptr. */
|
||||||
* simply because of a historical reason, i.e. backwards compat. */
|
|
||||||
__u32 count_enum_blobs;
|
__u32 count_enum_blobs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -579,41 +663,73 @@ struct drm_mode_fb_cmd {
|
||||||
#define DRM_MODE_FB_INTERLACED (1<<0) /* for interlaced framebuffers */
|
#define DRM_MODE_FB_INTERLACED (1<<0) /* for interlaced framebuffers */
|
||||||
#define DRM_MODE_FB_MODIFIERS (1<<1) /* enables ->modifer[] */
|
#define DRM_MODE_FB_MODIFIERS (1<<1) /* enables ->modifer[] */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct drm_mode_fb_cmd2 - Frame-buffer metadata.
|
||||||
|
*
|
||||||
|
* This struct holds frame-buffer metadata. There are two ways to use it:
|
||||||
|
*
|
||||||
|
* - User-space can fill this struct and perform a &DRM_IOCTL_MODE_ADDFB2
|
||||||
|
* ioctl to register a new frame-buffer. The new frame-buffer object ID will
|
||||||
|
* be set by the kernel in @fb_id.
|
||||||
|
* - User-space can set @fb_id and perform a &DRM_IOCTL_MODE_GETFB2 ioctl to
|
||||||
|
* fetch metadata about an existing frame-buffer.
|
||||||
|
*
|
||||||
|
* In case of planar formats, this struct allows up to 4 buffer objects with
|
||||||
|
* offsets and pitches per plane. The pitch and offset order are dictated by
|
||||||
|
* the format FourCC as defined by ``drm_fourcc.h``, e.g. NV12 is described as:
|
||||||
|
*
|
||||||
|
* YUV 4:2:0 image with a plane of 8-bit Y samples followed by an
|
||||||
|
* interleaved U/V plane containing 8-bit 2x2 subsampled colour difference
|
||||||
|
* samples.
|
||||||
|
*
|
||||||
|
* So it would consist of a Y plane at ``offsets[0]`` and a UV plane at
|
||||||
|
* ``offsets[1]``.
|
||||||
|
*
|
||||||
|
* To accommodate tiled, compressed, etc formats, a modifier can be specified.
|
||||||
|
* For more information see the "Format Modifiers" section. Note that even
|
||||||
|
* though it looks like we have a modifier per-plane, we in fact do not. The
|
||||||
|
* modifier for each plane must be identical. Thus all combinations of
|
||||||
|
* different data layouts for multi-plane formats must be enumerated as
|
||||||
|
* separate modifiers.
|
||||||
|
*
|
||||||
|
* All of the entries in @handles, @pitches, @offsets and @modifier must be
|
||||||
|
* zero when unused. Warning, for @offsets and @modifier zero can't be used to
|
||||||
|
* figure out whether the entry is used or not since it's a valid value (a zero
|
||||||
|
* offset is common, and a zero modifier is &DRM_FORMAT_MOD_LINEAR).
|
||||||
|
*/
|
||||||
struct drm_mode_fb_cmd2 {
|
struct drm_mode_fb_cmd2 {
|
||||||
|
/** @fb_id: Object ID of the frame-buffer. */
|
||||||
__u32 fb_id;
|
__u32 fb_id;
|
||||||
|
/** @width: Width of the frame-buffer. */
|
||||||
__u32 width;
|
__u32 width;
|
||||||
|
/** @height: Height of the frame-buffer. */
|
||||||
__u32 height;
|
__u32 height;
|
||||||
__u32 pixel_format; /* fourcc code from drm_fourcc.h */
|
/**
|
||||||
__u32 flags; /* see above flags */
|
* @pixel_format: FourCC format code, see ``DRM_FORMAT_*`` constants in
|
||||||
|
* ``drm_fourcc.h``.
|
||||||
|
*/
|
||||||
|
__u32 pixel_format;
|
||||||
|
/**
|
||||||
|
* @flags: Frame-buffer flags (see &DRM_MODE_FB_INTERLACED and
|
||||||
|
* &DRM_MODE_FB_MODIFIERS).
|
||||||
|
*/
|
||||||
|
__u32 flags;
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* In case of planar formats, this ioctl allows up to 4
|
* @handles: GEM buffer handle, one per plane. Set to 0 if the plane is
|
||||||
* buffer objects with offsets and pitches per plane.
|
* unused. The same handle can be used for multiple planes.
|
||||||
* The pitch and offset order is dictated by the fourcc,
|
|
||||||
* e.g. NV12 (https://fourcc.org/yuv.php#NV12) is described as:
|
|
||||||
*
|
|
||||||
* YUV 4:2:0 image with a plane of 8 bit Y samples
|
|
||||||
* followed by an interleaved U/V plane containing
|
|
||||||
* 8 bit 2x2 subsampled colour difference samples.
|
|
||||||
*
|
|
||||||
* So it would consist of Y as offsets[0] and UV as
|
|
||||||
* offsets[1]. Note that offsets[0] will generally
|
|
||||||
* be 0 (but this is not required).
|
|
||||||
*
|
|
||||||
* To accommodate tiled, compressed, etc formats, a
|
|
||||||
* modifier can be specified. The default value of zero
|
|
||||||
* indicates "native" format as specified by the fourcc.
|
|
||||||
* Vendor specific modifier token. Note that even though
|
|
||||||
* it looks like we have a modifier per-plane, we in fact
|
|
||||||
* do not. The modifier for each plane must be identical.
|
|
||||||
* Thus all combinations of different data layouts for
|
|
||||||
* multi plane formats must be enumerated as separate
|
|
||||||
* modifiers.
|
|
||||||
*/
|
*/
|
||||||
__u32 handles[4];
|
__u32 handles[4];
|
||||||
__u32 pitches[4]; /* pitch for each plane */
|
/** @pitches: Pitch (aka. stride) in bytes, one per plane. */
|
||||||
__u32 offsets[4]; /* offset of each plane */
|
__u32 pitches[4];
|
||||||
__u64 modifier[4]; /* ie, tiling, compress */
|
/** @offsets: Offset into the buffer in bytes, one per plane. */
|
||||||
|
__u32 offsets[4];
|
||||||
|
/**
|
||||||
|
* @modifier: Format modifier, one per plane. See ``DRM_FORMAT_MOD_*``
|
||||||
|
* constants in ``drm_fourcc.h``. All planes must use the same
|
||||||
|
* modifier. Ignored unless &DRM_MODE_FB_MODIFIERS is set in @flags.
|
||||||
|
*/
|
||||||
|
__u64 modifier[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DRM_MODE_FB_DIRTY_ANNOTATE_COPY 0x01
|
#define DRM_MODE_FB_DIRTY_ANNOTATE_COPY 0x01
|
||||||
|
@ -718,6 +834,11 @@ struct drm_color_ctm {
|
||||||
/*
|
/*
|
||||||
* Conversion matrix in S31.32 sign-magnitude
|
* Conversion matrix in S31.32 sign-magnitude
|
||||||
* (not two's complement!) format.
|
* (not two's complement!) format.
|
||||||
|
*
|
||||||
|
* out matrix in
|
||||||
|
* |R| |0 1 2| |R|
|
||||||
|
* |G| = |3 4 5| x |G|
|
||||||
|
* |B| |6 7 8| |B|
|
||||||
*/
|
*/
|
||||||
__u64 matrix[9];
|
__u64 matrix[9];
|
||||||
};
|
};
|
||||||
|
@ -762,7 +883,7 @@ struct hdr_metadata_infoframe {
|
||||||
*/
|
*/
|
||||||
struct {
|
struct {
|
||||||
__u16 x, y;
|
__u16 x, y;
|
||||||
} display_primaries[3];
|
} display_primaries[3];
|
||||||
/**
|
/**
|
||||||
* @white_point: White Point of Colorspace Data.
|
* @white_point: White Point of Colorspace Data.
|
||||||
* These are coded as unsigned 16-bit values in units of
|
* These are coded as unsigned 16-bit values in units of
|
||||||
|
@ -773,7 +894,7 @@ struct hdr_metadata_infoframe {
|
||||||
*/
|
*/
|
||||||
struct {
|
struct {
|
||||||
__u16 x, y;
|
__u16 x, y;
|
||||||
} white_point;
|
} white_point;
|
||||||
/**
|
/**
|
||||||
* @max_display_mastering_luminance: Max Mastering Display Luminance.
|
* @max_display_mastering_luminance: Max Mastering Display Luminance.
|
||||||
* This value is coded as an unsigned 16-bit value in units of 1 cd/m2,
|
* This value is coded as an unsigned 16-bit value in units of 1 cd/m2,
|
||||||
|
@ -819,12 +940,31 @@ struct hdr_output_metadata {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DRM_MODE_PAGE_FLIP_EVENT
|
||||||
|
*
|
||||||
|
* Request that the kernel sends back a vblank event (see
|
||||||
|
* struct drm_event_vblank) with the &DRM_EVENT_FLIP_COMPLETE type when the
|
||||||
|
* page-flip is done.
|
||||||
|
*/
|
||||||
#define DRM_MODE_PAGE_FLIP_EVENT 0x01
|
#define DRM_MODE_PAGE_FLIP_EVENT 0x01
|
||||||
|
/**
|
||||||
|
* DRM_MODE_PAGE_FLIP_ASYNC
|
||||||
|
*
|
||||||
|
* Request that the page-flip is performed as soon as possible, ie. with no
|
||||||
|
* delay due to waiting for vblank. This may cause tearing to be visible on
|
||||||
|
* the screen.
|
||||||
|
*/
|
||||||
#define DRM_MODE_PAGE_FLIP_ASYNC 0x02
|
#define DRM_MODE_PAGE_FLIP_ASYNC 0x02
|
||||||
#define DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE 0x4
|
#define DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE 0x4
|
||||||
#define DRM_MODE_PAGE_FLIP_TARGET_RELATIVE 0x8
|
#define DRM_MODE_PAGE_FLIP_TARGET_RELATIVE 0x8
|
||||||
#define DRM_MODE_PAGE_FLIP_TARGET (DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE | \
|
#define DRM_MODE_PAGE_FLIP_TARGET (DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE | \
|
||||||
DRM_MODE_PAGE_FLIP_TARGET_RELATIVE)
|
DRM_MODE_PAGE_FLIP_TARGET_RELATIVE)
|
||||||
|
/**
|
||||||
|
* DRM_MODE_PAGE_FLIP_FLAGS
|
||||||
|
*
|
||||||
|
* Bitmask of flags suitable for &drm_mode_crtc_page_flip_target.flags.
|
||||||
|
*/
|
||||||
#define DRM_MODE_PAGE_FLIP_FLAGS (DRM_MODE_PAGE_FLIP_EVENT | \
|
#define DRM_MODE_PAGE_FLIP_FLAGS (DRM_MODE_PAGE_FLIP_EVENT | \
|
||||||
DRM_MODE_PAGE_FLIP_ASYNC | \
|
DRM_MODE_PAGE_FLIP_ASYNC | \
|
||||||
DRM_MODE_PAGE_FLIP_TARGET)
|
DRM_MODE_PAGE_FLIP_TARGET)
|
||||||
|
@ -918,11 +1058,53 @@ struct drm_mode_destroy_dumb {
|
||||||
__u32 handle;
|
__u32 handle;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* page-flip flags are valid, plus: */
|
/**
|
||||||
|
* DRM_MODE_ATOMIC_TEST_ONLY
|
||||||
|
*
|
||||||
|
* Do not apply the atomic commit, instead check whether the hardware supports
|
||||||
|
* this configuration.
|
||||||
|
*
|
||||||
|
* See &drm_mode_config_funcs.atomic_check for more details on test-only
|
||||||
|
* commits.
|
||||||
|
*/
|
||||||
#define DRM_MODE_ATOMIC_TEST_ONLY 0x0100
|
#define DRM_MODE_ATOMIC_TEST_ONLY 0x0100
|
||||||
|
/**
|
||||||
|
* DRM_MODE_ATOMIC_NONBLOCK
|
||||||
|
*
|
||||||
|
* Do not block while applying the atomic commit. The &DRM_IOCTL_MODE_ATOMIC
|
||||||
|
* IOCTL returns immediately instead of waiting for the changes to be applied
|
||||||
|
* in hardware. Note, the driver will still check that the update can be
|
||||||
|
* applied before retuning.
|
||||||
|
*/
|
||||||
#define DRM_MODE_ATOMIC_NONBLOCK 0x0200
|
#define DRM_MODE_ATOMIC_NONBLOCK 0x0200
|
||||||
|
/**
|
||||||
|
* DRM_MODE_ATOMIC_ALLOW_MODESET
|
||||||
|
*
|
||||||
|
* Allow the update to result in temporary or transient visible artifacts while
|
||||||
|
* the update is being applied. Applying the update may also take significantly
|
||||||
|
* more time than a page flip. All visual artifacts will disappear by the time
|
||||||
|
* the update is completed, as signalled through the vblank event's timestamp
|
||||||
|
* (see struct drm_event_vblank).
|
||||||
|
*
|
||||||
|
* This flag must be set when the KMS update might cause visible artifacts.
|
||||||
|
* Without this flag such KMS update will return a EINVAL error. What kind of
|
||||||
|
* update may cause visible artifacts depends on the driver and the hardware.
|
||||||
|
* User-space that needs to know beforehand if an update might cause visible
|
||||||
|
* artifacts can use &DRM_MODE_ATOMIC_TEST_ONLY without
|
||||||
|
* &DRM_MODE_ATOMIC_ALLOW_MODESET to see if it fails.
|
||||||
|
*
|
||||||
|
* To the best of the driver's knowledge, visual artifacts are guaranteed to
|
||||||
|
* not appear when this flag is not set. Some sinks might display visual
|
||||||
|
* artifacts outside of the driver's control.
|
||||||
|
*/
|
||||||
#define DRM_MODE_ATOMIC_ALLOW_MODESET 0x0400
|
#define DRM_MODE_ATOMIC_ALLOW_MODESET 0x0400
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DRM_MODE_ATOMIC_FLAGS
|
||||||
|
*
|
||||||
|
* Bitfield of flags accepted by the &DRM_IOCTL_MODE_ATOMIC IOCTL in
|
||||||
|
* &drm_mode_atomic.flags.
|
||||||
|
*/
|
||||||
#define DRM_MODE_ATOMIC_FLAGS (\
|
#define DRM_MODE_ATOMIC_FLAGS (\
|
||||||
DRM_MODE_PAGE_FLIP_EVENT |\
|
DRM_MODE_PAGE_FLIP_EVENT |\
|
||||||
DRM_MODE_PAGE_FLIP_ASYNC |\
|
DRM_MODE_PAGE_FLIP_ASYNC |\
|
||||||
|
@ -1026,6 +1208,10 @@ struct drm_mode_destroy_blob {
|
||||||
* struct drm_mode_create_lease - Create lease
|
* struct drm_mode_create_lease - Create lease
|
||||||
*
|
*
|
||||||
* Lease mode resources, creating another drm_master.
|
* Lease mode resources, creating another drm_master.
|
||||||
|
*
|
||||||
|
* The @object_ids array must reference at least one CRTC, one connector and
|
||||||
|
* one plane if &DRM_CLIENT_CAP_UNIVERSAL_PLANES is enabled. Alternatively,
|
||||||
|
* the lease can be completely empty.
|
||||||
*/
|
*/
|
||||||
struct drm_mode_create_lease {
|
struct drm_mode_create_lease {
|
||||||
/** @object_ids: Pointer to array of object ids (__u32) */
|
/** @object_ids: Pointer to array of object ids (__u32) */
|
||||||
|
|
Loading…
Reference in New Issue