[Intel-gfx] [PATCH] drm/i915: Move the context descriptor to an inline helper

Oscar Mateo oscar.mateo at intel.com
Tue Sep 12 22:50:08 UTC 2017



On 09/12/2017 02:49 PM, Chris Wilson wrote:
> The context descriptor is stored inside the per-engine context state, as
> we only need to compute it once and access it frequently. However,
> currently only intel_lrc.c has easy access, but i915_guc_submission.c
> would like to frequently read it as well, and more so only ever needs
> the lower 32bits. Make it an inline as the compiler should be able to
> retrieve the value in less instructions than it takes to do the function
> call:
>
> add/remove: 0/1 grow/shrink: 1/0 up/down: 8/-45 (-37)
> function                                     old     new   delta
> i915_guc_submit                              621     629      +8
> intel_lr_context_descriptor                   45       -     -45
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
>   drivers/gpu/drm/i915/intel_lrc.c |  6 ------
>   drivers/gpu/drm/i915/intel_lrc.h | 11 +++++++++--
>   2 files changed, 9 insertions(+), 8 deletions(-)

Reviewed-by: Oscar Mateo <oscar.mateo at intel.com>

> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index 5837b33f9705..7457783ed182 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -286,12 +286,6 @@ intel_lr_context_descriptor_update(struct i915_gem_context *ctx,
>   	ce->lrc_desc = desc;
>   }
>   
> -uint64_t intel_lr_context_descriptor(struct i915_gem_context *ctx,
> -				     struct intel_engine_cs *engine)
> -{
> -	return ctx->engine[engine->id].lrc_desc;
> -}
> -
>   static inline void
>   execlists_context_status_change(struct drm_i915_gem_request *rq,
>   				unsigned long status)
> diff --git a/drivers/gpu/drm/i915/intel_lrc.h b/drivers/gpu/drm/i915/intel_lrc.h
> index 57ef5833c427..3b1de327e504 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.h
> +++ b/drivers/gpu/drm/i915/intel_lrc.h
> @@ -25,6 +25,7 @@
>   #define _INTEL_LRC_H_
>   
>   #include "intel_ringbuffer.h"
> +#include "i915_gem_context.h"
>   
>   #define GEN8_LR_CONTEXT_ALIGN I915_GTT_MIN_ALIGNMENT
>   
> @@ -78,8 +79,14 @@ struct drm_i915_private;
>   struct i915_gem_context;
>   
>   void intel_lr_context_resume(struct drm_i915_private *dev_priv);
> -uint64_t intel_lr_context_descriptor(struct i915_gem_context *ctx,
> -				     struct intel_engine_cs *engine);
> +
> +static inline uint64_t
> +intel_lr_context_descriptor(struct i915_gem_context *ctx,
> +			    struct intel_engine_cs *engine)
> +{
> +	return ctx->engine[engine->id].lrc_desc;
> +}
> +
>   
>   /* Execlists */
>   int intel_sanitize_enable_execlists(struct drm_i915_private *dev_priv,



More information about the Intel-gfx mailing list