From patchwork Tue Mar 23 03:12:32 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhenyu Wang X-Patchwork-Id: 87563 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o2N3GCDV006692 for ; Tue, 23 Mar 2010 03:16:47 GMT Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id CDD269EB11; Mon, 22 Mar 2010 20:16:11 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from orsmga101.jf.intel.com (mga06.intel.com [134.134.136.21]) by gabe.freedesktop.org (Postfix) with ESMTP id 8E8E79E94A for ; Mon, 22 Mar 2010 20:16:09 -0700 (PDT) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 22 Mar 2010 20:12:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.51,292,1267430400"; d="scan'208";a="502745389" Received: from ubuntu-hp.sh.intel.com (HELO localhost.localdomain) ([10.239.36.152]) by orsmga002.jf.intel.com with ESMTP; 22 Mar 2010 20:15:15 -0700 From: Zhenyu Wang To: intel-gfx@lists.freedesktop.org Date: Tue, 23 Mar 2010 11:12:32 +0800 Message-Id: <1269313953-9990-1-git-send-email-zhenyuw@linux.intel.com> X-Mailer: git-send-email 1.6.3.3 Subject: [Intel-gfx] [PATCH 1/2] drm/i915: Try to allocate more memory for FBC on Ironlake or GM45 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Tue, 23 Mar 2010 03:16:47 +0000 (UTC) diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index 902d286..61fb967 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c @@ -1451,9 +1451,19 @@ static int i915_load_modeset_init(struct drm_device *dev, int cfb_size; /* Try to get an 8M buffer... */ - if (prealloc_size > (9*1024*1024)) - cfb_size = 8*1024*1024; - else /* fall back to 7/8 of the stolen space */ + if (prealloc_size > (9*1024*1024)) { + if (IS_GM45(dev) || IS_IRONLAKE_M(dev)) { + if (prealloc_size >= (64 * 1024 * 1024)) + cfb_size = 32 * 1024 * 1024; + else if (prealloc_size >= (32 * 1024 * 1024)) + cfb_size = 24 * 1024 * 1024; + else if (prealloc_size >= (16 * 1024 * 1024)) + cfb_size = 12 * 1024 * 1024; + else + cfb_size = 8 * 1024 * 1024; + } else + cfb_size = 8*1024*1024; + } else /* fall back to 7/8 of the stolen space */ cfb_size = prealloc_size * 7 / 8; i915_setup_compression(dev, cfb_size); } diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index e9f706c..2f7ca42 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -1258,8 +1258,14 @@ static void intel_update_fbc(struct drm_crtc *crtc, dev_priv->no_fbc_reason = FBC_UNSUPPORTED_MODE; goto out_disable; } - if ((mode->hdisplay > 2048) || - (mode->vdisplay > 1536)) { + if (IS_GM45(dev) || IS_IRONLAKE_M(dev)) { + if ((mode->hdisplay > 4096) || (mode->vdisplay > 2048)) { + DRM_DEBUG_KMS("mode too large for compression, " + "disabling\n"); + dev_priv->no_fbc_reason = FBC_MODE_TOO_LARGE; + goto out_disable; + } + } else if ((mode->hdisplay > 2048) || (mode->vdisplay > 1536)) { DRM_DEBUG_KMS("mode too large for compression, disabling\n"); dev_priv->no_fbc_reason = FBC_MODE_TOO_LARGE; goto out_disable;