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@xxxxxxxxx> > Cc: Thomas Daniel <thomas.daniel@xxxxxxxxx> > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> > --- > 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@xxxxxxxxx> > 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 Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx