+ /**
+ * Emit a relocation for a guest-backed shader object.
+ *
+ * NOTE: Order of this call does matter. It should be the same order
+ * as relocations appear in the command buffer.
+ */
+ void
+ (*shader_relocation)(struct svga_winsys_context *swc,
+ uint32 *shid,
+ uint32 *mobid,
+ uint32 *offset,
+ struct svga_winsys_gb_shader *shader);
+
+ /**
+ * Emit a relocation for a guest-backed context.
+ *
+ * NOTE: Order of this call does matter. It should be the same order
+ * as relocations appear in the command buffer.
+ */
+ void
+ (*context_relocation)(struct svga_winsys_context *swc, uint32 *cid);
+
+ /**
+ * Emit a relocation for a guest Memory OBject.
+ *
+ * @param flags bitmask of SVGA_RELOC_* flags
+ * @param offset_into_mob Buffer starts at this offset into the MOB.
+ *
+ * Note that not all commands accept an offset into the MOB and
+ * those commands can't use suballocated buffer pools. To trap
+ * errors from improper buffer pool usage, set the offset_into_mob
+ * pointer to NULL.
+ */
+ void
+ (*mob_relocation)(struct svga_winsys_context *swc,
+ SVGAMobId *id,
+ uint32 *offset_into_mob,
+ struct svga_winsys_buffer *buffer,
+ uint32 offset,
+ unsigned flags);
+