diff options
Diffstat (limited to 'drivers/gpu/drm/drm_atomic_helper.c')
-rw-r--r-- | drivers/gpu/drm/drm_atomic_helper.c | 24 |
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 | ||
949 | static 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 | */ | ||
963 | bool 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 | } |
982 | EXPORT_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); |