STRUCT KOMEDA_COMPONENT_STATE(9)
π 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 thecomponent_stateviadrm_atomic_commit. she's the chaperone. πcomponentβ backpointer to thecomponent. 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 usercrtcplaneβ backpointer for the userplanewb_connβ backpointer for the userwb_connectorbinding_userβ the currently bound user. and like, who is that? could becrtc, could beplane, could bewb_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:
planewhen the input islayer, andwb_connif the input iscompiz. she contains multitudes π
- Layer: its user is always
active_inputsβ bitmask of the inputs index. the math is mathing, watch:active_inputs = changed_active_inputs | unchanged_active_inputsaffected_inputs = old->active_inputs | new->active_inputs;disabling_inputs = affected_inputs ^ active_inputs;changed_inputs = disabling_inputs | changed_active_inputs;
NOTE:changed_inputsdoesn't include allactive_inputbut onlychanged_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 thechanged_active_inputs. short and sweet, we stan.affected_inputsβ bitmask for affected inputs.inputsβ the specificinputs[i]is only valid whenBIT(i)has been set inactive_inputs. if not? theinputs[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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms