STRUCT DRM_ASAHI_SUBMIT(9)
π struct drm_asahi_submit(9) β Kernel API Manual π
okay bestie, welcome to the manual page for struct drm_asahi_submit(9). Itβs literally the argument struct you pass to DRM_IOCTL_ASAHI_SUBMIT, and yes weβre going through every field because the details matter, periodt. β¨
πΈ NAME πΈ
struct drm_asahi_submit β Arguments passed to DRM_IOCTL_ASAHI_SUBMIT.
β¨ SYNOPSIS β¨
struct drm_asahi_submit {
__u64 syncs;
__u64 cmdbuf;
__u32 flags;
__u32 queue_id;
__u32 in_sync_count;
__u32 out_sync_count;
__u32 cmdbuf_size;
__u32 pad;
};
π Members π
syncsβ an optional pointer to an array ofdrm_asahi_sync. The firstin_sync_countelements are in-syncs, then the remainingout_sync_countelements are out-syncs. Using a single array with explicit partitioning simplifies handling. π«Άcmdbufβ pointer to the command buffer to submit.
This is a flat command buffer. By design, it contains no CPU pointers, which makes it suitable for a virtgpu wire protocol without requiring any serializing/deserializing step. iconic, honestly.
It consists of a series of commands. Each command begins with a fixed-size drm_asahi_cmd_header header and is followed by a variable-length payload according to the type and size in the header.
The combined count of "real" hardware commands must be nonzero and at most drm_asahi_params_global::max_commands_per_submission. No cap, thatβs a real constraint.
flagsβ flags for command submission (MBZ).queue_idβ the queue ID to be submitted to.in_sync_countβ number of sync objects to wait on before starting this job.out_sync_countβ number of sync objects to signal upon completion of this job.cmdbuf_sizeβ command buffer size in bytes.padβ MBZ.
π¦ SEE ALSO π¦
- Kernel file
./include/uapi/drm/asahi_drm.hIntroduction to the Asahi UAPI(9) enum drm_asahi_ioctl_id(9)struct drm_asahi_params_global(9)enum drm_asahi_feature(9)struct drm_asahi_get_params(9)struct drm_asahi_vm_create(9)struct drm_asahi_vm_destroy(9)enum drm_asahi_gem_flags(9)struct drm_asahi_gem_create(9)struct drm_asahi_gem_mmap_offset(9)enum drm_asahi_bind_flags(9)struct drm_asahi_gem_bind_op(9)struct drm_asahi_vm_bind(9)enum drm_asahi_bind_object_op(9)enum drm_asahi_bind_object_flags(9)struct drm_asahi_gem_bind_object(9)enum drm_asahi_cmd_type(9)enum drm_asahi_priority(9)struct drm_asahi_queue_create(9)struct drm_asahi_queue_destroy(9)enum drm_asahi_sync_type(9)struct drm_asahi_sync(9)DRM_ASAHI_BARRIER_NONE(9)struct drm_asahi_cmd_header(9)struct drm_asahi_attachment(9)struct drm_asahi_zls_buffer(9)struct drm_asahi_timestamp(9)struct drm_asahi_timestamps(9)struct drm_asahi_helper_program(9)struct drm_asahi_bg_eot(9)struct drm_asahi_cmd_render(9)struct drm_asahi_cmd_compute(9)struct drm_asahi_get_time(9)DRM_IOCTL_ASAHI(9)
Thatβs the whole page, bestie. Cute little footer tea: source/version is ./include/uapi/drm, date is October 2026, and the manual is struct drm_asahi_submit(9) β literally the sweetest sign-off in the kernel. ππβ¨
π¦ 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