drm/i915/fbc: extract intel_fbc_can_enable()
authorPaulo Zanoni <paulo.r.zanoni@intel.com>
Tue, 19 Jan 2016 13:35:36 +0000 (11:35 -0200)
committerPaulo Zanoni <paulo.r.zanoni@intel.com>
Fri, 29 Jan 2016 20:08:25 +0000 (18:08 -0200)
Make our enable/activate checking model more explicit, especially
since we now have intel_fbc_can_activate().

Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1453210558-7875-4-git-send-email-paulo.r.zanoni@intel.com
drivers/gpu/drm/i915/intel_fbc.c

index 1440bb3..f76b158 100644 (file)
@@ -828,6 +828,33 @@ static bool intel_fbc_can_activate(struct intel_crtc *crtc)
        return true;
 }
 
+static bool intel_fbc_can_enable(struct intel_crtc *crtc)
+{
+       struct drm_i915_private *dev_priv = crtc->base.dev->dev_private;
+
+       if (intel_vgpu_active(dev_priv->dev)) {
+               set_no_fbc_reason(dev_priv, "VGPU is active");
+               return false;
+       }
+
+       if (i915.enable_fbc < 0) {
+               set_no_fbc_reason(dev_priv, "disabled per chip default");
+               return false;
+       }
+
+       if (!i915.enable_fbc) {
+               set_no_fbc_reason(dev_priv, "disabled per module param");
+               return false;
+       }
+
+       if (!crtc_can_fbc(crtc)) {
+               set_no_fbc_reason(dev_priv, "no enabled pipes can have FBC");
+               return false;
+       }
+
+       return true;
+}
+
 /**
  * __intel_fbc_update - activate/deactivate FBC as needed, unlocked
  * @crtc: the CRTC that triggered the update
@@ -997,25 +1024,8 @@ void intel_fbc_enable(struct intel_crtc *crtc)
        WARN_ON(dev_priv->fbc.active);
        WARN_ON(dev_priv->fbc.crtc != NULL);
 
-       if (intel_vgpu_active(dev_priv->dev)) {
-               set_no_fbc_reason(dev_priv, "VGPU is active");
-               goto out;
-       }
-
-       if (i915.enable_fbc < 0) {
-               set_no_fbc_reason(dev_priv, "disabled per chip default");
-               goto out;
-       }
-
-       if (!i915.enable_fbc) {
-               set_no_fbc_reason(dev_priv, "disabled per module param");
+       if (!intel_fbc_can_enable(crtc))
                goto out;
-       }
-
-       if (!crtc_can_fbc(crtc)) {
-               set_no_fbc_reason(dev_priv, "no enabled pipes can have FBC");
-               goto out;
-       }
 
        if (intel_fbc_alloc_cfb(crtc)) {
                set_no_fbc_reason(dev_priv, "not enough stolen memory");