On Mon, Dec 04, 2023 at 01:17:06PM +0100, Maxime Ripard wrote: > The current documentation of drm_atomic_state says that it's the "global > state object". This is confusing since, while it does contain all the > objects affected by an update and their respective states, if an object > isn't affected by this update it won't be part of it. > > Thus, it's not truly a "global state", unlike object state structures > that do contain the entire state of a given object. > > Signed-off-by: Maxime Ripard <mripard@xxxxxxxxxx> So this is probably the biggest naming fumble I've committed, because this is the drm_atomic_commit structure: It's not just a state structure, but it represents the transition from a set of old to new states. Which is also why we have both old and new state pointers in it. > --- > include/drm/drm_atomic.h | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h > index 914574b58ae7..81ad7369b90d 100644 > --- a/include/drm/drm_atomic.h > +++ b/include/drm/drm_atomic.h > @@ -346,11 +346,19 @@ struct __drm_private_objs_state { > }; > > /** > - * struct drm_atomic_state - the global state object for atomic updates > + * struct drm_atomic_state - Atomic Update structure I think we're using "commit" more often than "update" > + * > + * This structure is the kernel counterpart of @drm_mode_atomic and contains > + * all the objects affected by an atomic modeset update and their states. My suggestion: This structure is the kernel counterpart of @drm_mode_atomic and represents an atomic commit that transitions from an old to a new display state. It contains all the objects affected by an atomic commits and both the new state structures and pointers to the old state structures for these. > * > * States are added to an atomic update by calling drm_atomic_get_crtc_state(), > * drm_atomic_get_plane_state(), drm_atomic_get_connector_state(), or for > * private state structures, drm_atomic_get_private_obj_state(). > + * > + * NOTE: While this structure looks to be global and affecting the whole DRM > + * device, it only contains the objects affected by the atomic commit. > + * Unaffected objects will not be part of that update, unless they have been > + * explicitly added by either the framework or the driver. Since you remove the global in the header summary I wouldn't reintroduce it here. Seems to just add to the confusion again instead of clarifying. If you want maybe clarify that an atomic commit does not need to contain all the objects of a &drm_device, or something like that. With the comments suitably addressed: Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > */ > struct drm_atomic_state { > /** > -- > 2.43.0 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch