drm/atomic: Add new iterators over all state, v3.
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Mon, 16 Jan 2017 09:37:38 +0000 (10:37 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 14 Feb 2017 20:01:06 +0000 (21:01 +0100)
commit581e49fe6b411f407102a7f2377648849e0fa37f
treeb220ba04e18e8a07ef49fce6482d847d26f4b436
parent5b47d08900796081b7a1b1edf3aaedc119b625d4
drm/atomic: Add new iterators over all state, v3.

Add for_each_(old)(new)_(plane,connector,crtc)_in_state iterators to
replace the old for_each_xxx_in_state ones. This is useful for >1 flip
depth and getting rid of all xxx->state dereferences.

This requires extra fixups done when committing a state after
duplicating, which in general isn't valid but is used by suspend/resume.
To handle these, introduce drm_atomic_helper_commit_duplicated_state
which performs those fixups before checking & committing the state.

Changes since v1:
- Remove nonblock parameter for commit_duplicated_state.
Changes since v2:
- Use commit_duplicated_state for i915 load detection.
- Add WARN_ON(old_state != obj->state) before swapping.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1484559464-27107-2-git-send-email-maarten.lankhorst@linux.intel.com
drivers/gpu/drm/drm_atomic.c
drivers/gpu/drm/drm_atomic_helper.c
drivers/gpu/drm/i915/intel_display.c
include/drm/drm_atomic.h
include/drm/drm_atomic_helper.h