Commit ea0000f0 authored by Daniel Vetter's avatar Daniel Vetter

drm/i915: Roll out the helper nonblock tracking

Right now still all blocking, no worker anywhere to be seen.
Reviewed-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1465827229-1704-2-git-send-email-daniel.vetter@ffwll.ch
parent 1f7528c4
...@@ -13722,6 +13722,10 @@ static int intel_atomic_commit(struct drm_device *dev, ...@@ -13722,6 +13722,10 @@ static int intel_atomic_commit(struct drm_device *dev,
unsigned long put_domains[I915_MAX_PIPES] = {}; unsigned long put_domains[I915_MAX_PIPES] = {};
unsigned crtc_vblank_mask = 0; unsigned crtc_vblank_mask = 0;
ret = drm_atomic_helper_setup_commit(state, nonblock);
if (ret)
return ret;
ret = intel_atomic_prepare_commit(dev, state, nonblock); ret = intel_atomic_prepare_commit(dev, state, nonblock);
if (ret) { if (ret) {
DRM_DEBUG_ATOMIC("Preparing state failed with %i\n", ret); DRM_DEBUG_ATOMIC("Preparing state failed with %i\n", ret);
...@@ -13733,6 +13737,8 @@ static int intel_atomic_commit(struct drm_device *dev, ...@@ -13733,6 +13737,8 @@ static int intel_atomic_commit(struct drm_device *dev,
dev_priv->wm.skl_results = intel_state->wm_results; dev_priv->wm.skl_results = intel_state->wm_results;
intel_shared_dpll_commit(state); intel_shared_dpll_commit(state);
drm_atomic_helper_wait_for_dependencies(state);
if (intel_state->modeset) { if (intel_state->modeset) {
memcpy(dev_priv->min_pixclk, intel_state->min_pixclk, memcpy(dev_priv->min_pixclk, intel_state->min_pixclk,
sizeof(intel_state->min_pixclk)); sizeof(intel_state->min_pixclk));
...@@ -13828,7 +13834,7 @@ static int intel_atomic_commit(struct drm_device *dev, ...@@ -13828,7 +13834,7 @@ static int intel_atomic_commit(struct drm_device *dev,
crtc_vblank_mask |= 1 << i; crtc_vblank_mask |= 1 << i;
} }
/* FIXME: add subpixel order */ drm_atomic_helper_commit_hw_done(state);
if (!state->legacy_cursor_update) if (!state->legacy_cursor_update)
intel_atomic_wait_for_vblanks(dev, dev_priv, crtc_vblank_mask); intel_atomic_wait_for_vblanks(dev, dev_priv, crtc_vblank_mask);
...@@ -13863,6 +13869,8 @@ static int intel_atomic_commit(struct drm_device *dev, ...@@ -13863,6 +13869,8 @@ static int intel_atomic_commit(struct drm_device *dev,
drm_atomic_helper_cleanup_planes(dev, state); drm_atomic_helper_cleanup_planes(dev, state);
mutex_unlock(&dev->struct_mutex); mutex_unlock(&dev->struct_mutex);
drm_atomic_helper_commit_cleanup_done(state);
drm_atomic_state_free(state); drm_atomic_state_free(state);
/* As one of the primary mmio accessors, KMS has a high likelihood /* As one of the primary mmio accessors, KMS has a high likelihood
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment