STRUCT DRM_VMW_FENCE_REP(9)
β¨ NAME β¨
struct drm_vmw_fence_rep β bestie, the description line is literally empty in the original, so likeβ¦ the name is all we get π
it's a struct in the kernel API manual, and that's the whole vibe.
π SYNOPSIS π
struct drm_vmw_fence_rep {
__u32 handle;
__u32 mask;
__u32 seqno;
__u32 passed_seqno;
__s32 fd;
__s32 error;
};
π¦ MEMBERS π¦
okay so every single field, one by one, no skips:
handleβ the fence object handle, for the fence that's associated with a command submission. that's it, that's the field π«Άmaskβ the fence flags that are relevant for this fence object.seqnoβ the fence sequence number in the fifo. a fence object with a lowerseqnowill signal the EXEC flag before a fence object with a higherseqno. user-space can use this to dodge kernel calls just to check whether a fence has signaled the EXEC flag. β οΈ but note:seqnowill wrap at 32-bit, so likeβ¦ keep that in mind, no cap.passed_seqnoβ the highestseqnonumber the hardware has processed so far. you can use this to mark user-space fence objects as signaled, and to figure out whether a fenceseqnomight be stale.fdβ the FD associated with the fence, or-1if it's not exported.errorβ this member should've been set to-EFAULTon submission. (yes, "should've", that's really what it says π) the actions to take on completion are:error == -EFAULT: fence communication failed. the host is synchronized. use the last fence id read from the FIFO fence register. πerror != 0 && error != -EFAULT: fence submission failed. the host is synchronized. use thefence_seqmember.error == 0: all is OK! but the host may not be synchronized, so use thefence_seqmember.
β οΈ lowkey important: the synchronized / not-synchronized distinction changes which value you trust. don't mix them up bestie, it's giving "subtle bug" energy π
π₯ DESCRIPTION π₯
input / output data to the DRM_VMW_EXECBUF Ioctl. that's the whole description, and honestly? iconic for being that short π
π SEE ALSO π
kernel file ./include/uapi/drm/vmwgfx_drm.h, plus this whole friend group:
enum drm_vmw_handle_type(9)struct drm_vmw_getparam_arg(9)struct drm_vmw_size(9)union drm_vmw_surface_create_arg(9)struct drm_vmw_bo_rep(9)union drm_vmw_alloc_bo_arg(9)struct drm_vmw_control_stream_arg(9)struct drm_vmw_cursor_bypass_arg(9)struct drm_vmw_fence_wait_arg(9)struct drm_vmw_fence_event_arg(9)struct drm_vmw_shader_create_arg(9)struct drm_vmw_gb_surface_create_req(9)struct drm_vmw_gb_surface_create_rep(9)union drm_vmw_gb_surface_create_arg(9)union drm_vmw_gb_surface_reference_arg(9)enum drm_vmw_synccpu_op(9)struct drm_vmw_synccpu_arg(9)union drm_vmw_extended_context_arg(9)struct drm_vmw_handle_close_arg(9)struct drm_vmw_gb_surface_create_ext_req(9)union drm_vmw_gb_surface_create_ext_arg(9)union drm_vmw_gb_surface_reference_ext_arg(9)struct drm_vmw_msg_arg(9)struct drm_vmw_mksstat_add_arg(9)struct drm_vmw_mksstat_remove_arg(9)
that's the page bestie, go read the kernel headers and slay πβ¨
sign-off szn π β this one came from ./include/uapi/drm, dated October 2026, and the manual it lives in is the Kernel API Manual. 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