STRUCT DRM_PANFROST_SUBMIT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’œ struct drm_panfrost_submit(9) πŸ’œ

okay bestie, gather round, because this is a page straight out of the Kernel API Manual and it's honestly iconic. it's the whole scoop on struct drm_panfrost_submit β€” the ioctl argument you use to yeet your commands at the 3D engine. no cap, it's lowkey the main character of the panfrost UAPI. πŸŽ€


✨ NAME ✨

struct drm_panfrost_submit β€” the ioctl argument for submitting commands to the 3D engine. that's it, that's the vibe. πŸ¦‹


🌈 SYNOPSIS 🌈

here's the shape of it, character for character, don't touch:

struct drm_panfrost_submit {
    __u64 jc;
    __u64 in_syncs;
    __u32 in_sync_count;
    __u32 out_sync;
    __u64 bo_handles;
    __u32 bo_handle_count;
    __u32 requirements;
    __u32 jm_ctx_handle;
    __u32 pad;
 };

🌸 Members 🌸

okay so every single field, in order, no skipping, we're doing this properly:

  • jc β€” the address to the GPU mapping of the job descriptor. like, where the job actually lives. πŸ“
  • in_syncs β€” an optional array of sync objects to wait on before this job starts. think of it as the "hold up, let me finish my iced coffee first" list. 🧊
  • in_sync_count β€” how many sync objects we're waiting on before starting this job. the headcount for the waiting room. 🫢
  • out_sync β€” an optional sync object where the completion fence gets dropped. this is the "tell me when you're done" slot. ✨
  • bo_handles β€” pointer to a u32 array of the BOs that the job references. the guest list, basically. πŸ‘‘
  • bo_handle_count β€” number of BO handles passed in (and yes, the size is that times 4 πŸ’…). the count has to match the guest list or it's giving chaos.
  • requirements β€” a combination of PANFROST_JD_REQ_*. mix and match your req flags, slay. πŸ”₯
  • jm_ctx_handle β€” the JM context handle. set it to zero if you want to use the default context. zero = default, no thoughts, just vibes. ⭐
  • pad β€” padding field. must be zero. not "maybe zero", not "zero-ish". zero. fr fr. πŸ™ˆ

πŸ¦‹ Description πŸ¦‹

so what does this whole thing do? it asks the kernel to have the GPU execute a render command list. that's the entire plot. you hand it over, kernel says "say less", GPU goes brrr. 😭πŸ”₯


πŸŽ€ SEE ALSO πŸŽ€

go touch some related grass, bestie:

  • Kernel file ./include/uapi/drm/panfrost_drm.h
  • struct drm_panfrost_wait_bo(9)
  • struct drm_panfrost_create_bo(9)
  • struct drm_panfrost_mmap_bo(9)
  • struct drm_panfrost_set_label_bo(9)
  • struct drm_panfrost_sync_bo(9)

and that's the whole page, diva. πŸ’– it lives in ./include/uapi/drm, dated October 2026, and it's filed under struct drm_panfrost_submit(9) β€” same title, same date, same source, we kept the receipts. periodt. πŸ’…πŸŒΈ

πŸ“¦ where this page comes from