[Intel-gfx] [PATCH] drm/i915: Inline feature detection into sanitize_enable_ppgtt

Daniel Vetter daniel at ffwll.ch
Fri Sep 19 17:58:19 CEST 2014


On Fri, Sep 19, 2014 at 11:56:27AM +0100, Chris Wilson wrote:
> Rather than splitting and hiding away critical parts of
> sanitize_enable_ppgtt() into single use macros in the headers, inline
> them into the function for clarity.
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
>  drivers/gpu/drm/i915/i915_drv.h     |  2 --
>  drivers/gpu/drm/i915/i915_gem_gtt.c | 14 +++++++++++---
>  2 files changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 07dafa2c2d8c..b1fa13942d14 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2139,8 +2139,6 @@ struct drm_i915_cmd_table {
>  
>  #define HAS_HW_CONTEXTS(dev)	(INTEL_INFO(dev)->gen >= 6)
>  #define HAS_LOGICAL_RING_CONTEXTS(dev)	(INTEL_INFO(dev)->gen >= 8)
> -#define HAS_ALIASING_PPGTT(dev)	(INTEL_INFO(dev)->gen >= 6)
> -#define HAS_PPGTT(dev)		(INTEL_INFO(dev)->gen >= 7 && !IS_GEN8(dev))
>  #define USES_PPGTT(dev)		(i915.enable_ppgtt)
>  #define USES_FULL_PPGTT(dev)	(i915.enable_ppgtt == 2)
>  
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index a234446a8678..90c9bf6e71b7 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -35,13 +35,21 @@ static void chv_setup_private_ppat(struct drm_i915_private *dev_priv);
>  
>  static int sanitize_enable_ppgtt(struct drm_device *dev, int enable_ppgtt)
>  {
> -	if (enable_ppgtt == 0 || !HAS_ALIASING_PPGTT(dev))
> +	bool has_aliasing_ppgtt;
> +	bool has_full_ppgtt;
> +
> +	has_aliasing_ppgtt = INTEL_INFO(dev)->gen >= 6;
> +	has_full_ppgtt = INTEL_INFO(dev)->gen >= 7;
> +	if (IS_GEN8(dev))
> +		has_full_ppgtt = false; /* XXX why? */

Becuase we've had a crazy mix of feature macros which also encoded
defaults. But now that's fixed, so we could replace this by a comment
saying that full ppgtt upsets the hw without execlist.

Queued for -next, thanks for the patch.
-Daniel

> +
> +	if (enable_ppgtt == 0 || !has_aliasing_ppgtt)
>  		return 0;
>  
>  	if (enable_ppgtt == 1)
>  		return 1;
>  
> -	if (enable_ppgtt == 2 && HAS_PPGTT(dev))
> +	if (enable_ppgtt == 2 && has_full_ppgtt)
>  		return 2;
>  
>  #ifdef CONFIG_INTEL_IOMMU
> @@ -59,7 +67,7 @@ static int sanitize_enable_ppgtt(struct drm_device *dev, int enable_ppgtt)
>  		return 0;
>  	}
>  
> -	return HAS_PPGTT(dev) ? 2 : HAS_ALIASING_PPGTT(dev) ? 1 : 0;
> +	return has_full_ppgtt ? 2 : has_aliasing_ppgtt ? 1 : 0;
>  }
>  
>  
> -- 
> 2.1.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch



More information about the Intel-gfx mailing list