[Intel-gfx] [PATCH 079/190] drm/i915: Reduce the pointer dance of i915_is_ggtt()
Dave Gordon
david.s.gordon at intel.com
Fri Jan 15 04:12:15 PST 2016
On 11/01/16 09:17, Chris Wilson wrote:
> The multiple levels of indirect do nothing but hinder the compiler and
> the pointer chasing turns to be quite painful but painless to fix.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/i915_debugfs.c | 13 ++++++-------
> drivers/gpu/drm/i915/i915_drv.h | 7 -------
> drivers/gpu/drm/i915/i915_gem.c | 18 +++++++-----------
> drivers/gpu/drm/i915/i915_gem_execbuffer.c | 5 ++---
> drivers/gpu/drm/i915/i915_gem_gtt.c | 12 +++++-------
> drivers/gpu/drm/i915/i915_gem_gtt.h | 5 +++++
> drivers/gpu/drm/i915/i915_trace.h | 27 ++++++++-------------------
> 7 files changed, 33 insertions(+), 54 deletions(-)
[snip]
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index c9c1a5cdc1e5..f840cc55f1ab 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2905,18 +2905,11 @@ bool i915_gem_obj_is_pinned(struct drm_i915_gem_object *obj);
> /* Some GGTT VM helpers */
> #define i915_obj_to_ggtt(obj) \
> (&((struct drm_i915_private *)(obj)->base.dev->dev_private)->gtt.base)
> -static inline bool i915_is_ggtt(struct i915_address_space *vm)
> -{
> - struct i915_address_space *ggtt =
> - &((struct drm_i915_private *)(vm)->dev->dev_private)->gtt.base;
> - return vm == ggtt;
> -}
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index b5c3bbe6dc2a..06117bd0fc00 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -3150,6 +3150,7 @@ int i915_gem_gtt_init(struct drm_device *dev)
> }
>
> gtt->base.dev = dev;
> + gtt->base.is_ggtt = true;
So, it looks like the plan here is that when we need to determine
whether something is the special distinguished instance of a type, then
instead of comparing its address against the global pointer to the
distinguished instance, we'll just look for a flag /inside/ the object
itself, which is set /only/ on the distinguished instance.
Now why didn't I think of that? That looks like such a good idea, we
should apply it in other CONTEXTs!
Reviewed-by: Dave Gordon <david.s.gordon at intel.com>
More information about the Intel-gfx
mailing list