drm/i915: Try harder to get FBC
authorBen Widawsky <benjamin.widawsky@intel.com>
Mon, 30 Jun 2014 17:41:24 +0000 (10:41 -0700)
committerJani Nikula <jani.nikula@intel.com>
Thu, 3 Jul 2014 08:27:57 +0000 (11:27 +0300)
commit5e59f7175f96550ede91f58d267d2b551cb6fbba
tree01c9a04c00264d19d077880a88d43ceffdbbc854
parentedc0fdbbf6d8e179a0b28b9fc7597cbadabe77a8
drm/i915: Try harder to get FBC

The GEN FBC unit provides the ability to set a low pass on frames it
attempts to compress. If a frame is less than a certain amount
compressibility (2:1, 4:1) it will not bother. This allows the driver to
reduce the size it requests out of stolen memory.

Unluckily, a few months ago, Ville actually began using this feature for
framebuffers that are 16bpp (not sure why not 8bpp). In those cases, we
are already using this mechanism for a different purpose, and so we can
only achieve one further level of compression (2:1 -> 4:1)

FBC GEN1, ie. pre-G45 is ignored.

The cleverness of the patch is Art's. The bugs are mine.

v2: Update message and including missing threshold case 3 (Spotted by Arthur).

Cc: Art Runyan <arthur.j.runyan@intel.com>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem_stolen.c
drivers/gpu/drm/i915/intel_pm.c