All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: disable FBC when more than one pipe is active
@ 2010-07-23 22:20 Jesse Barnes
  2010-07-26 17:20 ` Jesse Barnes
  2010-07-26 18:17 ` Eric Anholt
  0 siblings, 2 replies; 3+ messages in thread
From: Jesse Barnes @ 2010-07-23 22:20 UTC (permalink / raw)
  To: intel-gfx, eric

We're really supposed to do this to avoid trouble with underflows when
multiple planes are active.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=26987.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index aee83fa..9214119 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -605,6 +605,9 @@ static int i915_fbc_status(struct seq_file *m, void *unused)
 		case FBC_NOT_TILED:
 			seq_printf(m, "scanout buffer not tiled");
 			break;
+		case FBC_MULTIPLE_PIPES:
+			seq_printf(m, "multiple pipes are enabled");
+			break;
 		default:
 			seq_printf(m, "unknown reason");
 		}
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 70e2527..ae859ae 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -216,6 +216,7 @@ enum no_fbc_reason {
 	FBC_MODE_TOO_LARGE, /* mode too large for compression */
 	FBC_BAD_PLANE, /* fbc not supported on plane */
 	FBC_NOT_TILED, /* buffer not tiled */
+	FBC_MULTIPLE_PIPES, /* more than one pipe active */
 };
 
 enum intel_pch {
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index dfbdf88..0f0029d 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1244,8 +1244,12 @@ static void intel_update_fbc(struct drm_crtc *crtc,
 	struct drm_framebuffer *fb = crtc->fb;
 	struct intel_framebuffer *intel_fb;
 	struct drm_i915_gem_object *obj_priv;
+	struct drm_crtc *tmp_crtc;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	int plane = intel_crtc->plane;
+	int crtcs_enabled = 0;
+
+	DRM_DEBUG_KMS("\n");
 
 	if (!i915_powersave)
 		return;
@@ -1263,10 +1267,21 @@ static void intel_update_fbc(struct drm_crtc *crtc,
 	 * If FBC is already on, we just have to verify that we can
 	 * keep it that way...
 	 * Need to disable if:
+	 *   - more than one pipe is active
 	 *   - changing FBC params (stride, fence, mode)
 	 *   - new fb is too large to fit in compressed buffer
 	 *   - going to an unsupported config (interlace, pixel multiply, etc.)
 	 */
+	list_for_each_entry(tmp_crtc, &dev->mode_config.crtc_list, head) {
+		if (tmp_crtc->enabled)
+			crtcs_enabled++;
+	}
+	DRM_DEBUG_KMS("%d pipes active\n", crtcs_enabled);
+	if (crtcs_enabled > 1) {
+		DRM_DEBUG_KMS("more than one pipe active, disabling compression\n");
+		dev_priv->no_fbc_reason = FBC_MULTIPLE_PIPES;
+		goto out_disable;
+	}
 	if (intel_fb->obj->size > dev_priv->cfb_size) {
 		DRM_DEBUG_KMS("framebuffer too large, disabling "
 				"compression\n");

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] drm/i915: disable FBC when more than one pipe is active
  2010-07-23 22:20 [PATCH] drm/i915: disable FBC when more than one pipe is active Jesse Barnes
@ 2010-07-26 17:20 ` Jesse Barnes
  2010-07-26 18:17 ` Eric Anholt
  1 sibling, 0 replies; 3+ messages in thread
From: Jesse Barnes @ 2010-07-26 17:20 UTC (permalink / raw)
  Cc: intel-gfx

On Fri, 23 Jul 2010 15:20:00 -0700
Jesse Barnes <jbarnes@virtuousgeek.org> wrote:

> We're really supposed to do this to avoid trouble with underflows when
> multiple planes are active.
> 
> Fixes https://bugs.freedesktop.org/show_bug.cgi?id=26987.
> 
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>

And

Tested-by: fangxun <xunx.fang@intel.com>

-- 
Jesse Barnes, Intel Open Source Technology Center

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] drm/i915: disable FBC when more than one pipe is active
  2010-07-23 22:20 [PATCH] drm/i915: disable FBC when more than one pipe is active Jesse Barnes
  2010-07-26 17:20 ` Jesse Barnes
@ 2010-07-26 18:17 ` Eric Anholt
  1 sibling, 0 replies; 3+ messages in thread
From: Eric Anholt @ 2010-07-26 18:17 UTC (permalink / raw)
  To: Jesse Barnes, intel-gfx


[-- Attachment #1.1: Type: text/plain, Size: 341 bytes --]

On Fri, 23 Jul 2010 15:20:00 -0700, Jesse Barnes <jbarnes@virtuousgeek.org> wrote:
> We're really supposed to do this to avoid trouble with underflows when
> multiple planes are active.
> 
> Fixes https://bugs.freedesktop.org/show_bug.cgi?id=26987.
> 
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>

Applied to for-linus.

[-- Attachment #1.2: Type: application/pgp-signature, Size: 197 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2010-07-26 18:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-23 22:20 [PATCH] drm/i915: disable FBC when more than one pipe is active Jesse Barnes
2010-07-26 17:20 ` Jesse Barnes
2010-07-26 18:17 ` Eric Anholt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.