mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 21:33:00 +00:00
drm/i915: Avoid underruns when disabling sprites
As the watermark registers aren't double bufferd, clearing the watermarks immediately after writing the sprite registers can be hazardous. Until we have something better, add a wait for vblank between the two steps to make sure the sprite no longer needs the watermark levels before we clear them. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Imre Deak <imre.deak@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
efb31d15dc
commit
1bd09ec7ad
@ -336,6 +336,12 @@ ivb_disable_plane(struct drm_plane *plane, struct drm_crtc *crtc)
|
||||
I915_MODIFY_DISPBASE(SPRSURF(pipe), 0);
|
||||
POSTING_READ(SPRSURF(pipe));
|
||||
|
||||
/*
|
||||
* Avoid underruns when disabling the sprite.
|
||||
* FIXME remove once watermark updates are done properly.
|
||||
*/
|
||||
intel_wait_for_vblank(dev, pipe);
|
||||
|
||||
intel_update_sprite_watermarks(plane, crtc, 0, 0, false, false);
|
||||
}
|
||||
|
||||
@ -503,6 +509,12 @@ ilk_disable_plane(struct drm_plane *plane, struct drm_crtc *crtc)
|
||||
I915_MODIFY_DISPBASE(DVSSURF(pipe), 0);
|
||||
POSTING_READ(DVSSURF(pipe));
|
||||
|
||||
/*
|
||||
* Avoid underruns when disabling the sprite.
|
||||
* FIXME remove once watermark updates are done properly.
|
||||
*/
|
||||
intel_wait_for_vblank(dev, pipe);
|
||||
|
||||
intel_update_sprite_watermarks(plane, crtc, 0, 0, false, false);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user