[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