diff options
Diffstat (limited to 'drivers/gpu/drm/amd/display')
-rw-r--r-- | drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c | 92 |
1 files changed, 3 insertions, 89 deletions
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c index cfc86bc5dd2b..098a801ae745 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c @@ -1429,80 +1429,6 @@ static const struct drm_plane_funcs dm_plane_funcs = { .atomic_destroy_state = drm_atomic_helper_plane_destroy_state }; -static void clear_unrelated_fields(struct drm_plane_state *state) -{ - state->crtc = NULL; - state->fb = NULL; - state->state = NULL; - state->fence = NULL; -} - -/*TODO update because event is always present now */ -static bool page_flip_needed( - const struct drm_plane_state *new_state, - const struct drm_plane_state *old_state, - struct drm_pending_vblank_event *event, - bool commit_surface_required) -{ - struct drm_plane_state old_state_tmp; - struct drm_plane_state new_state_tmp; - - struct amdgpu_framebuffer *amdgpu_fb_old; - struct amdgpu_framebuffer *amdgpu_fb_new; - struct amdgpu_crtc *acrtc_new; - - uint64_t old_tiling_flags; - uint64_t new_tiling_flags; - - bool page_flip_required; - - if (!old_state) - return false; - - if (!old_state->fb) - return false; - - if (!new_state) - return false; - - if (!new_state->fb) - return false; - - old_state_tmp = *old_state; - new_state_tmp = *new_state; - - if (!event) - return false; - - amdgpu_fb_old = to_amdgpu_framebuffer(old_state->fb); - amdgpu_fb_new = to_amdgpu_framebuffer(new_state->fb); - - if (!get_fb_info(amdgpu_fb_old, &old_tiling_flags, NULL)) - return false; - - if (!get_fb_info(amdgpu_fb_new, &new_tiling_flags, NULL)) - return false; - - if (commit_surface_required == true && - old_tiling_flags != new_tiling_flags) - return false; - - clear_unrelated_fields(&old_state_tmp); - clear_unrelated_fields(&new_state_tmp); - - page_flip_required = memcmp(&old_state_tmp, - &new_state_tmp, - sizeof(old_state_tmp)) == 0 ? true:false; - - if (new_state->crtc && page_flip_required == false) { - acrtc_new = to_amdgpu_crtc(new_state->crtc); - if (acrtc_new->flip_flags & DRM_MODE_PAGE_FLIP_ASYNC) - page_flip_required = true; - } - - return page_flip_required; -} - static int dm_plane_helper_prepare_fb( struct drm_plane *plane, struct drm_plane_state *new_state) @@ -2477,11 +2403,7 @@ void amdgpu_dm_atomic_commit_tail( * 1. This commit is not a page flip. * 2. This commit is a page flip, and streams are created. */ - pflip_needed = !state->allow_modeset && - page_flip_needed( - plane_state, - old_plane_state, - crtc->state->event, true); + pflip_needed = !state->allow_modeset; if (!pflip_needed || action == DM_COMMIT_ACTION_DPMS_ON || action == DM_COMMIT_ACTION_SET) { @@ -2540,12 +2462,7 @@ void amdgpu_dm_atomic_commit_tail( if (!fb || !crtc || !crtc->state->planes_changed || !crtc->state->active) continue; - pflip_needed = !state->allow_modeset && - page_flip_needed( - plane_state, - old_plane_state, - crtc->state->event, - false); + pflip_needed = !state->allow_modeset; if (pflip_needed) { amdgpu_dm_do_flip( @@ -2927,7 +2844,6 @@ int amdgpu_dm_atomic_check(struct drm_device *dev, for (i = 0; i < set_count; i++) { for_each_plane_in_state(state, plane, plane_state, j) { - struct drm_plane_state *old_plane_state = plane->state; struct drm_crtc *crtc = plane_state->crtc; struct drm_framebuffer *fb = plane_state->fb; struct drm_connector *connector; @@ -2948,9 +2864,7 @@ int amdgpu_dm_atomic_check(struct drm_device *dev, * 2. This commit is a page flip, and streams are created. */ crtc_state = drm_atomic_get_crtc_state(state, crtc); - pflip_needed = !state->allow_modeset && - page_flip_needed(plane_state, old_plane_state, - crtc_state->event, true); + pflip_needed = !state->allow_modeset; if (!pflip_needed || action == DM_COMMIT_ACTION_DPMS_ON || action == DM_COMMIT_ACTION_SET) { |