aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_atomic_helper.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/drm_atomic_helper.c')
-rw-r--r--drivers/gpu/drm/drm_atomic_helper.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 57cccd68ca52..7c523060a076 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -946,9 +946,23 @@ static void wait_for_fences(struct drm_device *dev,
946 } 946 }
947} 947}
948 948
949static bool framebuffer_changed(struct drm_device *dev, 949/**
950 struct drm_atomic_state *old_state, 950 * drm_atomic_helper_framebuffer_changed - check if framebuffer has changed
951 struct drm_crtc *crtc) 951 * @dev: DRM device
952 * @old_state: atomic state object with old state structures
953 * @crtc: DRM crtc
954 *
955 * Checks whether the framebuffer used for this CRTC changes as a result of
956 * the atomic update. This is useful for drivers which cannot use
957 * drm_atomic_helper_wait_for_vblanks() and need to reimplement its
958 * functionality.
959 *
960 * Returns:
961 * true if the framebuffer changed.
962 */
963bool drm_atomic_helper_framebuffer_changed(struct drm_device *dev,
964 struct drm_atomic_state *old_state,
965 struct drm_crtc *crtc)
952{ 966{
953 struct drm_plane *plane; 967 struct drm_plane *plane;
954 struct drm_plane_state *old_plane_state; 968 struct drm_plane_state *old_plane_state;
@@ -965,6 +979,7 @@ static bool framebuffer_changed(struct drm_device *dev,
965 979
966 return false; 980 return false;
967} 981}
982EXPORT_SYMBOL(drm_atomic_helper_framebuffer_changed);
968 983
969/** 984/**
970 * drm_atomic_helper_wait_for_vblanks - wait for vblank on crtcs 985 * drm_atomic_helper_wait_for_vblanks - wait for vblank on crtcs
@@ -999,7 +1014,8 @@ drm_atomic_helper_wait_for_vblanks(struct drm_device *dev,
999 if (old_state->legacy_cursor_update) 1014 if (old_state->legacy_cursor_update)
1000 continue; 1015 continue;
1001 1016
1002 if (!framebuffer_changed(dev, old_state, crtc)) 1017 if (!drm_atomic_helper_framebuffer_changed(dev,
1018 old_state, crtc))
1003 continue; 1019 continue;
1004 1020
1005 ret = drm_crtc_vblank_get(crtc); 1021 ret = drm_crtc_vblank_get(crtc);