STRUCT VMW_CTX_BINDING_STATE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct vmw_ctx_binding_state(9) β€” Kernel API Manual πŸŽ€

okay so bestie, welcome to the manual page for struct vmw_ctx_binding_state, straight out of the Kernel API Manual. grab your iced coffee, we're getting into it ✨


✨ NAME ✨

struct vmw_ctx_binding_state β€” per context binding state πŸ’– β€” like, the whole mood board of what's bound to a context, all in one struct. iconic behaviour honestly.


🌸 SYNOPSIS 🌸

struct vmw_ctx_binding_state {
    struct vmw_private *dev_priv;
    struct list_head list;
    struct vmw_ctx_bindinfo_view render_targets[SVGA3D_RT_MAX];
    struct vmw_ctx_bindinfo_tex texture_units[SVGA3D_NUM_TEXTURE_UNITS];
    struct vmw_ctx_bindinfo_view ds_view;
    struct vmw_ctx_bindinfo_so_target
so_targets[SVGA3D_DX_MAX_SOTARGETS];
    struct vmw_ctx_bindinfo_vb
vertex_buffers[SVGA3D_DX_MAX_VERTEXBUFFERS];
    struct vmw_ctx_bindinfo_ib index_buffer;
    struct vmw_dx_shader_bindings per_shader[SVGA3D_NUM_SHADERTYPE];
    struct vmw_ctx_bindinfo_uav ua_views[VMW_MAX_UAV_BIND_TYPE];
    struct vmw_ctx_bindinfo_so so_state;
    unsigned long dirty;
    unsigned long dirty_vb[BITS_TO_LONGS( SVGA3D_DX_MAX_VERTEXBUFFERS)];
    u32 bind_cmd_buffer[VMW_MAX_VIEW_BINDINGS];
    u32 bind_cmd_count;
    u32 bind_first_slot;
 };

(yeah the formatting is a little chaotic, she's doing her best, leave her alone 😭)


πŸ¦‹ Members πŸ¦‹

okay now the cast of characters, one by one, no skipping, we love a complete list πŸ’œ

  • dev_priv β€” Pointer to device private structure. the main character of the device world, honestly.
  • list β€” linked list of individual active bindings. it's giving group chat of bindings ngl.
  • render_targets β€” Render target bindings. the ones everyone's looking at 🎯
  • texture_units β€” Texture units bindings. texture, but make it unit-ed πŸ’…
  • ds_view β€” Depth-stencil view binding. depth AND stencil, overachiever much?
  • so_targets β€” StreamOutput target bindings. stream, output, slay.
  • vertex_buffers β€” Vertex buffer bindings. the verts are buffering, respect it.
  • index_buffer β€” Index buffer binding. pointing at things, lowkey iconic.
  • per_shader β€” Per shader-type bindings. one for every shader type, because we don't do favourites here.
  • ua_views β€” UAV bindings. (yes the member is spelled ua_views, no I will not be fixing it, that's literally what's in the struct 🫢)
  • so_state β€” StreamOutput bindings. StreamOutput's other outfit, fr fr.
  • dirty β€” Bitmap tracking per binding-type changes that have not yet been emitted to the device. the "not sent yet, don't @ me" list ⭐
  • dirty_vb β€” Bitmap tracking individual vertex buffer binding changes that have not yet been emitted to the device. same energy but per-vertex-buffer, and dare I say even more granular 😌
  • bind_cmd_buffer β€” Scratch space used to construct binding commands. her little arts-and-crafts corner πŸŽ€
  • bind_cmd_count β€” Number of binding command data entries in bind_cmd_buffer. (no period in the original, and I'm keeping it that way, we respect the source πŸ’€)
  • bind_first_slot β€” Used together with bind_cmd_buffer to indicate the device binding slot of the first command data entry in bind_cmd_buffer. they're a duo, you can't split them up 🫢

πŸ‘‘ Description πŸ‘‘

okay so the important thing to know: this structure also provides storage space for the individual struct vmw_ctx_binding objects, so that no dynamic allocation is needed for individual bindings. literally no malloc moment, the storage is already in there, she came prepared ✨πŸ”₯


🌈 SEE ALSO 🌈

Kernel file ./drivers/gpu/drm/vmwgfx/vmwgfx_binding.c β€” and because she's a social butterfly, here's the entire extended friend list, all of them, in order, go say hi πŸ‘‹:


bestie reminder: this page lives in ./drivers/gpu/drm/vmwgfx, and the version note is October 2026 β€” so like, dated but make it fashion. don't come for me about it, that's literally the footer info okay πŸ˜­πŸ’–

and that's the whole page, mwah, go forth and bind responsibly πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from