drm/i915: kill fbc.uncompressed_size

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/
This commit is contained in:
Paulo Zanoni 2015-10-26 18:44:25 -02:00
Родитель 128d735606
Коммит 559d913583
2 изменённых файлов: 4 добавлений и 10 удалений

Просмотреть файл

@ -902,7 +902,6 @@ struct i915_fbc {
/* This is always the inner lock when overlapping with struct_mutex and /* This is always the inner lock when overlapping with struct_mutex and
* it's the outer lock when overlapping with stolen_lock. */ * it's the outer lock when overlapping with stolen_lock. */
struct mutex lock; struct mutex lock;
unsigned long uncompressed_size;
unsigned threshold; unsigned threshold;
unsigned int fb_id; unsigned int fb_id;
unsigned int possible_framebuffer_bits; unsigned int possible_framebuffer_bits;

Просмотреть файл

@ -144,7 +144,7 @@ static void i8xx_fbc_activate(struct intel_crtc *crtc)
dev_priv->fbc.active = true; dev_priv->fbc.active = true;
/* Note: fbc.threshold == 1 for i8xx */ /* 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) if (fb->pitches[0] < cfb_pitch)
cfb_pitch = fb->pitches[0]; 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->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", DRM_DEBUG_KMS("reserved %llu bytes of contiguous stolen space for FBC, threshold: %d\n",
dev_priv->fbc.compressed_fb.size, dev_priv->fbc.compressed_fb.size,
dev_priv->fbc.threshold); dev_priv->fbc.threshold);
@ -656,18 +654,15 @@ err_llb:
static void __intel_fbc_cleanup_cfb(struct drm_i915_private *dev_priv) static void __intel_fbc_cleanup_cfb(struct drm_i915_private *dev_priv)
{ {
if (dev_priv->fbc.uncompressed_size == 0) if (drm_mm_node_allocated(&dev_priv->fbc.compressed_fb))
return; i915_gem_stolen_remove_node(dev_priv,
&dev_priv->fbc.compressed_fb);
i915_gem_stolen_remove_node(dev_priv, &dev_priv->fbc.compressed_fb);
if (dev_priv->fbc.compressed_llb) { if (dev_priv->fbc.compressed_llb) {
i915_gem_stolen_remove_node(dev_priv, i915_gem_stolen_remove_node(dev_priv,
dev_priv->fbc.compressed_llb); dev_priv->fbc.compressed_llb);
kfree(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) void intel_fbc_cleanup_cfb(struct drm_i915_private *dev_priv)