Lines Matching +full:gpu +full:- +full:id
1 /* SPDX-License-Identifier: MIT */
19 * - Structures must be aligned on 64-bit/8-byte. If the object is not
21 * - Fields must be explicitly aligned to their natural type alignment with
23 * - All padding fields will be checked by the driver to make sure they are
25 * - Flags can be added, but not removed/replaced.
26 * - New fields can be added to the main structures (the structures
31 * - New fields can be added to indirect objects (objects pointed by the
35 * - If the kernel driver is too old to know some fields, those will be
37 * - If userspace is too old to know some fields, those will be zeroed
39 * - Each new flag/field addition must come with a driver version update so
42 * - Structures should not contain unions, as this would defeat the
44 * - IOCTLs can't be removed or replaced. New IOCTL IDs should be placed
56 * different offset on 32-bit and 64-bit systems.
61 * GPU cache flushing through CS instructions, but the flush reduction
63 * ioctl, but Arm provides a well-isolated register page containing only this
64 * read-only register, so let's expose this page through a static mmap offset
66 * user <-> kernel round-trip.
78 * enum drm_panthor_ioctl_id - IOCTL IDs
80 * Place new ioctls at the end, don't re-order, don't replace or remove entries.
138 * type seen by the process that manipulates the FD, such that a 32-bit process can
140 * like FEX, where the emulator is an 64-bit binary which might be executing 32-bit
141 * code. In that case, the kernel thinks it's the 64-bit process and assumes
154 * struct drm_panthor_obj_array - Object array.
176 * DRM_PANTHOR_OBJ_ARRAY() - Initialize a drm_panthor_obj_array field.
187 * enum drm_panthor_sync_op_flags - Synchronization operation flags.
210 * struct drm_panthor_sync_op - Synchronization operation.
228 * enum drm_panthor_dev_query_type - Query type
230 * Place new types at the end, don't re-order, don't remove or replace.
233 /** @DRM_PANTHOR_DEV_QUERY_GPU_INFO: Query GPU information. */
236 /** @DRM_PANTHOR_DEV_QUERY_CSIF_INFO: Query command-stream interface information. */
249 * struct drm_panthor_gpu_info - GPU information
251 * Structure grouping all queryable information relating to the GPU.
254 /** @gpu_id : GPU ID. */
264 /** @gpu_rev: GPU revision. */
267 /** @csf_id: Command stream frontend ID. */
276 /** @l2_features: L2-cache features. */
310 /** @as_present: Bitmask encoding the number of address-space exposed by the MMU. */
316 /** @shader_present: Bitmask encoding the shader cores exposed by the GPU. */
319 /** @l2_present: Bitmask encoding the L2 caches exposed by the GPU. */
322 /** @tiler_present: Bitmask encoding the tiler units exposed by the GPU. */
331 /** @gpu_features: Bitmask describing supported GPU-wide features */
336 * struct drm_panthor_csif_info - Command stream interface information
358 * [cs_slot_count - unpreserved_cs_reg_count .. cs_slot_count] registers are
370 * struct drm_panthor_timestamp_info - Timestamp information
372 * Structure grouping all queryable information relating to the GPU timestamp.
389 * struct drm_panthor_group_priorities_info - Group priorities information
406 * struct drm_panthor_dev_query - Arguments passed to DRM_PANTHOR_IOCTL_DEV_QUERY
434 * struct drm_panthor_vm_create - Arguments passed to DRM_PANTHOR_IOCTL_VM_CREATE
440 /** @id: Returned VM ID. */
441 __u32 id;
446 * The kernel will pick the remaining space to map kernel-only objects to the
454 * TASK_SIZE and the virtual range supported by the GPU MMU (the kernel/user
467 * struct drm_panthor_vm_destroy - Arguments passed to DRM_PANTHOR_IOCTL_VM_DESTROY
470 /** @id: ID of the VM to destroy. */
471 __u32 id;
478 * enum drm_panthor_vm_bind_op_flags - VM bind operation flags
482 * @DRM_PANTHOR_VM_BIND_OP_MAP_READONLY: Map the memory read-only.
489 * @DRM_PANTHOR_VM_BIND_OP_MAP_NOEXEC: Map the memory not-executable.
525 * struct drm_panthor_vm_bind_op - VM bind operation
533 * MBZ for unmap or sync-only operations.
539 * MBZ for unmap or sync-only operations.
545 * MBZ for sync-only operations.
551 * MBZ for sync-only operations.
562 * This array shall not be empty for sync-only operations.
569 * enum drm_panthor_vm_bind_flags - VM bind flags
580 * struct drm_panthor_vm_bind - Arguments passed to DRM_IOCTL_PANTHOR_VM_BIND
594 * enum drm_panthor_vm_state - VM states.
611 * rejected, and any GPU job targeting this VM will fail.
621 * struct drm_panthor_vm_get_state - Get VM state.
636 * enum drm_panthor_bo_flags - Buffer object flags, passed at creation time.
639 /** @DRM_PANTHOR_BO_NO_MMAP: The buffer object will never be CPU-mapped in userspace. */
644 * struct drm_panthor_bo_create - Arguments passed to DRM_IOCTL_PANTHOR_BO_CREATE.
650 * The (page-aligned) allocated size for the object will be returned.
662 * If not zero, the field must refer to a valid VM ID, and implies that:
663 * - the buffer object will only ever be bound to that VM
664 * - cannot be exported as a PRIME fd
680 * struct drm_panthor_bo_mmap_offset - Arguments passed to DRM_IOCTL_PANTHOR_BO_MMAP_OFFSET.
694 * struct drm_panthor_queue_create - Queue creation arguments.
711 * enum drm_panthor_group_priority - Scheduling group priority
736 * struct drm_panthor_group_create - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_CREATE
800 * @vm_id: VM ID to bind this group to.
814 * struct drm_panthor_group_destroy - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_DESTROY
825 * struct drm_panthor_queue_submit - Job submission arguments.
828 * command stream ring-buffer. Queue submission is always part of a group
838 * Must be 64-bit/8-byte aligned (the size of a CS instruction)
848 * @stream_addr: GPU address of the command stream to execute.
850 * Must be aligned on 64-byte.
861 * ensure the GPU doesn't get garbage when reading the indirect command
877 * struct drm_panthor_group_submit - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_SUBMIT
891 * enum drm_panthor_group_state_flags - Group state flags
919 * struct drm_panthor_group_get_state - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_GET_STATE
942 * struct drm_panthor_tiler_heap_create - Arguments passed to DRM_IOCTL_PANTHOR_TILER_HEAP_CREATE
945 /** @vm_id: VM ID the tiler heap should be mapped to */
954 * Must be page-aligned and lie in the [128k:8M] range.
966 * @target_in_flight: Maximum number of in-flight render passes.
968 * If the heap has more than tiler jobs in-flight, the FW will wait for render
976 /** @tiler_heap_ctx_gpu_va: Returned heap GPU virtual address returned */
982 * The tiler heap is formed of heap chunks forming a single-link list. This
989 * struct drm_panthor_tiler_heap_destroy - Arguments passed to DRM_IOCTL_PANTHOR_TILER_HEAP_DESTROY
1004 * struct drm_panthor_bo_set_label - Arguments passed to DRM_IOCTL_PANTHOR_BO_SET_LABEL
1014 * @label: User pointer to a NUL-terminated string
1022 * struct drm_panthor_set_user_mmio_offset - Arguments passed to
1044 * DRM_IOCTL_PANTHOR() - Build a Panthor IOCTL number
1046 * @__id: One of the DRM_PANTHOR_xxx id.