drm/i915: kill fbc.uncompressed_size
authorPaulo Zanoni <paulo.r.zanoni@intel.com>
Mon, 26 Oct 2015 20:44:25 +0000 (18:44 -0200)
committerPaulo Zanoni <paulo.r.zanoni@intel.com>
Thu, 3 Dec 2015 13:36:42 +0000 (11:36 -0200)
Directly call intel_fbc_calculate_cfb_size() in the only place that
actually needs it, and use the proper check before removing the stolen
node. IMHO, this change makes our code easier to understand.

v2: Use drm_mm_node_allocated() (Chris).

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/intel_fbc.c

index fff165a..5e276f5 100644 (file)
@@ -902,7 +902,6 @@ struct i915_fbc {
        /* This is always the inner lock when overlapping with struct_mutex and
         * it's the outer lock when overlapping with stolen_lock. */
        struct mutex lock;
-       unsigned long uncompressed_size;
        unsigned threshold;
        unsigned int fb_id;
        unsigned int possible_framebuffer_bits;
index 07d3342..0ad9585 100644 (file)
@@ -144,7 +144,7 @@ static void i8xx_fbc_activate(struct intel_crtc *crtc)
        dev_priv->fbc.active = true;
 
        /* Note: fbc.threshold == 1 for i8xx */
-       cfb_pitch = dev_priv->fbc.uncompressed_size / FBC_LL_SIZE;
+       cfb_pitch = intel_fbc_calculate_cfb_size(crtc, fb) / FBC_LL_SIZE;
        if (fb->pitches[0] < cfb_pitch)
                cfb_pitch = fb->pitches[0];
 
@@ -638,8 +638,6 @@ static int intel_fbc_alloc_cfb(struct intel_crtc *crtc)
                           dev_priv->mm.stolen_base + compressed_llb->start);
        }
 
-       dev_priv->fbc.uncompressed_size = size;
-
        DRM_DEBUG_KMS("reserved %llu bytes of contiguous stolen space for FBC, threshold: %d\n",
                      dev_priv->fbc.compressed_fb.size,
                      dev_priv->fbc.threshold);
@@ -656,18 +654,15 @@ err_llb:
 
 static void __intel_fbc_cleanup_cfb(struct drm_i915_private *dev_priv)
 {
-       if (dev_priv->fbc.uncompressed_size == 0)
-               return;
-
-       i915_gem_stolen_remove_node(dev_priv, &dev_priv->fbc.compressed_fb);
+       if (drm_mm_node_allocated(&dev_priv->fbc.compressed_fb))
+               i915_gem_stolen_remove_node(dev_priv,
+                                           &dev_priv->fbc.compressed_fb);
 
        if (dev_priv->fbc.compressed_llb) {
                i915_gem_stolen_remove_node(dev_priv,
                                            dev_priv->fbc.compressed_llb);
                kfree(dev_priv->fbc.compressed_llb);
        }
-
-       dev_priv->fbc.uncompressed_size = 0;
 }
 
 void intel_fbc_cleanup_cfb(struct drm_i915_private *dev_priv)