STRUCT DRM_ASAHI_QUEUE_CREATE(9)
π struct drm_asahi_queue_create(9) β the Kernel API Manual glow-up π
okay so bestie, this is a page straight out of the Kernel API Manual and it's literally about struct drm_asahi_queue_create β the args you hand over to DRM_IOCTL_ASAHI_QUEUE_CREATE. it's giving "let me make a queue bestie" and honestly? iconic. π
β¨ NAME β¨
struct drm_asahi_queue_create β the arguments that get passed to DRM_IOCTL_ASAHI_QUEUE_CREATE. that's it, that's the whole vibe. π¦
πΈ SYNOPSIS πΈ
struct drm_asahi_queue_create {
__u32 flags;
__u32 vm_id;
__u32 priority;
__u32 queue_id;
__u64 usc_exec_base;
};
look at her. five fields. no cap, she's neat. π
π«Ά Members π«Ά
flagsβ MBZ, bestie. Must Be Zero. like, don't touch, don't be quirky, just leave it at zero fr fr. πvm_idβ the ID of the VM this queue is bound to. this queue's whole committed relationship, lowkey. πpriorityβ one ofdrm_asahi_priority. pick your fighter from that enum. π₯queue_idβ the queue ID, and it's returned to you. yes, it's an output wearing an input's clothes. main character energy. πusc_exec_baseβ the GPU base address for all USC binaries (aka shaders) on this queue. USC addresses are 32-bit and live relative to this 64-bit base. so like, the shaders are the little fish and this is the big pond. π
π§ what it actually sets π§
this sets the following registers on all queue commands:
USC_EXEC_BASE_TA(vertex)USC_EXEC_BASE_ISP(fragment)USC_EXEC_BASE_CP(compute)
and here's the tea: the hardware does let us configure these independently per command β slay, flexible β but we literally do not have a use case for that. so instead, we expect userspace to fix a 4GiB VA carveout for USC memory and pass its base address right here in this field. one base to rule them all. π β¨
ngl bestie, remember: that's a 4GiB carveout, not a vibe you can just eyeball. the addresses are 32-bit-relative to the 64-bit base, so the carveout has to be big enough to hold them all. π
β SEE ALSO β
- Kernel file
./include/uapi/drm/asahi_drm.h - Introduction 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_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_submit(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)
like, the whole friend group showed up. obsessed. π«Άπ
that's the whole page bestie, go forth and create queues responsibly. this lil drop of lore comes to you from ./include/uapi/drm, dated October 2026, and she's filed under struct drm_...queue_create(9). mwah, bye π
πβ¨
π¦ 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