mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-09 11:00:52 +00:00
drm/atomic: Make drm_atomic_plane_disabling easier to understand.
This function becomes a lot simpler when having passed both the old and new state to it. Looking at all callers, it seems that old_plane_state is never NULL so the check can be dropped. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1487256430-7625-3-git-send-email-maarten.lankhorst@linux.intel.com Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
415c3ac3f2
commit
51ffa12d90
@ -1764,7 +1764,8 @@ void drm_atomic_helper_commit_planes(struct drm_device *dev,
|
||||
if (!funcs)
|
||||
continue;
|
||||
|
||||
disabling = drm_atomic_plane_disabling(plane, old_plane_state);
|
||||
disabling = drm_atomic_plane_disabling(old_plane_state,
|
||||
new_plane_state);
|
||||
|
||||
if (active_only) {
|
||||
/*
|
||||
@ -1859,11 +1860,11 @@ drm_atomic_helper_commit_planes_on_crtc(struct drm_crtc_state *old_crtc_state)
|
||||
|
||||
WARN_ON(plane->state->crtc && plane->state->crtc != crtc);
|
||||
|
||||
if (drm_atomic_plane_disabling(plane, old_plane_state) &&
|
||||
if (drm_atomic_plane_disabling(old_plane_state, plane->state) &&
|
||||
plane_funcs->atomic_disable)
|
||||
plane_funcs->atomic_disable(plane, old_plane_state);
|
||||
else if (plane->state->crtc ||
|
||||
drm_atomic_plane_disabling(plane, old_plane_state))
|
||||
drm_atomic_plane_disabling(old_plane_state, plane->state))
|
||||
plane_funcs->atomic_update(plane, old_plane_state);
|
||||
}
|
||||
|
||||
|
@ -469,7 +469,7 @@ int drm_plane_helper_commit(struct drm_plane *plane,
|
||||
* Drivers may optionally implement the ->atomic_disable callback, so
|
||||
* special-case that here.
|
||||
*/
|
||||
if (drm_atomic_plane_disabling(plane, plane_state) &&
|
||||
if (drm_atomic_plane_disabling(plane_state, plane->state) &&
|
||||
plane_funcs->atomic_disable)
|
||||
plane_funcs->atomic_disable(plane, plane_state);
|
||||
else
|
||||
|
@ -220,10 +220,10 @@ int drm_atomic_helper_legacy_gamma_set(struct drm_crtc *crtc,
|
||||
__drm_atomic_get_current_plane_state((crtc_state)->state, \
|
||||
plane)))
|
||||
|
||||
/*
|
||||
/**
|
||||
* drm_atomic_plane_disabling - check whether a plane is being disabled
|
||||
* @plane: plane object
|
||||
* @old_state: previous atomic state
|
||||
* @old_plane_state: old atomic plane state
|
||||
* @new_plane_state: new atomic plane state
|
||||
*
|
||||
* Checks the atomic state of a plane to determine whether it's being disabled
|
||||
* or not. This also WARNs if it detects an invalid state (both CRTC and FB
|
||||
@ -233,28 +233,18 @@ int drm_atomic_helper_legacy_gamma_set(struct drm_crtc *crtc,
|
||||
* True if the plane is being disabled, false otherwise.
|
||||
*/
|
||||
static inline bool
|
||||
drm_atomic_plane_disabling(struct drm_plane *plane,
|
||||
struct drm_plane_state *old_state)
|
||||
drm_atomic_plane_disabling(struct drm_plane_state *old_plane_state,
|
||||
struct drm_plane_state *new_plane_state)
|
||||
{
|
||||
/*
|
||||
* When disabling a plane, CRTC and FB should always be NULL together.
|
||||
* Anything else should be considered a bug in the atomic core, so we
|
||||
* gently warn about it.
|
||||
*/
|
||||
WARN_ON((plane->state->crtc == NULL && plane->state->fb != NULL) ||
|
||||
(plane->state->crtc != NULL && plane->state->fb == NULL));
|
||||
WARN_ON((new_plane_state->crtc == NULL && new_plane_state->fb != NULL) ||
|
||||
(new_plane_state->crtc != NULL && new_plane_state->fb == NULL));
|
||||
|
||||
/*
|
||||
* When using the transitional helpers, old_state may be NULL. If so,
|
||||
* we know nothing about the current state and have to assume that it
|
||||
* might be enabled.
|
||||
*
|
||||
* When using the atomic helpers, old_state won't be NULL. Therefore
|
||||
* this check assumes that either the driver will have reconstructed
|
||||
* the correct state in ->reset() or that the driver will have taken
|
||||
* appropriate measures to disable all planes.
|
||||
*/
|
||||
return (!old_state || old_state->crtc) && !plane->state->crtc;
|
||||
return old_plane_state->crtc && !new_plane_state->crtc;
|
||||
}
|
||||
|
||||
#endif /* DRM_ATOMIC_HELPER_H_ */
|
||||
|
Loading…
Reference in New Issue
Block a user