mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 03:00:11 +01:00
drm-uapi: Sync the panthor header
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Christoph Pillmayer <christoph.pillmayer@arm.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36385>
This commit is contained in:
parent
ef760d4c59
commit
8c8864baea
1 changed files with 157 additions and 3 deletions
|
|
@ -144,6 +144,16 @@ enum drm_panthor_ioctl_id {
|
|||
* pgoff_t size.
|
||||
*/
|
||||
DRM_PANTHOR_SET_USER_MMIO_OFFSET,
|
||||
|
||||
/** @DRM_PANTHOR_BO_SYNC: Sync BO data to/from the device */
|
||||
DRM_PANTHOR_BO_SYNC,
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_BO_QUERY_INFO: Query information about a BO.
|
||||
*
|
||||
* This is useful for imported BOs.
|
||||
*/
|
||||
DRM_PANTHOR_BO_QUERY_INFO,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -245,6 +255,26 @@ enum drm_panthor_dev_query_type {
|
|||
DRM_PANTHOR_DEV_QUERY_GROUP_PRIORITIES_INFO,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum drm_panthor_gpu_coherency: Type of GPU coherency
|
||||
*/
|
||||
enum drm_panthor_gpu_coherency {
|
||||
/**
|
||||
* @DRM_PANTHOR_GPU_COHERENCY_ACE_LITE: ACE Lite coherency.
|
||||
*/
|
||||
DRM_PANTHOR_GPU_COHERENCY_ACE_LITE = 0,
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_GPU_COHERENCY_ACE: ACE coherency.
|
||||
*/
|
||||
DRM_PANTHOR_GPU_COHERENCY_ACE = 1,
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_GPU_COHERENCY_NONE: No coherency.
|
||||
*/
|
||||
DRM_PANTHOR_GPU_COHERENCY_NONE = 31,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_gpu_info - GPU information
|
||||
*
|
||||
|
|
@ -301,7 +331,16 @@ struct drm_panthor_gpu_info {
|
|||
*/
|
||||
__u32 thread_max_barrier_size;
|
||||
|
||||
/** @coherency_features: Coherency features. */
|
||||
/**
|
||||
* @coherency_features: Coherency features.
|
||||
*
|
||||
* Combination of drm_panthor_gpu_coherency flags.
|
||||
*
|
||||
* Note that this is just what the coherency protocols supported by the
|
||||
* GPU, but the actual coherency in place depends on the SoC
|
||||
* integration and is reflected by
|
||||
* drm_panthor_gpu_info::selected_coherency.
|
||||
*/
|
||||
__u32 coherency_features;
|
||||
|
||||
/** @texture_features: Texture features. */
|
||||
|
|
@ -310,8 +349,12 @@ struct drm_panthor_gpu_info {
|
|||
/** @as_present: Bitmask encoding the number of address-space exposed by the MMU. */
|
||||
__u32 as_present;
|
||||
|
||||
/** @pad0: MBZ. */
|
||||
__u32 pad0;
|
||||
/**
|
||||
* @select_coherency: Coherency selected for this device.
|
||||
*
|
||||
* One of drm_panthor_gpu_coherency.
|
||||
*/
|
||||
__u32 selected_coherency;
|
||||
|
||||
/** @shader_present: Bitmask encoding the shader cores exposed by the GPU. */
|
||||
__u64 shader_present;
|
||||
|
|
@ -327,6 +370,9 @@ struct drm_panthor_gpu_info {
|
|||
|
||||
/** @pad: MBZ. */
|
||||
__u32 pad;
|
||||
|
||||
/** @gpu_features: Bitmask describing supported GPU-wide features */
|
||||
__u64 gpu_features;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -635,6 +681,15 @@ struct drm_panthor_vm_get_state {
|
|||
enum drm_panthor_bo_flags {
|
||||
/** @DRM_PANTHOR_BO_NO_MMAP: The buffer object will never be CPU-mapped in userspace. */
|
||||
DRM_PANTHOR_BO_NO_MMAP = (1 << 0),
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_BO_WB_MMAP: Force "Write-Back Cacheable" CPU mapping.
|
||||
*
|
||||
* CPU map the buffer object in userspace by forcing the "Write-Back
|
||||
* Cacheable" cacheability attribute. The mapping otherwise uses the
|
||||
* "Non-Cacheable" attribute if the GPU is not IO coherent.
|
||||
*/
|
||||
DRM_PANTHOR_BO_WB_MMAP = (1 << 1),
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1037,6 +1092,101 @@ struct drm_panthor_set_user_mmio_offset {
|
|||
__u64 offset;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum drm_panthor_bo_sync_op_type - BO sync type
|
||||
*/
|
||||
enum drm_panthor_bo_sync_op_type {
|
||||
/** @DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH: Flush CPU caches. */
|
||||
DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH = 0,
|
||||
|
||||
/** @DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE: Flush and invalidate CPU caches. */
|
||||
DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_bo_sync_op - BO map sync op
|
||||
*/
|
||||
struct drm_panthor_bo_sync_op {
|
||||
/** @handle: Handle of the buffer object to sync. */
|
||||
__u32 handle;
|
||||
|
||||
/** @type: Type of operation. */
|
||||
__u32 type;
|
||||
|
||||
/**
|
||||
* @offset: Offset into the BO at which the sync range starts.
|
||||
*
|
||||
* This will be rounded down to the nearest cache line as needed.
|
||||
*/
|
||||
__u64 offset;
|
||||
|
||||
/**
|
||||
* @size: Size of the range to sync
|
||||
*
|
||||
* @size + @offset will be rounded up to the nearest cache line as
|
||||
* needed.
|
||||
*/
|
||||
__u64 size;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_bo_sync - BO map sync request
|
||||
*/
|
||||
struct drm_panthor_bo_sync {
|
||||
/**
|
||||
* @ops: Array of struct drm_panthor_bo_sync_op sync operations.
|
||||
*/
|
||||
struct drm_panthor_obj_array ops;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum drm_panthor_bo_extra_flags - Set of flags returned on a BO_QUERY_INFO request
|
||||
*
|
||||
* Those are flags reflecting BO properties that are not directly coming from the flags
|
||||
* passed are creation time, or information on BOs that were imported from other drivers.
|
||||
*/
|
||||
enum drm_panthor_bo_extra_flags {
|
||||
/**
|
||||
* @DRM_PANTHOR_BO_IS_IMPORTED: BO has been imported from an external driver.
|
||||
*
|
||||
* Note that imported dma-buf handles are not flagged as imported if they
|
||||
* where exported by panthor. Only buffers that are coming from other drivers
|
||||
* (dma heaps, other GPUs, display controllers, V4L, ...).
|
||||
*
|
||||
* It's also important to note that all imported BOs are mapped cached and can't
|
||||
* be considered IO-coherent even if the GPU is. This means they require explicit
|
||||
* syncs that must go through the DRM_PANTHOR_BO_SYNC ioctl (userland cache
|
||||
* maintenance is not allowed in that case, because extra operations might be
|
||||
* needed to make changes visible to the CPU/device, like buffer migration when the
|
||||
* exporter is a GPU with its own VRAM).
|
||||
*/
|
||||
DRM_PANTHOR_BO_IS_IMPORTED = (1 << 0),
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_bo_query_info - Query BO info
|
||||
*/
|
||||
struct drm_panthor_bo_query_info {
|
||||
/** @handle: Handle of the buffer object to query flags on. */
|
||||
__u32 handle;
|
||||
|
||||
/**
|
||||
* @extra_flags: Combination of enum drm_panthor_bo_extra_flags flags.
|
||||
*/
|
||||
__u32 extra_flags;
|
||||
|
||||
/**
|
||||
* @create_flags: Flags passed at creation time.
|
||||
*
|
||||
* Combination of enum drm_panthor_bo_flags flags.
|
||||
* Will be zero if the buffer comes from a different driver.
|
||||
*/
|
||||
__u32 create_flags;
|
||||
|
||||
/** @pad: Will be zero on return. */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* DRM_IOCTL_PANTHOR() - Build a Panthor IOCTL number
|
||||
* @__access: Access type. Must be R, W or RW.
|
||||
|
|
@ -1083,6 +1233,10 @@ enum {
|
|||
DRM_IOCTL_PANTHOR(WR, BO_SET_LABEL, bo_set_label),
|
||||
DRM_IOCTL_PANTHOR_SET_USER_MMIO_OFFSET =
|
||||
DRM_IOCTL_PANTHOR(WR, SET_USER_MMIO_OFFSET, set_user_mmio_offset),
|
||||
DRM_IOCTL_PANTHOR_BO_SYNC =
|
||||
DRM_IOCTL_PANTHOR(WR, BO_SYNC, bo_sync),
|
||||
DRM_IOCTL_PANTHOR_BO_QUERY_INFO =
|
||||
DRM_IOCTL_PANTHOR(WR, BO_QUERY_INFO, bo_query_info),
|
||||
};
|
||||
|
||||
#if defined(__cplusplus)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue