12#if defined(__cplusplus)
73#define DRM_PVR_OBJ_ARRAY(cnt, ptr) \
74 { .stride = sizeof((ptr)[0]), .count = (cnt), .array = (__u64)(uintptr_t)(ptr) }
94#define PVR_IOCTL(_ioctl, _mode, _data) \
95 _mode(DRM_COMMAND_BASE + (_ioctl), struct drm_pvr_ioctl_##_data##_args)
97#define DRM_IOCTL_PVR_DEV_QUERY PVR_IOCTL(0x00, DRM_IOWR, dev_query)
98#define DRM_IOCTL_PVR_CREATE_BO PVR_IOCTL(0x01, DRM_IOWR, create_bo)
99#define DRM_IOCTL_PVR_GET_BO_MMAP_OFFSET PVR_IOCTL(0x02, DRM_IOWR, get_bo_mmap_offset)
100#define DRM_IOCTL_PVR_CREATE_VM_CONTEXT PVR_IOCTL(0x03, DRM_IOWR, create_vm_context)
101#define DRM_IOCTL_PVR_DESTROY_VM_CONTEXT PVR_IOCTL(0x04, DRM_IOW, destroy_vm_context)
102#define DRM_IOCTL_PVR_VM_MAP PVR_IOCTL(0x05, DRM_IOW, vm_map)
103#define DRM_IOCTL_PVR_VM_UNMAP PVR_IOCTL(0x06, DRM_IOW, vm_unmap)
104#define DRM_IOCTL_PVR_CREATE_CONTEXT PVR_IOCTL(0x07, DRM_IOWR, create_context)
105#define DRM_IOCTL_PVR_DESTROY_CONTEXT PVR_IOCTL(0x08, DRM_IOW, destroy_context)
106#define DRM_IOCTL_PVR_CREATE_FREE_LIST PVR_IOCTL(0x09, DRM_IOWR, create_free_list)
107#define DRM_IOCTL_PVR_DESTROY_FREE_LIST PVR_IOCTL(0x0a, DRM_IOW, destroy_free_list)
108#define DRM_IOCTL_PVR_CREATE_HWRT_DATASET PVR_IOCTL(0x0b, DRM_IOWR, create_hwrt_dataset)
109#define DRM_IOCTL_PVR_DESTROY_HWRT_DATASET PVR_IOCTL(0x0c, DRM_IOW, destroy_hwrt_dataset)
110#define DRM_IOCTL_PVR_SUBMIT_JOBS PVR_IOCTL(0x0d, DRM_IOW, submit_jobs)
536#define DRM_PVR_BO_BYPASS_DEVICE_CACHE _BITULL(0)
537#define DRM_PVR_BO_PM_FW_PROTECT _BITULL(1)
538#define DRM_PVR_BO_ALLOW_CPU_USERSPACE_ACCESS _BITULL(2)
541#define DRM_PVR_BO_FLAGS_MASK (DRM_PVR_BO_BYPASS_DEVICE_CACHE | DRM_PVR_BO_PM_FW_PROTECT | \
542 DRM_PVR_BO_ALLOW_CPU_USERSPACE_ACCESS)
937#define PVR_DRM_HWRT_FREE_LIST_LOCAL 0
938#define PVR_DRM_HWRT_FREE_LIST_GLOBAL 1U
1056#define DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_MASK 0xf
1057#define DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_SYNCOBJ 0
1058#define DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_TIMELINE_SYNCOBJ 1
1059#define DRM_PVR_SYNC_OP_FLAG_SIGNAL _BITULL(31)
1060#define DRM_PVR_SYNC_OP_FLAG_WAIT 0
1062#define DRM_PVR_SYNC_OP_FLAGS_MASK (DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_MASK | \
1063 DRM_PVR_SYNC_OP_FLAG_SIGNAL)
1098#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_FIRST _BITULL(0)
1099#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_LAST _BITULL(1)
1100#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_SINGLE_CORE _BITULL(2)
1101#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_FLAGS_MASK \
1102 (DRM_PVR_SUBMIT_JOB_GEOM_CMD_FIRST | \
1103 DRM_PVR_SUBMIT_JOB_GEOM_CMD_LAST | \
1104 DRM_PVR_SUBMIT_JOB_GEOM_CMD_SINGLE_CORE)
1143#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_SINGLE_CORE _BITULL(0)
1144#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_DEPTHBUFFER _BITULL(1)
1145#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_STENCILBUFFER _BITULL(2)
1146#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_PREVENT_CDM_OVERLAP _BITULL(3)
1147#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_SCRATCHBUFFER _BITULL(4)
1148#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_GET_VIS_RESULTS _BITULL(5)
1149#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_PARTIAL_RENDER _BITULL(6)
1150#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_DISABLE_PIXELMERGE _BITULL(7)
1151#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_FLAGS_MASK \
1152 (DRM_PVR_SUBMIT_JOB_FRAG_CMD_SINGLE_CORE | \
1153 DRM_PVR_SUBMIT_JOB_FRAG_CMD_DEPTHBUFFER | \
1154 DRM_PVR_SUBMIT_JOB_FRAG_CMD_STENCILBUFFER | \
1155 DRM_PVR_SUBMIT_JOB_FRAG_CMD_PREVENT_CDM_OVERLAP | \
1156 DRM_PVR_SUBMIT_JOB_FRAG_CMD_SCRATCHBUFFER | \
1157 DRM_PVR_SUBMIT_JOB_FRAG_CMD_GET_VIS_RESULTS | \
1158 DRM_PVR_SUBMIT_JOB_FRAG_CMD_PARTIAL_RENDER | \
1159 DRM_PVR_SUBMIT_JOB_FRAG_CMD_DISABLE_PIXELMERGE)
1176#define DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_PREVENT_ALL_OVERLAP _BITULL(0)
1177#define DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_SINGLE_CORE _BITULL(1)
1178#define DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_FLAGS_MASK \
1179 (DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_PREVENT_ALL_OVERLAP | \
1180 DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_SINGLE_CORE)
1193#define DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_SINGLE_CORE _BITULL(0)
1195#define DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_FLAGS_MASK \
1196 DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_SINGLE_CORE
1291#if defined(__cplusplus)
int32_t __s32
Definition drm.h:41
uint32_t __u32
Definition drm.h:42
uint16_t __u16
Definition drm.h:40
uint64_t __u64
Definition drm.h:44
drm_pvr_heap_id
Definition pvr_drm.h:265
@ DRM_PVR_HEAP_PDS_CODE_DATA
Definition pvr_drm.h:269
@ DRM_PVR_HEAP_RGNHDR
Definition pvr_drm.h:273
@ DRM_PVR_HEAP_TRANSFER_FRAG
Definition pvr_drm.h:277
@ DRM_PVR_HEAP_COUNT
Definition pvr_drm.h:286
@ DRM_PVR_HEAP_VIS_TEST
Definition pvr_drm.h:275
@ DRM_PVR_HEAP_USC_CODE
Definition pvr_drm.h:271
@ DRM_PVR_HEAP_GENERAL
Definition pvr_drm.h:267
drm_pvr_dev_query
Definition pvr_drm.h:443
@ DRM_PVR_DEV_QUERY_HEAP_INFO_GET
Definition pvr_drm.h:472
@ DRM_PVR_DEV_QUERY_STATIC_DATA_AREAS_GET
Definition pvr_drm.h:478
@ DRM_PVR_DEV_QUERY_GPU_INFO_GET
Definition pvr_drm.h:448
@ DRM_PVR_DEV_QUERY_ENHANCEMENTS_GET
Definition pvr_drm.h:466
@ DRM_PVR_DEV_QUERY_RUNTIME_INFO_GET
Definition pvr_drm.h:454
@ DRM_PVR_DEV_QUERY_QUIRKS_GET
Definition pvr_drm.h:460
drm_pvr_ctx_priority
Definition pvr_drm.h:724
@ DRM_PVR_CTX_PRIORITY_LOW
Definition pvr_drm.h:726
@ DRM_PVR_CTX_PRIORITY_NORMAL
Definition pvr_drm.h:729
@ DRM_PVR_CTX_PRIORITY_HIGH
Definition pvr_drm.h:735
drm_pvr_static_data_area_usage
Definition pvr_drm.h:337
@ DRM_PVR_STATIC_DATA_AREA_YUV_CSC
Definition pvr_drm.h:383
@ DRM_PVR_STATIC_DATA_AREA_VDM_SYNC
Definition pvr_drm.h:359
@ DRM_PVR_STATIC_DATA_AREA_EOT
Definition pvr_drm.h:344
@ DRM_PVR_STATIC_DATA_AREA_FENCE
Definition pvr_drm.h:352
drm_pvr_ctx_type
Definition pvr_drm.h:742
@ DRM_PVR_CTX_TYPE_TRANSFER_FRAG
Definition pvr_drm.h:757
@ DRM_PVR_CTX_TYPE_RENDER
Definition pvr_drm.h:746
@ DRM_PVR_CTX_TYPE_COMPUTE
Definition pvr_drm.h:751
drm_pvr_job_type
Definition pvr_drm.h:1201
@ DRM_PVR_JOB_TYPE_COMPUTE
Definition pvr_drm.h:1209
@ DRM_PVR_JOB_TYPE_TRANSFER_FRAG
Definition pvr_drm.h:1212
@ DRM_PVR_JOB_TYPE_FRAGMENT
Definition pvr_drm.h:1206
@ DRM_PVR_JOB_TYPE_GEOMETRY
Definition pvr_drm.h:1203
__u64 tpc_dev_addr
Definition pvr_drm.h:907
__u32 tpc_size
Definition pvr_drm.h:910
__u64 rtc_dev_addr
Definition pvr_drm.h:919
__u32 tpc_stride
Definition pvr_drm.h:913
__u64 vheap_table_dev_addr
Definition pvr_drm.h:916
__u64 macrotile_array_dev_addr
Definition pvr_drm.h:931
__u64 pm_mlist_dev_addr
Definition pvr_drm.h:928
__u64 region_header_dev_addr
Definition pvr_drm.h:934
__u32 _padding_c
Definition pvr_drm.h:254
__u16 _padding_a
Definition pvr_drm.h:251
__u64 enhancements
Definition pvr_drm.h:245
__u16 count
Definition pvr_drm.h:248
__u32 num_phantoms
Definition pvr_drm.h:141
__u32 _padding_c
Definition pvr_drm.h:144
__u64 gpu_id
Definition pvr_drm.h:136
struct drm_pvr_obj_array heaps
Definition pvr_drm.h:326
__u16 count
Definition pvr_drm.h:216
__u32 _padding_c
Definition pvr_drm.h:225
__u16 musthave_count
Definition pvr_drm.h:222
__u64 quirks
Definition pvr_drm.h:213
__u32 cdm_max_local_mem_size_regs
Definition pvr_drm.h:190
__u64 free_list_min_pages
Definition pvr_drm.h:159
__u32 common_store_partition_space_size
Definition pvr_drm.h:179
__u64 free_list_max_pages
Definition pvr_drm.h:165
__u32 max_coeffs
Definition pvr_drm.h:184
__u32 common_store_alloc_region_size
Definition pvr_drm.h:172
struct drm_pvr_obj_array static_data_areas
Definition pvr_drm.h:434
__u64 size
Definition pvr_drm.h:300
__u32 flags
Definition pvr_drm.h:303
__u64 base
Definition pvr_drm.h:297
__u32 page_size_log2
Definition pvr_drm.h:306
Definition pvr_drm.h:1218
__u32 set_handle
Definition pvr_drm.h:1220
__u32 data_index
Definition pvr_drm.h:1223
__u32 _padding_c
Definition pvr_drm.h:561
__u64 size
Definition pvr_drm.h:552
__u64 flags
Definition pvr_drm.h:569
__u32 handle
Definition pvr_drm.h:558
__s32 priority
Definition pvr_drm.h:780
__u32 flags
Definition pvr_drm.h:773
__u32 type
Definition pvr_drm.h:770
__u32 handle
Definition pvr_drm.h:783
__u64 static_context_state
Definition pvr_drm.h:788
__u32 static_context_state_len
Definition pvr_drm.h:793
__u32 vm_context_handle
Definition pvr_drm.h:799
__u64 callstack_addr
Definition pvr_drm.h:805
__u32 grow_threshold
Definition pvr_drm.h:869
__u32 handle
Definition pvr_drm.h:880
__u32 grow_num_pages
Definition pvr_drm.h:863
__u32 vm_context_handle
Definition pvr_drm.h:875
__u64 free_list_gpu_addr
Definition pvr_drm.h:854
__u32 initial_num_pages
Definition pvr_drm.h:857
__u32 max_num_pages
Definition pvr_drm.h:860
struct drm_pvr_create_hwrt_geom_data_args geom_data_args
Definition pvr_drm.h:946
struct drm_pvr_create_hwrt_rt_data_args rt_data_args[2]
Definition pvr_drm.h:954
__u32 isp_merge_upper_x
Definition pvr_drm.h:990
__u32 isp_merge_lower_y
Definition pvr_drm.h:981
__u32 isp_merge_scale_y
Definition pvr_drm.h:987
__u32 handle
Definition pvr_drm.h:1008
__u32 layers
Definition pvr_drm.h:975
__u32 region_header_size
Definition pvr_drm.h:1003
__u32 free_list_handles[2]
Definition pvr_drm.h:963
__u32 height
Definition pvr_drm.h:969
__u32 isp_merge_scale_x
Definition pvr_drm.h:984
__u32 width
Definition pvr_drm.h:966
__u32 samples
Definition pvr_drm.h:972
__u32 isp_merge_upper_y
Definition pvr_drm.h:993
__u32 isp_merge_lower_x
Definition pvr_drm.h:978
__u32 _padding_4
Definition pvr_drm.h:609
__u32 handle
Definition pvr_drm.h:606
__u32 _padding_4
Definition pvr_drm.h:819
__u32 handle
Definition pvr_drm.h:816
__u32 _padding_4
Definition pvr_drm.h:894
__u32 handle
Definition pvr_drm.h:891
Definition pvr_drm.h:1015
__u32 handle
Definition pvr_drm.h:1019
__u32 _padding_4
Definition pvr_drm.h:1022
__u32 handle
Definition pvr_drm.h:620
__u32 _padding_4
Definition pvr_drm.h:623
__u64 pointer
Definition pvr_drm.h:508
__u32 size
Definition pvr_drm.h:499
__u32 type
Definition pvr_drm.h:488
__u64 offset
Definition pvr_drm.h:593
__u32 handle
Definition pvr_drm.h:587
__u32 _padding_4
Definition pvr_drm.h:590
Definition pvr_drm.h:1286
struct drm_pvr_obj_array jobs
Definition pvr_drm.h:1288
__u32 _padding_14
Definition pvr_drm.h:671
__u64 device_addr
Definition pvr_drm.h:662
__u32 vm_context_handle
Definition pvr_drm.h:650
__u32 flags
Definition pvr_drm.h:653
__u32 handle
Definition pvr_drm.h:668
__u64 size
Definition pvr_drm.h:688
__u64 offset
Definition pvr_drm.h:677
__u32 vm_context_handle
Definition pvr_drm.h:699
__u32 _padding_4
Definition pvr_drm.h:702
__u64 device_addr
Definition pvr_drm.h:708
__u64 size
Definition pvr_drm.h:713
Definition pvr_drm.h:1229
__u64 cmd_stream
Definition pvr_drm.h:1266
struct drm_pvr_hwrt_data_ref hwrt
Definition pvr_drm.h:1276
__u32 flags
Definition pvr_drm.h:1254
__u32 type
Definition pvr_drm.h:1235
struct drm_pvr_obj_array sync_ops
Definition pvr_drm.h:1269
__u32 context_handle
Definition pvr_drm.h:1247
__u32 cmd_stream_len
Definition pvr_drm.h:1259
__u64 array
Definition pvr_drm.h:63
__u32 count
Definition pvr_drm.h:60
__u32 stride
Definition pvr_drm.h:57
__u16 location_heap_id
Definition pvr_drm.h:404
__u32 size
Definition pvr_drm.h:407
__u64 offset
Definition pvr_drm.h:410
__u16 area_usage
Definition pvr_drm.h:397
Definition pvr_drm.h:1068
__u64 value
Definition pvr_drm.h:1076
__u32 handle
Definition pvr_drm.h:1070
__u32 flags
Definition pvr_drm.h:1073