STRUCT DRM_V3D_SUBMIT_CL(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

okay so welcome to struct drm_v3d_submit_cl(9) from the Kernel API Manual β€” this is the page for the ioctl argument for submitting commands to the 3D engine. yes bestie, it's giving β€œhand the kernel a little GPU job” energy. πŸ¦‹

struct drm_v3d_submit_cl β€” ioctl argument for submitting commands to the 3D engine. that's the name, that's the vibe, and it ate. ✨

✨ SYNOPSIS ✨

here's the struct in all its exact glory, bestie β€” every field, no edits, no cap:

       struct drm_v3d_submit_cl {
           __u32 bcl_start;
           __u32 bcl_end;
           __u32 rcl_start;
           __u32 rcl_end;
           __u32 in_sync_bcl;
           __u32 in_sync_rcl;
           __u32 out_sync;
           __u32 qma;
           __u32 qms;
           __u32 qts;
           __u64 bo_handles;
           __u32 bo_handle_count;
           __u32 flags;
           __u32 perfmon_id;
           __u32 pad;
           __u64 extensions;
        };

🫢 Members 🫢

the member lineup is literally the fields in that struct drm_v3d_submit_cl block up there, bestie β€” from bcl_start through extensions, all present and accounted for. the page doesn't give individual member blurbs here, so I'm not inventing them. fake lore is not the move. πŸ’€

πŸ”₯ Description πŸ”₯

okay so this is the part where you ask the kernel to have the GPU execute an optional binner command list, and a render command list. two command-list besties, one optional, and the GPU is the main character. πŸ‘‘

before each CL executes, the L1T, slice, L2C, L2T, and GCA caches will be flushed. the VCD cache should be flushed (if necessary) by the submitted CLs. the TLB writes are guaranteed to have been flushed by the time the render done IRQ happens β€” and that IRQ is the trigger for out_sync. slay. ✨

bestie, if the job dirties any cachelines (and that's only possible using TMU writes), the caller has to flush them using the DRM_V3D_SUBMIT_CL_FLUSH_CACHE_FLAG flag. that part is on you, no cap. πŸ’…

πŸ¦‹ SEE ALSO πŸ¦‹

go look at these next, bestie β€” the whole friend group is right here:

  • Kernel file: ./include/uapi/drm/v3d_drm.h
  • struct drm_v3d_multi_sync(9)
  • struct drm_v3d_wait_bo(9)
  • struct drm_v3d_create_bo(9)
  • struct drm_v3d_mmap_bo(9)
  • struct drm_v3d_indirect_csd(9)
  • struct drm_v3d_timestamp_query(9)
  • struct drm_v3d_reset_timestamp_query(9)
  • struct drm_v3d_copy_timestamp_query(9)
  • struct drm_v3d_reset_performance_query(9)
  • struct drm_v3d_copy_performance_query(9)
  • struct drm_v3d_perfmon_get_counter(9)
  • struct drm_v3d_perfmon_set_global(9)

and that's the whole page, bestie πŸ“ source/version situation: ./include/uapi/drm; date situation: October 2026; title situation: struct drm_v3d_submit_cl(9). iykyk, periodt. πŸ’œ

πŸ“¦ where this page comes from