Commit cd0de039 authored by Keith Packard's avatar Keith Packard

drm/i915: FBC off for ironlake and older, otherwise on by default

Make the default FBC behaviour chipset specific, allowing us to turn
it on by default for Ironlake and older where it has been seen to
cause trouble with screen updates.
Signed-off-by: default avatarKeith Packard <keithp@keithp.com>
Tested-by: default avatarFrancis Moreau <francis.moro@gmail.com>
parent cc68c81a
...@@ -67,11 +67,11 @@ module_param_named(i915_enable_rc6, i915_enable_rc6, int, 0600); ...@@ -67,11 +67,11 @@ module_param_named(i915_enable_rc6, i915_enable_rc6, int, 0600);
MODULE_PARM_DESC(i915_enable_rc6, MODULE_PARM_DESC(i915_enable_rc6,
"Enable power-saving render C-state 6 (default: true)"); "Enable power-saving render C-state 6 (default: true)");
unsigned int i915_enable_fbc __read_mostly = 1; unsigned int i915_enable_fbc __read_mostly = -1;
module_param_named(i915_enable_fbc, i915_enable_fbc, int, 0600); module_param_named(i915_enable_fbc, i915_enable_fbc, int, 0600);
MODULE_PARM_DESC(i915_enable_fbc, MODULE_PARM_DESC(i915_enable_fbc,
"Enable frame buffer compression for power savings " "Enable frame buffer compression for power savings "
"(default: false)"); "(default: -1 (use per-chip default))");
unsigned int i915_lvds_downclock __read_mostly = 0; unsigned int i915_lvds_downclock __read_mostly = 0;
module_param_named(lvds_downclock, i915_lvds_downclock, int, 0400); module_param_named(lvds_downclock, i915_lvds_downclock, int, 0400);
......
...@@ -1799,6 +1799,7 @@ static void intel_update_fbc(struct drm_device *dev) ...@@ -1799,6 +1799,7 @@ static void intel_update_fbc(struct drm_device *dev)
struct drm_framebuffer *fb; struct drm_framebuffer *fb;
struct intel_framebuffer *intel_fb; struct intel_framebuffer *intel_fb;
struct drm_i915_gem_object *obj; struct drm_i915_gem_object *obj;
int enable_fbc;
DRM_DEBUG_KMS("\n"); DRM_DEBUG_KMS("\n");
...@@ -1839,8 +1840,15 @@ static void intel_update_fbc(struct drm_device *dev) ...@@ -1839,8 +1840,15 @@ static void intel_update_fbc(struct drm_device *dev)
intel_fb = to_intel_framebuffer(fb); intel_fb = to_intel_framebuffer(fb);
obj = intel_fb->obj; obj = intel_fb->obj;
if (!i915_enable_fbc) { enable_fbc = i915_enable_fbc;
DRM_DEBUG_KMS("fbc disabled per module param (default off)\n"); if (enable_fbc < 0) {
DRM_DEBUG_KMS("fbc set to per-chip default\n");
enable_fbc = 1;
if (INTEL_INFO(dev)->gen <= 5)
enable_fbc = 0;
}
if (!enable_fbc) {
DRM_DEBUG_KMS("fbc disabled per module param\n");
dev_priv->no_fbc_reason = FBC_MODULE_PARAM; dev_priv->no_fbc_reason = FBC_MODULE_PARAM;
goto out_disable; goto out_disable;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment