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 <[email protected]>
> Cc: Thomas Daniel <[email protected]>
> Signed-off-by: Daniel Vetter <[email protected]>
> ---
>  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 <[email protected]>

> 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;
> 

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to