diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2013-10-01 18:02:16 +0300 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-10-10 12:47:01 +0200 |
commit | abae50ed12b6f556afce0febb41639f0ede28fb9 (patch) | |
tree | ebe552024148c937ec1e34dcf318f01c28f8a9da /drivers/gpu/drm | |
parent | 098ebd6b7e3ed53bdb0a368b7c2bae29f3914c88 (diff) |
drm/i915: Do the fbc vs. primary plane enable/disable in the right order
Disable fbc before disabling the primary plane, and enable fbc after
the primary plane has been enabled again.
Also use intel_disable_fbc() to disable FBC to avoid the pointless
overhead of intel_update_fbc(), and especially avoid having to clean
up and set up the stolen mem compressed buffer again.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/i915/intel_sprite.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c index 276c3a6a9168..d19146992f34 100644 --- a/drivers/gpu/drm/i915/intel_sprite.c +++ b/drivers/gpu/drm/i915/intel_sprite.c @@ -526,11 +526,11 @@ intel_enable_primary(struct drm_crtc *crtc) intel_crtc->primary_disabled = false; + I915_WRITE(reg, I915_READ(reg) | DISPLAY_PLANE_ENABLE); + mutex_lock(&dev->struct_mutex); intel_update_fbc(dev); mutex_unlock(&dev->struct_mutex); - - I915_WRITE(reg, I915_READ(reg) | DISPLAY_PLANE_ENABLE); } static void @@ -544,13 +544,14 @@ intel_disable_primary(struct drm_crtc *crtc) if (intel_crtc->primary_disabled) return; - I915_WRITE(reg, I915_READ(reg) & ~DISPLAY_PLANE_ENABLE); - intel_crtc->primary_disabled = true; mutex_lock(&dev->struct_mutex); - intel_update_fbc(dev); + if (dev_priv->fbc.plane == intel_crtc->plane) + intel_disable_fbc(dev); mutex_unlock(&dev->struct_mutex); + + I915_WRITE(reg, I915_READ(reg) & ~DISPLAY_PLANE_ENABLE); } static int |