[Intel-gfx] [PATCH 2/4] drm/i915: Extract CFB threshold calculation

Rodrigo Vivi rodrigo.vivi at gmail.com
Tue Jul 1 02:16:15 CEST 2014


Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>


On Thu, Jun 19, 2014 at 12:06 PM, Ben Widawsky <benjamin.widawsky at intel.com>
wrote:

> Right now, there is no threshold (0 means fail, 1 means 1:1 compression
> limit). This is to split the function/non-functional change of the next
> patch.
>
> The next patch will start to attempt to reduce the amount of CFB space
> we need for dire situations. It will be contained within this function.
>
> Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
> ---
>  drivers/gpu/drm/i915/i915_gem_stolen.c | 26 ++++++++++++++++++++------
>  1 file changed, 20 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c
> b/drivers/gpu/drm/i915/i915_gem_stolen.c
> index 642fd36..a86b331 100644
> --- a/drivers/gpu/drm/i915/i915_gem_stolen.c
> +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
> @@ -103,22 +103,36 @@ static unsigned long i915_stolen_to_physical(struct
> drm_device *dev)
>         return base;
>  }
>
> -static int i915_setup_compression(struct drm_device *dev, int size)
> +static int find_compression_threshold(struct drm_device *dev,
> +                                     struct drm_mm_node *node,
> +                                     int size)
>  {
>         struct drm_i915_private *dev_priv = dev->dev_private;
> -       struct drm_mm_node *uninitialized_var(compressed_llb);
> +       const int compression_threshold = 1;
>         int ret;
>
>         /* Try to over-allocate to reduce reallocations and fragmentation
> */
> -       ret = drm_mm_insert_node(&dev_priv->mm.stolen,
> -                                &dev_priv->fbc.compressed_fb,
> +       ret = drm_mm_insert_node(&dev_priv->mm.stolen, node,
>                                  size <<= 1, 4096, DRM_MM_SEARCH_DEFAULT);
>         if (ret)
> -               ret = drm_mm_insert_node(&dev_priv->mm.stolen,
> -                                        &dev_priv->fbc.compressed_fb,
> +               ret = drm_mm_insert_node(&dev_priv->mm.stolen, node,
>                                          size >>= 1, 4096,
>                                          DRM_MM_SEARCH_DEFAULT);
>         if (ret)
> +               return 0;
> +       else
> +               return compression_threshold;
> +}
> +
> +static int i915_setup_compression(struct drm_device *dev, int size)
> +{
> +       struct drm_i915_private *dev_priv = dev->dev_private;
> +       struct drm_mm_node *uninitialized_var(compressed_llb);
> +       int ret;
> +
> +       ret = find_compression_threshold(dev, &dev_priv->fbc.compressed_fb,
> +                                        size);
> +       if (!ret)
>                 goto err_llb;
>
>         if (HAS_PCH_SPLIT(dev))
> --
> 2.0.0
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
>



-- 
Rodrigo Vivi
Blog: http://blog.vivi.eng.br
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20140630/193967ec/attachment.html>


More information about the Intel-gfx mailing list