|
@@ -989,7 +989,7 @@ void intel_fbc_invalidate(struct drm_i915_private *dev_priv,
|
|
if (!fbc_supported(dev_priv))
|
|
if (!fbc_supported(dev_priv))
|
|
return;
|
|
return;
|
|
|
|
|
|
- if (origin == ORIGIN_GTT)
|
|
|
|
|
|
+ if (origin == ORIGIN_GTT || origin == ORIGIN_FLIP)
|
|
return;
|
|
return;
|
|
|
|
|
|
mutex_lock(&fbc->lock);
|
|
mutex_lock(&fbc->lock);
|
|
@@ -1015,7 +1015,7 @@ void intel_fbc_flush(struct drm_i915_private *dev_priv,
|
|
if (!fbc_supported(dev_priv))
|
|
if (!fbc_supported(dev_priv))
|
|
return;
|
|
return;
|
|
|
|
|
|
- if (origin == ORIGIN_GTT)
|
|
|
|
|
|
+ if (origin == ORIGIN_GTT || origin == ORIGIN_FLIP)
|
|
return;
|
|
return;
|
|
|
|
|
|
mutex_lock(&fbc->lock);
|
|
mutex_lock(&fbc->lock);
|
|
@@ -1023,12 +1023,10 @@ void intel_fbc_flush(struct drm_i915_private *dev_priv,
|
|
fbc->busy_bits &= ~frontbuffer_bits;
|
|
fbc->busy_bits &= ~frontbuffer_bits;
|
|
|
|
|
|
if (!fbc->busy_bits && fbc->enabled) {
|
|
if (!fbc->busy_bits && fbc->enabled) {
|
|
- if (origin != ORIGIN_FLIP && fbc->active) {
|
|
|
|
|
|
+ if (fbc->active)
|
|
intel_fbc_recompress(dev_priv);
|
|
intel_fbc_recompress(dev_priv);
|
|
- } else {
|
|
|
|
- __intel_fbc_deactivate(dev_priv);
|
|
|
|
|
|
+ else
|
|
__intel_fbc_update(fbc->crtc);
|
|
__intel_fbc_update(fbc->crtc);
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
mutex_unlock(&fbc->lock);
|
|
mutex_unlock(&fbc->lock);
|