drm/i915: Move vblank evasion to commit (v4)
Move the vblank evasion up from the low-level, hw-specific update_plane() handlers to the general plane commit operation. Everything inside commit should now be non-sleeping, so this brings us closer to how vblank evasion will behave once we move over to atomic. v2: - Restore lost intel_crtc->active check on vblank evasion v3: - Replace assert_pipe_enabled() in intel_disable_primary_hw_plane() with an intel_crtc->active test; it turns out assert_pipe_enabled() grabs some mutexes and can sleep, which we can't do with interrupts disabled. v4: - Equivalent to v2; v3 change is now squashed into an earlier patch of the series. (Ander). Signed-off-by: Matt Roper <matthew.d.roper@intel.com> Reviewed-by: Ander Conselvan de Oliveira <conselvan2@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:

committed by
Daniel Vetter

parent
32b7eeec4d
commit
c34c9ee482
@@ -11864,6 +11864,12 @@ static void intel_begin_crtc_commit(struct drm_crtc *crtc)
|
||||
intel_update_watermarks(crtc);
|
||||
|
||||
intel_runtime_pm_get(dev_priv);
|
||||
|
||||
/* Perform vblank evasion around commit operation */
|
||||
if (intel_crtc->active)
|
||||
intel_crtc->atomic.evade =
|
||||
intel_pipe_update_start(intel_crtc,
|
||||
&intel_crtc->atomic.start_vbl_count);
|
||||
}
|
||||
|
||||
static void intel_finish_crtc_commit(struct drm_crtc *crtc)
|
||||
@@ -11873,6 +11879,10 @@ static void intel_finish_crtc_commit(struct drm_crtc *crtc)
|
||||
struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
|
||||
struct drm_plane *p;
|
||||
|
||||
if (intel_crtc->atomic.evade)
|
||||
intel_pipe_update_end(intel_crtc,
|
||||
intel_crtc->atomic.start_vbl_count);
|
||||
|
||||
intel_runtime_pm_put(dev_priv);
|
||||
|
||||
if (intel_crtc->atomic.wait_vblank)
|
||||
|
Reference in New Issue
Block a user