STRUCT KOMEDA_COMPONENT_STATE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct komeda_component_state(9)

okay bestie, welcome to the Kernel API Manual ✨ β€” today's main character is struct komeda_component_state(9), and honestly? she's kind of a big deal underneath all that arm/display glam. let's get into it πŸŽ€


✨ NAME ✨

struct komeda_component_state β€” like, the struct itself. that's the whole name. no notes. 🫢


🌸 SYNOPSIS 🌸

here's the shape of her, literally, character for character:

struct komeda_component_state {
    struct drm_private_state obj;
    struct komeda_component *component;
    union {
      struct drm_crtc *crtc;
      struct drm_plane *plane;
      struct drm_connector *wb_conn;
      void *binding_user;
    };
    u16 active_inputs;
    u16 changed_active_inputs;
    u16 affected_inputs;
    struct komeda_component_output inputs[KOMEDA_COMPONENT_N_INPUTS];
 };

look at that anonymous union just vibing in the middle, no name, no label, just ✨mystery✨.


πŸ¦‹ Members πŸ¦‹

  • obj β€” this is what tracks the component_state via drm_atomic_commit. she's the chaperone. πŸ‘‘
  • component β€” backpointer to the component. yes, she points home. iconic.
  • {unnamed_union} β€” anonymous. that's it, that's the description. no name given, and we respect her privacy πŸ™ˆ. inside it you got:
  • crtc β€” backpointer for the user crtc
  • plane β€” backpointer for the user plane
  • wb_conn β€” backpointer for the user wb_connector
  • binding_user β€” the currently bound user. and like, who is that? could be crtc, could be plane, could be wb_conn β€” it's "valid decided by component and inputs", iykyk. here's the breakdown fr:
    • Layer: its user is always plane. periodt.
    • compiz/improc/timing_ctrlr: the user is crtc.
    • wb_layer: wb_conn;
    • scaler: plane when the input is layer, and wb_conn if the input is compiz. she contains multitudes πŸ’…
  • active_inputs β€” bitmask of the inputs index. the math is mathing, watch:
    • active_inputs = changed_active_inputs | unchanged_active_inputs
    • affected_inputs = old->active_inputs | new->active_inputs;
    • disabling_inputs = affected_inputs ^ active_inputs;
    • changed_inputs = disabling_inputs | changed_active_inputs;
NOTE: changed_inputs doesn't include all active_input but only changed_active_inputs, and this bitmask can be used in chip level for dirty update. so don't come for her about the naming, she's doing her best 😭
  • changed_active_inputs β€” bitmask of the changed_active_inputs. short and sweet, we stan.
  • affected_inputs β€” bitmask for affected inputs.
  • inputs β€” the specific inputs[i] is only valid when BIT(i) has been set in active_inputs. if not? the inputs[i] is undefined. read that again ngl, undefined means undefined, no cap πŸ’€

🌈 Description 🌈

okay so the whole vibe: component_state is the data flow configuration of the component. she's the superclass of all the specific component_states β€” think komeda_layer_state, komeda_scaler_state. mother is mothering, the children inherit πŸ‘‘


⭐ SEE ALSO ⭐

  • Kernel file ./drivers/gpu/drm/arm/display/komeda/komeda_pipeline.h
  • struct komeda_component(9), struct komeda_component_output(9), struct komeda_pipeline(9), struct komeda_pipeline_state(9)

go read them, bestie, they're all linked in the group chat 🫢


and that's the page, babes πŸ’– this came out of ./drivers/gpu/drm/arm/display/... β€” version dated October 2026 β€” and she's still serving struct kome...ponent_state(9) realness. slay, no cap, periodt πŸŒΈβœ¨πŸŽ€

πŸ“¦ where this page comes from