STRUCT I915_GEM_PROTO_ENGINE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… NAME πŸ’…

struct i915_gem_proto_engine β€” the prototype engine bestie, aka the blueprint era of an engine ✨

Oh and hey, you found yourself in the struct i915_...proto_engine(9) page of the Kernel API Manual β€” welcome, pull up a chair 🫢


🌸 SYNOPSIS 🌸

struct i915_gem_proto_engine {
    enum i915_gem_engine_type type;
    struct intel_engine_cs *engine;
    unsigned int num_siblings;
    unsigned int width;
    struct intel_engine_cs **siblings;
    struct intel_sseu sseu;
 };

Look at her. Six fields, zero notes, all main character energy πŸ‘‘


πŸŽ€ Members πŸŽ€

  • type β€” literally just the type of this engine, like a little name tag at a party 🏷️
  • engine β€” the actual engine field, but only for the physical ones (physical girlies only, iykyk)
  • num_siblings β€” how many balanced or parallel siblings we're talking about πŸ‘―
  • width β€” the width of each sibling, yes every single one πŸ“
  • siblings β€” the balanced siblings, or num_siblings * width when you're in parallel mode (math era fr fr)
  • sseu β€” the client-set SSEU parameters πŸ’«

✨ Description ✨

Okay so this struct is out here describing an engine that a context may contain. And engines come in four types, no cap:

  • I915_GEM_ENGINE_TYPE_INVALID β€” invalid engines can absolutely be created, but plot twist: they show up as a NULL in i915_gem_engines::engines[i], and the moment a user tries to actually use one, you get -EINVAL thrown at you πŸ’€ They're also super useful during proto-context construction, because the client may create invalid engines and then set them up later as virtual engines. Glow-up arc πŸ¦‹
  • I915_GEM_ENGINE_TYPE_PHYSICAL β€” a single physical engine, described by i915_gem_proto_engine::engine 🌟
  • I915_GEM_ENGINE_TYPE_BALANCED β€” a load-balanced engine set, described by i915_gem_proto_engine::num_siblings and i915_gem_proto_engine::siblings βš–οΈ
  • I915_GEM_ENGINE_TYPE_PARALLEL β€” a parallel submission engine set, described by i915_gem_proto_engine::width, i915_gem_proto_engine::num_siblings, and i915_gem_proto_engine::siblings πŸƒβ€β™€οΈπŸƒβ€β™€οΈ

🌈 SEE ALSO 🌈

Go read these next, bestie, they're all in the kernel file ./drivers/gpu/drm/i915/gem/i915_gem_context_types.h:

  • struct i915_gem_engines(9)
  • struct i915_gem_engines_iter(9)
  • enum i915_gem_engine_type(9)
  • struct i915_gem_proto_context(9)
  • struct i915_gem_context(9)

Sending you off with the receipts 🧾 β€” this one lives in ./drivers/gpu/drm/i915/gem, dated October 2026, and she's officially struct i915_...proto_engine(9). That's the whole vibe check, mwah πŸ’œπŸ’…
πŸ“¦ where this page comes from