XenevaOS
Loading...
Searching...
No Matches
Classes | Macros | Enumerations
pvr_drm.h File Reference
#include "drm.h"
#include <linux/const.h>
#include <linux/types.h>
Include dependency graph for pvr_drm.h:

Go to the source code of this file.

Classes

struct  drm_pvr_obj_array
 
struct  drm_pvr_dev_query_gpu_info
 
struct  drm_pvr_dev_query_runtime_info
 
struct  drm_pvr_dev_query_quirks
 
struct  drm_pvr_dev_query_enhancements
 
struct  drm_pvr_heap
 
struct  drm_pvr_dev_query_heap_info
 
struct  drm_pvr_static_data_area
 
struct  drm_pvr_dev_query_static_data_areas
 
struct  drm_pvr_ioctl_dev_query_args
 
struct  drm_pvr_ioctl_create_bo_args
 
struct  drm_pvr_ioctl_get_bo_mmap_offset_args
 
struct  drm_pvr_ioctl_create_vm_context_args
 
struct  drm_pvr_ioctl_destroy_vm_context_args
 
struct  drm_pvr_ioctl_vm_map_args
 
struct  drm_pvr_ioctl_vm_unmap_args
 
struct  drm_pvr_ioctl_create_context_args
 
struct  drm_pvr_ioctl_destroy_context_args
 
struct  drm_pvr_ioctl_create_free_list_args
 
struct  drm_pvr_ioctl_destroy_free_list_args
 
struct  drm_pvr_create_hwrt_geom_data_args
 
struct  drm_pvr_create_hwrt_rt_data_args
 
struct  drm_pvr_ioctl_create_hwrt_dataset_args
 
struct  drm_pvr_ioctl_destroy_hwrt_dataset_args
 
struct  drm_pvr_sync_op
 
struct  drm_pvr_hwrt_data_ref
 
struct  drm_pvr_job
 
struct  drm_pvr_ioctl_submit_jobs_args
 

Macros

#define DRM_PVR_OBJ_ARRAY(cnt, ptr)    { .stride = sizeof((ptr)[0]), .count = (cnt), .array = (__u64)(uintptr_t)(ptr) }
 
#define PVR_IOCTL(_ioctl, _mode, _data)    _mode(DRM_COMMAND_BASE + (_ioctl), struct drm_pvr_ioctl_##_data##_args)
 
#define DRM_IOCTL_PVR_DEV_QUERY   PVR_IOCTL(0x00, DRM_IOWR, dev_query)
 
#define DRM_IOCTL_PVR_CREATE_BO   PVR_IOCTL(0x01, DRM_IOWR, create_bo)
 
#define DRM_IOCTL_PVR_GET_BO_MMAP_OFFSET   PVR_IOCTL(0x02, DRM_IOWR, get_bo_mmap_offset)
 
#define DRM_IOCTL_PVR_CREATE_VM_CONTEXT   PVR_IOCTL(0x03, DRM_IOWR, create_vm_context)
 
#define DRM_IOCTL_PVR_DESTROY_VM_CONTEXT   PVR_IOCTL(0x04, DRM_IOW, destroy_vm_context)
 
#define DRM_IOCTL_PVR_VM_MAP   PVR_IOCTL(0x05, DRM_IOW, vm_map)
 
#define DRM_IOCTL_PVR_VM_UNMAP   PVR_IOCTL(0x06, DRM_IOW, vm_unmap)
 
#define DRM_IOCTL_PVR_CREATE_CONTEXT   PVR_IOCTL(0x07, DRM_IOWR, create_context)
 
#define DRM_IOCTL_PVR_DESTROY_CONTEXT   PVR_IOCTL(0x08, DRM_IOW, destroy_context)
 
#define DRM_IOCTL_PVR_CREATE_FREE_LIST   PVR_IOCTL(0x09, DRM_IOWR, create_free_list)
 
#define DRM_IOCTL_PVR_DESTROY_FREE_LIST   PVR_IOCTL(0x0a, DRM_IOW, destroy_free_list)
 
#define DRM_IOCTL_PVR_CREATE_HWRT_DATASET   PVR_IOCTL(0x0b, DRM_IOWR, create_hwrt_dataset)
 
#define DRM_IOCTL_PVR_DESTROY_HWRT_DATASET   PVR_IOCTL(0x0c, DRM_IOW, destroy_hwrt_dataset)
 
#define DRM_IOCTL_PVR_SUBMIT_JOBS   PVR_IOCTL(0x0d, DRM_IOW, submit_jobs)
 
#define DRM_PVR_BO_BYPASS_DEVICE_CACHE   _BITULL(0)
 
#define DRM_PVR_BO_PM_FW_PROTECT   _BITULL(1)
 
#define DRM_PVR_BO_ALLOW_CPU_USERSPACE_ACCESS   _BITULL(2)
 
#define DRM_PVR_BO_FLAGS_MASK
 
#define PVR_DRM_HWRT_FREE_LIST_LOCAL   0
 
#define PVR_DRM_HWRT_FREE_LIST_GLOBAL   1U
 
#define DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_MASK   0xf
 
#define DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_SYNCOBJ   0
 
#define DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_TIMELINE_SYNCOBJ   1
 
#define DRM_PVR_SYNC_OP_FLAG_SIGNAL   _BITULL(31)
 
#define DRM_PVR_SYNC_OP_FLAG_WAIT   0
 
#define DRM_PVR_SYNC_OP_FLAGS_MASK
 
#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_FIRST   _BITULL(0)
 
#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_LAST   _BITULL(1)
 
#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_SINGLE_CORE   _BITULL(2)
 
#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_FLAGS_MASK
 
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_SINGLE_CORE   _BITULL(0)
 
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_DEPTHBUFFER   _BITULL(1)
 
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_STENCILBUFFER   _BITULL(2)
 
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_PREVENT_CDM_OVERLAP   _BITULL(3)
 
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_SCRATCHBUFFER   _BITULL(4)
 
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_GET_VIS_RESULTS   _BITULL(5)
 
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_PARTIAL_RENDER   _BITULL(6)
 
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_DISABLE_PIXELMERGE   _BITULL(7)
 
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_FLAGS_MASK
 
#define DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_PREVENT_ALL_OVERLAP   _BITULL(0)
 
#define DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_SINGLE_CORE   _BITULL(1)
 
#define DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_FLAGS_MASK
 
#define DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_SINGLE_CORE   _BITULL(0)
 
#define DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_FLAGS_MASK    DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_SINGLE_CORE
 

Enumerations

enum  drm_pvr_heap_id {
  DRM_PVR_HEAP_GENERAL = 0 , DRM_PVR_HEAP_PDS_CODE_DATA , DRM_PVR_HEAP_USC_CODE , DRM_PVR_HEAP_RGNHDR ,
  DRM_PVR_HEAP_VIS_TEST , DRM_PVR_HEAP_TRANSFER_FRAG , DRM_PVR_HEAP_COUNT
}
 
enum  drm_pvr_static_data_area_usage { DRM_PVR_STATIC_DATA_AREA_EOT = 0 , DRM_PVR_STATIC_DATA_AREA_FENCE , DRM_PVR_STATIC_DATA_AREA_VDM_SYNC , DRM_PVR_STATIC_DATA_AREA_YUV_CSC }
 
enum  drm_pvr_dev_query {
  DRM_PVR_DEV_QUERY_GPU_INFO_GET = 0 , DRM_PVR_DEV_QUERY_RUNTIME_INFO_GET , DRM_PVR_DEV_QUERY_QUIRKS_GET , DRM_PVR_DEV_QUERY_ENHANCEMENTS_GET ,
  DRM_PVR_DEV_QUERY_HEAP_INFO_GET , DRM_PVR_DEV_QUERY_STATIC_DATA_AREAS_GET
}
 
enum  drm_pvr_ctx_priority { DRM_PVR_CTX_PRIORITY_LOW = -512 , DRM_PVR_CTX_PRIORITY_NORMAL = 0 , DRM_PVR_CTX_PRIORITY_HIGH = 512 }
 
enum  drm_pvr_ctx_type { DRM_PVR_CTX_TYPE_RENDER = 0 , DRM_PVR_CTX_TYPE_COMPUTE , DRM_PVR_CTX_TYPE_TRANSFER_FRAG }
 
enum  drm_pvr_job_type { DRM_PVR_JOB_TYPE_GEOMETRY = 0 , DRM_PVR_JOB_TYPE_FRAGMENT , DRM_PVR_JOB_TYPE_COMPUTE , DRM_PVR_JOB_TYPE_TRANSFER_FRAG }
 

Macro Definition Documentation

◆ DRM_IOCTL_PVR_CREATE_BO

#define DRM_IOCTL_PVR_CREATE_BO   PVR_IOCTL(0x01, DRM_IOWR, create_bo)

◆ DRM_IOCTL_PVR_CREATE_CONTEXT

#define DRM_IOCTL_PVR_CREATE_CONTEXT   PVR_IOCTL(0x07, DRM_IOWR, create_context)

◆ DRM_IOCTL_PVR_CREATE_FREE_LIST

#define DRM_IOCTL_PVR_CREATE_FREE_LIST   PVR_IOCTL(0x09, DRM_IOWR, create_free_list)

◆ DRM_IOCTL_PVR_CREATE_HWRT_DATASET

#define DRM_IOCTL_PVR_CREATE_HWRT_DATASET   PVR_IOCTL(0x0b, DRM_IOWR, create_hwrt_dataset)

◆ DRM_IOCTL_PVR_CREATE_VM_CONTEXT

#define DRM_IOCTL_PVR_CREATE_VM_CONTEXT   PVR_IOCTL(0x03, DRM_IOWR, create_vm_context)

◆ DRM_IOCTL_PVR_DESTROY_CONTEXT

#define DRM_IOCTL_PVR_DESTROY_CONTEXT   PVR_IOCTL(0x08, DRM_IOW, destroy_context)

◆ DRM_IOCTL_PVR_DESTROY_FREE_LIST

#define DRM_IOCTL_PVR_DESTROY_FREE_LIST   PVR_IOCTL(0x0a, DRM_IOW, destroy_free_list)

◆ DRM_IOCTL_PVR_DESTROY_HWRT_DATASET

#define DRM_IOCTL_PVR_DESTROY_HWRT_DATASET   PVR_IOCTL(0x0c, DRM_IOW, destroy_hwrt_dataset)

◆ DRM_IOCTL_PVR_DESTROY_VM_CONTEXT

#define DRM_IOCTL_PVR_DESTROY_VM_CONTEXT   PVR_IOCTL(0x04, DRM_IOW, destroy_vm_context)

◆ DRM_IOCTL_PVR_DEV_QUERY

#define DRM_IOCTL_PVR_DEV_QUERY   PVR_IOCTL(0x00, DRM_IOWR, dev_query)

◆ DRM_IOCTL_PVR_GET_BO_MMAP_OFFSET

#define DRM_IOCTL_PVR_GET_BO_MMAP_OFFSET   PVR_IOCTL(0x02, DRM_IOWR, get_bo_mmap_offset)

◆ DRM_IOCTL_PVR_SUBMIT_JOBS

#define DRM_IOCTL_PVR_SUBMIT_JOBS   PVR_IOCTL(0x0d, DRM_IOW, submit_jobs)

◆ DRM_IOCTL_PVR_VM_MAP

#define DRM_IOCTL_PVR_VM_MAP   PVR_IOCTL(0x05, DRM_IOW, vm_map)

◆ DRM_IOCTL_PVR_VM_UNMAP

#define DRM_IOCTL_PVR_VM_UNMAP   PVR_IOCTL(0x06, DRM_IOW, vm_unmap)

◆ DRM_PVR_BO_ALLOW_CPU_USERSPACE_ACCESS

#define DRM_PVR_BO_ALLOW_CPU_USERSPACE_ACCESS   _BITULL(2)

◆ DRM_PVR_BO_BYPASS_DEVICE_CACHE

#define DRM_PVR_BO_BYPASS_DEVICE_CACHE   _BITULL(0)

DOC: PowerVR IOCTL CREATE_BO interface DOC: Flags for CREATE_BO

We use "device" to refer to the GPU here because of the ambiguity between CPU and GPU in some fonts.

Device mapping options :DRM_PVR_BO_BYPASS_DEVICE_CACHE: Specify that device accesses to this memory will bypass the cache. This is used for buffers that will either be regularly updated by the CPU (eg free lists) or will be accessed only once and therefore isn't worth caching (eg partial render buffers). By default, the device flushes its memory caches after every job, so this is not normally required for coherency. :DRM_PVR_BO_PM_FW_PROTECT: Specify that only the Parameter Manager (PM) and/or firmware processor should be allowed to access this memory when mapped to the device. It is not valid to specify this flag with DRM_PVR_BO_ALLOW_CPU_USERSPACE_ACCESS.

CPU mapping options :DRM_PVR_BO_ALLOW_CPU_USERSPACE_ACCESS: Allow userspace to map and access the contents of this memory. It is not valid to specify this flag with DRM_PVR_BO_PM_FW_PROTECT.

◆ DRM_PVR_BO_FLAGS_MASK

#define DRM_PVR_BO_FLAGS_MASK
Value:
#define DRM_PVR_BO_ALLOW_CPU_USERSPACE_ACCESS
Definition pvr_drm.h:538
#define DRM_PVR_BO_BYPASS_DEVICE_CACHE
Definition pvr_drm.h:536
#define DRM_PVR_BO_PM_FW_PROTECT
Definition pvr_drm.h:537

◆ DRM_PVR_BO_PM_FW_PROTECT

#define DRM_PVR_BO_PM_FW_PROTECT   _BITULL(1)

◆ DRM_PVR_OBJ_ARRAY

#define DRM_PVR_OBJ_ARRAY (   cnt,
  ptr 
)     { .stride = sizeof((ptr)[0]), .count = (cnt), .array = (__u64)(uintptr_t)(ptr) }

DRM_PVR_OBJ_ARRAY() - Helper macro for filling &struct drm_pvr_obj_array. @cnt: Number of elements pointed to py @ptr. @ptr: Pointer to start of a C array.

Return: Literal of type &struct drm_pvr_obj_array.

◆ DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_FLAGS_MASK

#define DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_FLAGS_MASK
Value:
#define DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_SINGLE_CORE
Definition pvr_drm.h:1177
#define DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_PREVENT_ALL_OVERLAP
Definition pvr_drm.h:1176

◆ DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_PREVENT_ALL_OVERLAP

#define DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_PREVENT_ALL_OVERLAP   _BITULL(0)

DOC: Flags for SUBMIT_JOB ioctl compute command.

.. c:macro:: DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_PREVENT_ALL_OVERLAP

Disallow other jobs overlapped with this compute.

.. c:macro:: DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_SINGLE_CORE

Forces to use single core in a multi core device.

.. c:macro:: DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_FLAGS_MASK

Logical OR of all the compute cmd flags.

◆ DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_SINGLE_CORE

#define DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_SINGLE_CORE   _BITULL(1)

◆ DRM_PVR_SUBMIT_JOB_FRAG_CMD_DEPTHBUFFER

#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_DEPTHBUFFER   _BITULL(1)

◆ DRM_PVR_SUBMIT_JOB_FRAG_CMD_DISABLE_PIXELMERGE

#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_DISABLE_PIXELMERGE   _BITULL(7)

◆ DRM_PVR_SUBMIT_JOB_FRAG_CMD_FLAGS_MASK

#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_FLAGS_MASK
Value:
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_DISABLE_PIXELMERGE
Definition pvr_drm.h:1150
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_DEPTHBUFFER
Definition pvr_drm.h:1144
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_STENCILBUFFER
Definition pvr_drm.h:1145
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_PARTIAL_RENDER
Definition pvr_drm.h:1149
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_GET_VIS_RESULTS
Definition pvr_drm.h:1148
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_SCRATCHBUFFER
Definition pvr_drm.h:1147
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_PREVENT_CDM_OVERLAP
Definition pvr_drm.h:1146
#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_SINGLE_CORE
Definition pvr_drm.h:1143

◆ DRM_PVR_SUBMIT_JOB_FRAG_CMD_GET_VIS_RESULTS

#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_GET_VIS_RESULTS   _BITULL(5)

◆ DRM_PVR_SUBMIT_JOB_FRAG_CMD_PARTIAL_RENDER

#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_PARTIAL_RENDER   _BITULL(6)

◆ DRM_PVR_SUBMIT_JOB_FRAG_CMD_PREVENT_CDM_OVERLAP

#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_PREVENT_CDM_OVERLAP   _BITULL(3)

◆ DRM_PVR_SUBMIT_JOB_FRAG_CMD_SCRATCHBUFFER

#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_SCRATCHBUFFER   _BITULL(4)

◆ DRM_PVR_SUBMIT_JOB_FRAG_CMD_SINGLE_CORE

#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_SINGLE_CORE   _BITULL(0)

DOC: Flags for SUBMIT_JOB ioctl fragment command.

.. c:macro:: DRM_PVR_SUBMIT_JOB_FRAG_CMD_SINGLE_CORE

Use single core in a multi core setup.

.. c:macro:: DRM_PVR_SUBMIT_JOB_FRAG_CMD_DEPTHBUFFER

Indicates whether a depth buffer is present.

.. c:macro:: DRM_PVR_SUBMIT_JOB_FRAG_CMD_STENCILBUFFER

Indicates whether a stencil buffer is present.

.. c:macro:: DRM_PVR_SUBMIT_JOB_FRAG_CMD_PREVENT_CDM_OVERLAP

Disallow compute overlapped with this render.

.. c:macro:: DRM_PVR_SUBMIT_JOB_FRAG_CMD_GET_VIS_RESULTS

Indicates whether this render produces visibility results.

.. c:macro:: DRM_PVR_SUBMIT_JOB_FRAG_CMD_SCRATCHBUFFER

Indicates whether partial renders write to a scratch buffer instead of the final surface. It also forces the full screen copy expected to be present on the last render after all partial renders have completed.

.. c:macro:: DRM_PVR_SUBMIT_JOB_FRAG_CMD_DISABLE_PIXELMERGE

Disable pixel merging for this render.

.. c:macro:: DRM_PVR_SUBMIT_JOB_FRAG_CMD_FLAGS_MASK

Logical OR of all the fragment cmd flags.

◆ DRM_PVR_SUBMIT_JOB_FRAG_CMD_STENCILBUFFER

#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_STENCILBUFFER   _BITULL(2)

◆ DRM_PVR_SUBMIT_JOB_GEOM_CMD_FIRST

#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_FIRST   _BITULL(0)

DOC: Flags for SUBMIT_JOB ioctl geometry command.

.. c:macro:: DRM_PVR_SUBMIT_JOB_GEOM_CMD_FIRST

Indicates if this the first command to be issued for a render.

.. c:macro:: DRM_PVR_SUBMIT_JOB_GEOM_CMD_LAST

Indicates if this the last command to be issued for a render.

.. c:macro:: DRM_PVR_SUBMIT_JOB_GEOM_CMD_SINGLE_CORE

Forces to use single core in a multi core device.

.. c:macro:: DRM_PVR_SUBMIT_JOB_GEOM_CMD_FLAGS_MASK

Logical OR of all the geometry cmd flags.

◆ DRM_PVR_SUBMIT_JOB_GEOM_CMD_FLAGS_MASK

#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_FLAGS_MASK
Value:
#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_LAST
Definition pvr_drm.h:1099
#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_FIRST
Definition pvr_drm.h:1098
#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_SINGLE_CORE
Definition pvr_drm.h:1100

◆ DRM_PVR_SUBMIT_JOB_GEOM_CMD_LAST

#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_LAST   _BITULL(1)

◆ DRM_PVR_SUBMIT_JOB_GEOM_CMD_SINGLE_CORE

#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_SINGLE_CORE   _BITULL(2)

◆ DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_FLAGS_MASK

#define DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_FLAGS_MASK    DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_SINGLE_CORE

◆ DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_SINGLE_CORE

#define DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_SINGLE_CORE   _BITULL(0)

DOC: Flags for SUBMIT_JOB ioctl transfer command.

.. c:macro:: DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_SINGLE_CORE

Forces job to use a single core in a multi core device.

.. c:macro:: DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_FLAGS_MASK

Logical OR of all the transfer cmd flags.

◆ DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_MASK

#define DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_MASK   0xf

DOC: PowerVR IOCTL SUBMIT_JOBS interface DOC: Flags for the drm_pvr_sync_op object.

.. c:macro:: DRM_PVR_SYNC_OP_HANDLE_TYPE_MASK

Handle type mask for the drm_pvr_sync_op::flags field.

.. c:macro:: DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_SYNCOBJ

Indicates the handle passed in drm_pvr_sync_op::handle is a syncobj handle. This is the default type.

.. c:macro:: DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_TIMELINE_SYNCOBJ

Indicates the handle passed in drm_pvr_sync_op::handle is a timeline syncobj handle.

.. c:macro:: DRM_PVR_SYNC_OP_FLAG_SIGNAL

Signal operation requested. The out-fence bound to the job will be attached to the syncobj whose handle is passed in drm_pvr_sync_op::handle.

.. c:macro:: DRM_PVR_SYNC_OP_FLAG_WAIT

Wait operation requested. The job will wait for this particular syncobj or syncobj point to be signaled before being started. This is the default operation.

◆ DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_SYNCOBJ

#define DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_SYNCOBJ   0

◆ DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_TIMELINE_SYNCOBJ

#define DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_TIMELINE_SYNCOBJ   1

◆ DRM_PVR_SYNC_OP_FLAG_SIGNAL

#define DRM_PVR_SYNC_OP_FLAG_SIGNAL   _BITULL(31)

◆ DRM_PVR_SYNC_OP_FLAG_WAIT

#define DRM_PVR_SYNC_OP_FLAG_WAIT   0

◆ DRM_PVR_SYNC_OP_FLAGS_MASK

#define DRM_PVR_SYNC_OP_FLAGS_MASK
Value:
#define DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_MASK
Definition pvr_drm.h:1056
#define DRM_PVR_SYNC_OP_FLAG_SIGNAL
Definition pvr_drm.h:1059

◆ PVR_DRM_HWRT_FREE_LIST_GLOBAL

#define PVR_DRM_HWRT_FREE_LIST_GLOBAL   1U

◆ PVR_DRM_HWRT_FREE_LIST_LOCAL

#define PVR_DRM_HWRT_FREE_LIST_LOCAL   0

◆ PVR_IOCTL

#define PVR_IOCTL (   _ioctl,
  _mode,
  _data 
)     _mode(DRM_COMMAND_BASE + (_ioctl), struct drm_pvr_ioctl_##_data##_args)

DOC: PowerVR IOCTL interface PVR_IOCTL() - Build a PowerVR IOCTL number @_ioctl: An incrementing id for this IOCTL. Added to DRM_COMMAND_BASE. @_mode: Must be one of DRM_IOR, DRM_IOW or DRM_IOWR. @_data: The type of the args struct passed by this IOCTL.

The struct referred to by @_data must have a drm_pvr_ioctl_ prefix and an _args suffix. They are therefore omitted from @_data.

This should only be used to build the constants described below; it should never be used to call an IOCTL directly.

Return: An IOCTL number to be passed to ioctl() from userspace.

Enumeration Type Documentation

◆ drm_pvr_ctx_priority

DOC: PowerVR IOCTL CREATE_CONTEXT and DESTROY_CONTEXT interfaces enum drm_pvr_ctx_priority - Arguments for &drm_pvr_ioctl_create_context_args.priority

Enumerator
DRM_PVR_CTX_PRIORITY_LOW 

@DRM_PVR_CTX_PRIORITY_LOW: Priority below normal.

DRM_PVR_CTX_PRIORITY_NORMAL 

@DRM_PVR_CTX_PRIORITY_NORMAL: Normal priority.

DRM_PVR_CTX_PRIORITY_HIGH 

@DRM_PVR_CTX_PRIORITY_HIGH: Priority above normal. Note this requires CAP_SYS_NICE or DRM_MASTER.

◆ drm_pvr_ctx_type

enum drm_pvr_ctx_type - Arguments for &struct drm_pvr_ioctl_create_context_args.type

Enumerator
DRM_PVR_CTX_TYPE_RENDER 

@DRM_PVR_CTX_TYPE_RENDER: Render context.

DRM_PVR_CTX_TYPE_COMPUTE 

@DRM_PVR_CTX_TYPE_COMPUTE: Compute context.

DRM_PVR_CTX_TYPE_TRANSFER_FRAG 

@DRM_PVR_CTX_TYPE_TRANSFER_FRAG: Transfer context for fragment data master.

◆ drm_pvr_dev_query

enum drm_pvr_dev_query - For use with &drm_pvr_ioctl_dev_query_args.type to indicate the type of the receiving container.

Append only. Do not reorder.

Enumerator
DRM_PVR_DEV_QUERY_GPU_INFO_GET 

@DRM_PVR_DEV_QUERY_GPU_INFO_GET: The dev query args contain a pointer to &struct drm_pvr_dev_query_gpu_info.

DRM_PVR_DEV_QUERY_RUNTIME_INFO_GET 

@DRM_PVR_DEV_QUERY_RUNTIME_INFO_GET: The dev query args contain a pointer to &struct drm_pvr_dev_query_runtime_info.

DRM_PVR_DEV_QUERY_QUIRKS_GET 

@DRM_PVR_DEV_QUERY_QUIRKS_GET: The dev query args contain a pointer to &struct drm_pvr_dev_query_quirks.

DRM_PVR_DEV_QUERY_ENHANCEMENTS_GET 

@DRM_PVR_DEV_QUERY_ENHANCEMENTS_GET: The dev query args contain a pointer to &struct drm_pvr_dev_query_enhancements.

DRM_PVR_DEV_QUERY_HEAP_INFO_GET 

@DRM_PVR_DEV_QUERY_HEAP_INFO_GET: The dev query args contain a pointer to &struct drm_pvr_dev_query_heap_info.

DRM_PVR_DEV_QUERY_STATIC_DATA_AREAS_GET 

@DRM_PVR_DEV_QUERY_STATIC_DATA_AREAS_GET: The dev query args contain a pointer to &struct drm_pvr_dev_query_static_data_areas.

◆ drm_pvr_heap_id

enum drm_pvr_heap_id - Array index for heap info data returned by DRM_PVR_DEV_QUERY_HEAP_INFO_GET.

For compatibility reasons all indices will be present in the returned array, however some heaps may not be present. These are indicated where &struct drm_pvr_heap.size is set to zero.

Enumerator
DRM_PVR_HEAP_GENERAL 

@DRM_PVR_HEAP_GENERAL: General purpose heap.

DRM_PVR_HEAP_PDS_CODE_DATA 

@DRM_PVR_HEAP_PDS_CODE_DATA: PDS code and data heap.

DRM_PVR_HEAP_USC_CODE 

@DRM_PVR_HEAP_USC_CODE: USC code heap.

DRM_PVR_HEAP_RGNHDR 

@DRM_PVR_HEAP_RGNHDR: Region header heap. Only used if GPU has BRN63142.

DRM_PVR_HEAP_VIS_TEST 

@DRM_PVR_HEAP_VIS_TEST: Visibility test heap.

DRM_PVR_HEAP_TRANSFER_FRAG 

@DRM_PVR_HEAP_TRANSFER_FRAG: Transfer fragment heap.

DRM_PVR_HEAP_COUNT 

@DRM_PVR_HEAP_COUNT: The number of heaps returned by DRM_PVR_DEV_QUERY_HEAP_INFO_GET.

More heaps may be added, so this also serves as the copy limit when sent by the caller.

◆ drm_pvr_job_type

enum drm_pvr_job_type - Arguments for &struct drm_pvr_job.job_type

Enumerator
DRM_PVR_JOB_TYPE_GEOMETRY 

@DRM_PVR_JOB_TYPE_GEOMETRY: Job type is geometry.

DRM_PVR_JOB_TYPE_FRAGMENT 

@DRM_PVR_JOB_TYPE_FRAGMENT: Job type is fragment.

DRM_PVR_JOB_TYPE_COMPUTE 

@DRM_PVR_JOB_TYPE_COMPUTE: Job type is compute.

DRM_PVR_JOB_TYPE_TRANSFER_FRAG 

@DRM_PVR_JOB_TYPE_TRANSFER_FRAG: Job type is a fragment transfer.

◆ drm_pvr_static_data_area_usage

enum drm_pvr_static_data_area_usage - Array index for static data area info returned by DRM_PVR_DEV_QUERY_STATIC_DATA_AREAS_GET.

For compatibility reasons all indices will be present in the returned array, however some areas may not be present. These are indicated where &struct drm_pvr_static_data_area.size is set to zero.

Enumerator
DRM_PVR_STATIC_DATA_AREA_EOT 

@DRM_PVR_STATIC_DATA_AREA_EOT: End of Tile PDS program code segment.

The End of Tile PDS task runs at completion of a tile during a fragment job, and is responsible for emitting the tile to the Pixel Back End.

DRM_PVR_STATIC_DATA_AREA_FENCE 

@DRM_PVR_STATIC_DATA_AREA_FENCE: MCU fence area, used during cache flush and invalidation.

This must point to valid physical memory but the contents otherwise are not used.

DRM_PVR_STATIC_DATA_AREA_VDM_SYNC 

@DRM_PVR_STATIC_DATA_AREA_VDM_SYNC: VDM sync program.

The VDM sync program is used to synchronise multiple areas of the GPU hardware.

DRM_PVR_STATIC_DATA_AREA_YUV_CSC 

@DRM_PVR_STATIC_DATA_AREA_YUV_CSC: YUV coefficients.

Area contains up to 16 slots with stride of 64 bytes. Each is a 3x4 matrix of u16 fixed point numbers, with 1 sign bit, 2 integer bits and 13 fractional bits.

The slots are : 0 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR 1 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR (full range) 2 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR (conformant range) 3 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR (full range) 4 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR (conformant range) 5 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR (full range) 6 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR (conformant range) 7 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR (full range) 8 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR (conformant range) 9 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR (conformant range, 10 bit) 10 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR (conformant range, 10 bit) 11 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR (conformant range, 10 bit) 14 = Identity (biased) 15 = Identity