[Intel-gfx] [PATCH] drm/i915: Move golden context init into ->init_context

Dave Gordon david.s.gordon at intel.com
Mon Dec 8 05:51:01 PST 2014


On 02/12/14 15:19, Daniel Vetter wrote:
> Similar to a patch from Thomas Daniel for lrc contexts. This keeps
> both sides somewhat in sync and should make Dave Gordon happy.
> 
> Note that both the wa and the golden context init code suffer a bit
> from an inssuficient split into driver load and hw init code. Which
> means we have a bunch of tests all over the place to check whether the
> one-time initialization has been done already or not.
> 
> All that one-tim code should be moved into the one-time ring setup
> code, but that's work for later.
> 
> Cc: Dave Gordon <david.s.gordon at intel.com>
> Cc: Thomas Daniel <thomas.daniel at intel.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
> ---
>  drivers/gpu/drm/i915/i915_gem_context.c |  4 ----
>  drivers/gpu/drm/i915/intel_ringbuffer.c | 18 +++++++++++++++++-
>  2 files changed, 17 insertions(+), 5 deletions(-)

LGTM :)
Reviewed-by: Dave Gordon <david.s.gordon at intel.com>

> diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
> index 5cd2b97aa76e..2acf5803cf32 100644
> --- a/drivers/gpu/drm/i915/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/i915_gem_context.c
> @@ -651,10 +651,6 @@ done:
>  			if (ret)
>  				DRM_ERROR("ring init context: %d\n", ret);
>  		}
> -
> -		ret = i915_gem_render_state_init(ring);
> -		if (ret)
> -			DRM_ERROR("init render state: %d\n", ret);
>  	}
>  
>  	return 0;
> diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
> index 79b4ca5dc65f..79fe3d0a6442 100644
> --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
> +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
> @@ -710,6 +710,22 @@ static int intel_ring_workarounds_emit(struct intel_engine_cs *ring,
>  	return 0;
>  }
>  
> +static int intel_rcs_ctx_init(struct intel_engine_cs *ring,
> +			      struct intel_context *ctx)
> +{
> +	int ret;
> +
> +	ret = intel_ring_workarounds_emit(ring, ctx);
> +	if (ret != 0)
> +		return ret;
> +
> +	ret = i915_gem_render_state_init(ring);
> +	if (ret)
> +		DRM_ERROR("init render state: %d\n", ret);
> +
> +	return ret;
> +}
> +
>  static int wa_add(struct drm_i915_private *dev_priv,
>  		  const u32 addr, const u32 val, const u32 mask)
>  {
> @@ -2341,7 +2357,7 @@ int intel_init_render_ring_buffer(struct drm_device *dev)
>  			}
>  		}
>  
> -		ring->init_context = intel_ring_workarounds_emit;
> +		ring->init_context = intel_rcs_ctx_init;
>  		ring->add_request = gen6_add_request;
>  		ring->flush = gen8_render_ring_flush;
>  		ring->irq_get = gen8_ring_get_irq;
> 



More information about the Intel-gfx mailing list