STRUCT DRM_PVR_IOCTL_CREATE_HWRT_DATASET_ARGS(9)
πΈ struct drm_pvr_ioctl_create_hwrt_dataset_args(9) πΈ
okay so this is a page from the Kernel API Manual, and bestie, it's literally the struct that holds the args for %DRM_IOCTL_PVR_CREATE_HWRT_DATASET. yes it's a long name. no we're not scared of it. π
β¨ NAME β¨
struct drm_pvr_ioctl_create_hwrt_dataset_args β the arguments for %DRM_IOCTL_PVR_CREATE_HWRT_DATASET, periodt.
π SYNOPSIS π
struct drm_pvr_ioctl_create_hwrt_dataset_args {
struct drm_pvr_create_hwrt_geom_data_args geom_data_args;
struct drm_pvr_create_hwrt_rt_data_args rt_data_args[2];
__u32 free_list_handles[2];
__u32 width;
__u32 height;
__u32 samples;
__u32 layers;
__u32 isp_merge_lower_x;
__u32 isp_merge_lower_y;
__u32 isp_merge_scale_x;
__u32 isp_merge_scale_y;
__u32 isp_merge_upper_x;
__u32 isp_merge_upper_y;
__u32 region_header_size;
__u32 handle;
};
look at her. iconic. now let's meet the members one by one π«Ά
π¦ MEMBERS π¦
geom_data_argsβ[IN]the geometry data arguments. that's the vibe, that's the assignment.rt_data_argsβ[IN]an array of render target arguments.
so like, each entry in this array is literally one render target in a double buffered setup. two of them. double the buffering, double the fun π
free_list_handlesβ[IN]array of free list handles.
and here's the tea: free_list_handles[PVR_DRM_HWRT_FREE_LIST_LOCAL] must have an initial size of at least whatever drm_pvr_dev_query_runtime_info.free_list_min_pages reports. like, that's the minimum, don't come in under it, that's not the move π
widthβ[IN]width in pixels. pixels!! πheightβ[IN]height in pixels. also pixels. matching energy.samplesβ[IN]number of samples.layersβ[IN]number of layers. we love a layered situation.isp_merge_lower_xβ[IN]lower X coefficient for triangle merging.isp_merge_lower_yβ[IN]lower Y coefficient for triangle merging.isp_merge_scale_xβ[IN]scale X coefficient for triangle merging.isp_merge_scale_yβ[IN]scale Y coefficient for triangle merging.isp_merge_upper_xβ[IN]upper X coefficient for triangle merging.isp_merge_upper_yβ[IN]upper Y coefficient for triangle merging.
(yes, six whole coefficients. x and y, lower, scale and upper. triangles are out here getting merged with precision π )
region_header_sizeβ[IN]size of the region header array. and this common field is shared by both render targets in this data set. teamwork!
β οΈ okay important: the units for this field are not fixed β they differ depending on which version of the simple internal parameter format the device uses. if format 2 is in use, then this is interpreted as the number of region headers. for other formats it's interpreted as the size in dwords. so likeβ¦ know your format, bestie, don't guess π
handleβ[OUT]handle for the created HWRT dataset. that's the whole point, that's the payoff, you get a handle back β¨
π SEE ALSO π
this list is long long, but we're gonna read all of it because every single one matters:
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), struct drm_pvr_ioctl_create_bo_args(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_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)
ok that's the whole page, you ate that, go forth and create HWRT datasets responsibly π§ββοΈ
mwah π β this one lives in ./include/uapi/drm, dated October 2026, and we're signing off from the Kernel API Manual. see u in the next manpage bestie π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms