STRUCT DRM_I915_GEM_EXECBUFFER3(9)
π NAME
struct drm_i915_gem_execbuffer3 β bestie, this is the structure you use for the DRM_I915_GEM_EXECBUFFER3 ioctl π
(manual name's struct drm_..._execbuffer3(9), Kernel API Manual, section 9 β yes she's that girl).
β¨ SYNOPSIS
struct drm_i915_gem_execbuffer3 {
__u32 ctx_id;
__u32 engine_idx;
__u64 batch_address;
__u64 flags;
__u32 rsvd1;
__u32 fence_count;
__u64 timeline_fences;
__u64 rsvd2;
__u64 extensions;
};
π MEMBERS
Okay so here's the whole cast, member by member, no skips π«Ά
ctx_idβ the Context id. β¨ But listen: only contexts with a user engine map are allowed. That's the vibe check, no exceptions.engine_idxβ the Engine index. It's literally an index in the user engine map of the context specified byctx_id. iykyk.batch_addressβ Batch gpu virtual address/es. For normal submission, it's the gpu virtual address of the batch buffer. For parallel submission, it's a pointer to an array of batch buffer gpu virtual addresses, with array size equal to the number of (parallel) engines involved in that submission (seestruct i915_context_engines_parallel_submit). She's versatile πflagsβ currently reserved, MBZ. As in must be zero. Don't be cute, leave it at zero πrsvd1β reserved, MBZ. Same energy, zero it out.fence_countβ Number of fences in thetimeline_fencesarray. Count 'em π₯timeline_fencesβ Pointer to an array of timeline fences. And the timeline fences are of formatstruct drm_i915_gem_timeline_fence. Bet πrsvd2β reserved, MBZ. Zero. That's it. That's the member.extensionsβ Zero-terminated chain of extensions. For future extensions β seestruct i915_user_extension. Blink and there'll be more of these π
πΈ DESCRIPTION
So the DRM_I915_GEM_EXECBUFFER3 ioctl only works in VM_BIND mode, and VM_BIND mode only works with this ioctl for submission. Like, they're a package deal, ride or die, main character and her bodyguard π See I915_VM_CREATE_FLAGS_USE_VM_BIND.
β οΈ fr fr: it's not "usually" or "preferably" β it's only. Wrong mode, no submission. Periodt.
π¦ SEE ALSO
- Kernel file
./Documentation/gpu/rfc/i915_vm_bind.hπ I915_PARAM_VM_BIND_VERSION(9)I915_VM_CREATE_FLAGS_USE_VM_BIND(9)struct drm_i915_gem_timeline_fence(9)struct drm_i915_gem_vm_bind(9)struct drm_i915_gem_vm_unbind(9)struct drm_i915_gem_create_ext_vm_private(9)
Okay that's the whole page, you ate that π This came to you from the source ./Documentation/gpu/rfc, dated October 2026, and the page itself is struct drm_..._execbuffer3(9) β go forth and submit your batches, bestie, mwah πβ¨
π¦ 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