STRUCT DRM_VMW_FENCE_REP(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ 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 lower seqno will signal the EXEC flag before a fence object with a higher seqno. user-space can use this to dodge kernel calls just to check whether a fence has signaled the EXEC flag. ⚠️ but note: seqno will wrap at 32-bit, so like… keep that in mind, no cap.
  • passed_seqno β€” the highest seqno number the hardware has processed so far. you can use this to mark user-space fence objects as signaled, and to figure out whether a fence seqno might be stale.
  • fd β€” the FD associated with the fence, or -1 if it's not exported.
  • error β€” this member should've been set to -EFAULT on 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 the fence_seq member.
    • error == 0: all is OK! but the host may not be synchronized, so use the fence_seq member.
⚠️ 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