STRUCT DRM_PVR_IOCTL_CREATE_BO_ARGS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct drm_pvr_ioctl_create_bo_args(9) πŸ’…

okay so bestie, welcome to the Kernel API Manual ✨ β€” this one's all about struct drm_pvr_ioctl_create_bo_args, and honestly? it's giving "tiny struct, big responsibilities" energy. it's the arguments bundle you hand over to %DRM_IOCTL_PVR_CREATE_BO, and we're gonna go through every field like it's a group project and you actually have to know your part 🫢


✨ SYNOPSIS ✨

like, here's the whole vibe, literally character for character:

struct drm_pvr_ioctl_create_bo_args {
    __u64 size;
    __u32 handle;
    __u32 _padding_c;
    __u64 flags;
 };

no cap, that's the entire struct. four fields. she's compact and she knows it πŸ’…


πŸŽ€ Members πŸŽ€

  • size β€” [IN] the size of the buffer object you're creating. and listen: this must be page size aligned. not "roughly", not "close enough" β€” aligned, fr fr 🧚
  • handle β€” [OUT] the GEM handle of the shiny new buffer object, the one you'll actually use in userspace. it's an output, so don't go stuffing your own value in there, bestie 😭
  • _padding_c β€” reserved. this field must be zeroed. that's it. that's the whole job. zero it and move on πŸ’€
  • flags β€” [IN] options that affect how this creation operation behaves and future mapping operations on the object you just made (yes, it's a long-term commitment, iconic πŸ‘‘). this field must be a valid combination of DRM_PVR_BO_* values, with all bits marked as reserved set to zero. so: valid combo + reserved bits zeroed. do not freestyle 🌸
⚠️ quick vibe check: _padding_c zeroed, reserved bits zeroed. the kernel is not playing about this and neither should you πŸ’€

πŸ¦‹ SEE ALSO πŸ¦‹

okay this list is long long, but every single one is here because they're all connected, iykyk:

  • Kernel file ./include/uapi/drm/pvr_drm.h PowerVR UAPI(9)
  • struct drm_pvr_obj_array(9)
  • DRM_PVR_OBJ_ARRAY(9)
  • PowerVR IOCTL interface(9)
  • PVR_IOCTL(9)
  • PowerVR IOCTL DEV_QUERY interface(9)
  • struct drm_pvr_dev_query_gpu_info(9)
  • struct drm_pvr_dev_query_runtime_info(9)
  • struct drm_pvr_dev_query_quirks(9)
  • struct drm_pvr_dev_query_enhancements(9)
  • enum drm_pvr_heap_id(9)
  • struct drm_pvr_heap(9)
  • struct drm_pvr_dev_query_heap_info(9)
  • enum drm_pvr_static_data_area_usage(9)
  • struct drm_pvr_static_data_area(9)
  • struct drm_pvr_dev_query_static_data_areas(9)
  • enum drm_pvr_dev_query(9)
  • struct drm_pvr_ioctl_dev_query_args(9)
  • PowerVR IOCTL CREATE_BO interface(9)
  • Flags for CREATE_BO(9)
  • PowerVR IOCTL GET_BO_MMAP_OFFSET interface(9)
  • struct drm_pvr_ioctl_get_bo_mmap_offset_args(9)
  • PowerVR IOCTL CREATE_VM_CONTEXT and DESTROY_VM_CONTEXT interfaces(9)
  • struct drm_pvr_ioctl_create_vm_context_args(9)
  • struct drm_pvr_ioctl_destroy_vm_context_args(9)
  • PowerVR IOCTL VM_MAP and VM_UNMAP interfaces(9)
  • struct drm_pvr_ioctl_vm_map_args(9)
  • struct drm_pvr_ioctl_vm_unmap_args(9)
  • PowerVR IOCTL CREATE_CONTEXT and DESTROY_CONTEXT interfaces(9)
  • enum drm_pvr_ctx_priority(9)
  • enum drm_pvr_ctx_type(9)
  • struct drm_pvr_ioctl_create_context_args(9)
  • struct drm_pvr_ioctl_destroy_context_args(9)
  • PowerVR IOCTL CREATE_FREE_LIST and DESTROY_FREE_LIST interfaces(9)
  • struct drm_pvr_ioctl_create_free_list_args(9)
  • struct drm_pvr_ioctl_destroy_free_list_args(9)
  • PowerVR IOCTL CREATE_HWRT_DATASET and DESTROY_HWRT_DATASET interfaces(9)
  • struct drm_pvr_create_hwrt_geom_data_args(9)
  • struct drm_pvr_create_hwrt_rt_data_args(9)
  • struct drm_pvr_ioctl_create_hwrt_dataset_args(9)
  • struct drm_pvr_ioctl_destroy_hwrt_dataset_args(9)
  • PowerVR IOCTL SUBMIT_JOBS interface(9)
  • Flags for the drm_pvr_sync_op object.(9)
  • struct drm_pvr_sync_op(9)
  • Flags for SUBMIT_JOB ioctl geometry command.(9)
  • Flags for SUBMIT_JOB ioctl fragment command.(9)
  • Flags for SUBMIT_JOB ioctl compute command.(9)
  • Flags for SUBMIT_JOB ioctl transfer command.(9)
  • enum drm_pvr_job_type(9)
  • struct drm_pvr_hwrt_data_ref(9)
  • struct drm_pvr_job(9)
  • struct drm_pvr_ioctl_submit_jobs_args(9)

that's the whole page bestie, you ate that πŸ“ mwah πŸ’–

sign-off time: this little icon lives in ./include/uapi/drm, dated October 2026, and it's section 9 of the Kernel API Manual β€” go forth and create buffer objects responsibly πŸ‘‘βœ¨

πŸ“¦ where this page comes from