Op 22-03-17 om 22:05 schreef Pandiyan, Dhinakaran: > On Wed, 2017-03-22 at 11:00 +0100, Maarten Lankhorst wrote: >> Op 16-03-17 om 08:10 schreef Dhinakaran Pandiyan: >>> From: "Pandiyan, Dhinakaran" <dhinakaran.pandiyan@xxxxxxxxx> >>> >>> It is necessary to track states for objects other than connector, crtc >>> and plane for atomic modesets. But adding objects like DP MST link >>> bandwidth to drm_atomic_state would mean that a non-core object will be >>> modified by the core helper functions for swapping and clearing >>> it's state. So, lets add void * objects and helper functions that operate >>> on void * types to keep these objects and states private to the core. >>> Drivers can then implement specific functions to swap and clear states. >>> The other advantage having just void * for these objects in >>> drm_atomic_state is that objects of different types can be managed in the >>> same state array. >>> >>> v2: Added docs and new iterator to filter private objects (Daniel) >>> v3: Macro alignment (Chris) >>> >>> Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> >>> Cc: Archit Taneja <architt@xxxxxxxxxxxxxx> >>> Cc: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> >>> Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> >>> Cc: Harry Wentland <Harry.wentland@xxxxxxx> >>> Acked-by: Harry Wentland <harry.wentland@xxxxxxx> >>> Suggested-by: Daniel Vetter <daniel.vetter@xxxxxxxx> >>> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@xxxxxxxxx> >> Mostly looks good, but too many null checks. I think it's best to get rid of them all >> by freeing state->driver_private in default_clear() or setting num_private_objs to 0. >> It would remove the need for all null checks I think.. >> >> ~Maarten >> > Did you mean the NULL checks in this loop inside > drm_atomic_get_private_obj_state() > > + for (i = 0; i < state->num_private_objs; i++) > + if (obj == state->private_objs[i].obj && > + state->private_objs[i].obj_state) > + return state->private_objs[i].obj_state; > > and the fact that I am not setting num_private_objs = 0 in > drm_atomic_state_default_clear() ? All of them, the NULL check in default_clear goes away, same for get_private_obj_state, and __for_each_private_obj _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel