[Intel-gfx] [PATCH 4/6] drm/i915: Use to_i915() instead of guc_to_i915()

Chris Wilson chris at chris-wilson.co.uk
Tue Mar 22 11:04:36 UTC 2016


On Tue, Mar 22, 2016 at 10:55:40AM +0000, Dave Gordon wrote:
> On 18/03/16 21:16, Chris Wilson wrote:
> >-	for_each_engine(engine, dev_priv, i) {
> >+	for_each_engine(engine, guc, i) {
> 
> ... but not this (see earlier mail), although, the objection is less
> here because the GuC is singular and associated with all engines, so
> there isn't much else that we could expect to iterate over.
> 
> OTOH this may actually be less efficient, because the conversion of
> the "struct intel_guc" to the thing(s) actually needed for the
> iteration will (or at least may) occur on each iteration of the
> loop. Generally I'd prefer to pull all such conversions out to the
> head of the function, as the original code did.

It's an init func, the question is simply which is more readable.

> >  		struct guc_execlist_context *lrc = &desc.lrc[engine->guc_id];
> >  		struct drm_i915_gem_object *obj;
> >  		uint64_t ctx_desc;
> >@@ -772,7 +771,6 @@ err:
> >
> >  static void guc_create_log(struct intel_guc *guc)
> >  {
> >-	struct drm_i915_private *dev_priv = guc_to_i915(guc);
> >  	struct drm_i915_gem_object *obj;
> >  	unsigned long offset;
> >  	uint32_t size, flags;
> >@@ -791,7 +789,7 @@ static void guc_create_log(struct intel_guc *guc)
> >
> >  	obj = guc->log_obj;
> >  	if (!obj) {
> >-		obj = gem_allocate_guc_obj(dev_priv->dev, size);
> >+		obj = gem_allocate_guc_obj(to_i915(guc)->dev, size);
> 
> Should we have to_dev(any) as well as to_i915()?
> 
> >  		if (!obj) {
> >  			/* logging will be off */
> >  			i915.guc_log_level = -1;
> >@@ -835,7 +833,6 @@ static void init_guc_policies(struct guc_policies *policies)
> >
> >  static void guc_create_ads(struct intel_guc *guc)
> >  {
> >-	struct drm_i915_private *dev_priv = guc_to_i915(guc);
> 
> This dev_priv is used more than once (in fact, it's used in a
> for_each_engine() loop below), so I'd think it worth keeping -- and
> therefore none of the changes below would be applicable.

There's a later change to fix that since these functions are attrocious,
in terms of layering name and paramter abuse.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the Intel-gfx mailing list