diff options
author | Damien Lespiau <damien.lespiau@intel.com> | 2013-06-24 11:22:02 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-07-01 05:27:46 -0400 |
commit | 8a5729a37375c20a196e14ce49b4390d42bdb87b (patch) | |
tree | 2f2f439ea974f5301ad1e3615d31f69058df4b4b /drivers/gpu/drm | |
parent | b63fb44c65ac37ceac8acd258939fcdc9f223c42 (diff) |
drm/i915: Fix reason for per-chip disabling of FBC
When running on my snb machine, recent kernels display successively:
[drm:intel_update_fbc], fbc set to per-chip default
[drm:intel_update_fbc], fbc disabled per module param
But no module param is set. This happens because the check for the
module parameter uses a variable that has been overridden inside the
"per-chip default" code.
Fix up the logic and add another reason for the FBC to the be disabled.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/i915/i915_debugfs.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_pm.c | 14 |
3 files changed, 10 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 47d6c748057e..dca49828e3fc 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c | |||
@@ -1518,6 +1518,9 @@ static int i915_fbc_status(struct seq_file *m, void *unused) | |||
1518 | case FBC_MODULE_PARAM: | 1518 | case FBC_MODULE_PARAM: |
1519 | seq_printf(m, "disabled per module param (default off)"); | 1519 | seq_printf(m, "disabled per module param (default off)"); |
1520 | break; | 1520 | break; |
1521 | case FBC_CHIP_DEFAULT: | ||
1522 | seq_printf(m, "disabled per chip default"); | ||
1523 | break; | ||
1521 | default: | 1524 | default: |
1522 | seq_printf(m, "unknown reason"); | 1525 | seq_printf(m, "unknown reason"); |
1523 | } | 1526 | } |
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index cc1d6056ab70..59c45f293ec9 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -537,6 +537,7 @@ enum no_fbc_reason { | |||
537 | FBC_NOT_TILED, /* buffer not tiled */ | 537 | FBC_NOT_TILED, /* buffer not tiled */ |
538 | FBC_MULTIPLE_PIPES, /* more than one pipe active */ | 538 | FBC_MULTIPLE_PIPES, /* more than one pipe active */ |
539 | FBC_MODULE_PARAM, | 539 | FBC_MODULE_PARAM, |
540 | FBC_CHIP_DEFAULT, /* disabled by default on this chip */ | ||
540 | }; | 541 | }; |
541 | 542 | ||
542 | enum intel_pch { | 543 | enum intel_pch { |
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index e0de8b3337d8..adc7f3eb4ef3 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c | |||
@@ -447,7 +447,6 @@ void intel_update_fbc(struct drm_device *dev) | |||
447 | struct drm_framebuffer *fb; | 447 | struct drm_framebuffer *fb; |
448 | struct intel_framebuffer *intel_fb; | 448 | struct intel_framebuffer *intel_fb; |
449 | struct drm_i915_gem_object *obj; | 449 | struct drm_i915_gem_object *obj; |
450 | int enable_fbc; | ||
451 | unsigned int max_hdisplay, max_vdisplay; | 450 | unsigned int max_hdisplay, max_vdisplay; |
452 | 451 | ||
453 | if (!i915_powersave) | 452 | if (!i915_powersave) |
@@ -488,14 +487,13 @@ void intel_update_fbc(struct drm_device *dev) | |||
488 | intel_fb = to_intel_framebuffer(fb); | 487 | intel_fb = to_intel_framebuffer(fb); |
489 | obj = intel_fb->obj; | 488 | obj = intel_fb->obj; |
490 | 489 | ||
491 | enable_fbc = i915_enable_fbc; | 490 | if (i915_enable_fbc < 0 && |
492 | if (enable_fbc < 0) { | 491 | INTEL_INFO(dev)->gen <= 7 && !IS_HASWELL(dev)) { |
493 | DRM_DEBUG_KMS("fbc set to per-chip default\n"); | 492 | DRM_DEBUG_KMS("disabled per chip default\n"); |
494 | enable_fbc = 1; | 493 | dev_priv->no_fbc_reason = FBC_CHIP_DEFAULT; |
495 | if (INTEL_INFO(dev)->gen <= 7 && !IS_HASWELL(dev)) | 494 | goto out_disable; |
496 | enable_fbc = 0; | ||
497 | } | 495 | } |
498 | if (!enable_fbc) { | 496 | if (!i915_enable_fbc) { |
499 | DRM_DEBUG_KMS("fbc disabled per module param\n"); | 497 | DRM_DEBUG_KMS("fbc disabled per module param\n"); |
500 | dev_priv->no_fbc_reason = FBC_MODULE_PARAM; | 498 | dev_priv->no_fbc_reason = FBC_MODULE_PARAM; |
501 | goto out_disable; | 499 | goto out_disable; |