[Intel-gfx] [PATCH 2/3] drm/i915: Consolidate L3 remapping LRI
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Tue Apr 19 10:21:38 UTC 2016
On 19/04/16 11:07, Chris Wilson wrote:
> We can use a single MI_LOAD_REGISTER_IMM command packet to write all the
> L3 remapping registers, shrinking the number of bytes required to emit
> the context switch.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/i915_gem_context.c | 16 +++++++---------
> 1 file changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
> index 68232d384902..b47ed8b6f4be 100644
> --- a/drivers/gpu/drm/i915/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/i915_gem_context.c
> @@ -645,16 +645,14 @@ mi_set_context(struct drm_i915_gem_request *req, u32 hw_flags)
>
> int i915_gem_l3_remap(struct drm_i915_gem_request *req, int slice)
> {
> + u32 *remap_info = req->i915->l3_parity.remap_info[slice];
> struct intel_engine_cs *engine = req->engine;
> - struct drm_device *dev = engine->dev;
> - struct drm_i915_private *dev_priv = dev->dev_private;
> - u32 *remap_info = dev_priv->l3_parity.remap_info[slice];
> int i, ret;
>
> - if (!HAS_L3_DPF(dev) || !remap_info)
> + if (!remap_info)
> return 0;
>
> - ret = intel_ring_begin(req, GEN7_L3LOG_SIZE / 4 * 3);
> + ret = intel_ring_begin(req, GEN7_L3LOG_SIZE/4 * 2 + 2);
> if (ret)
> return ret;
>
> @@ -663,15 +661,15 @@ int i915_gem_l3_remap(struct drm_i915_gem_request *req, int slice)
> * here because no other code should access these registers other than
> * at initialization time.
> */
> - for (i = 0; i < GEN7_L3LOG_SIZE / 4; i++) {
> - intel_ring_emit(engine, MI_LOAD_REGISTER_IMM(1));
> + intel_ring_emit(engine, MI_LOAD_REGISTER_IMM(GEN7_L3LOG_SIZE/4));
> + for (i = 0; i < GEN7_L3LOG_SIZE/4; i++) {
> intel_ring_emit_reg(engine, GEN7_L3LOG(slice, i));
> intel_ring_emit(engine, remap_info[i]);
> }
> -
> + intel_ring_emit(engine, MI_NOOP);
> intel_ring_advance(engine);
>
> - return ret;
> + return 0;
> }
>
> static inline bool skip_rcs_switch(struct intel_engine_cs *engine,
>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Regards,
Tvrtko
More information about the Intel-gfx
mailing list