drm/i915: Record the position of the workarounds in the tail of the request
Rather than blindly assuming we need to advance the tail for resubmitting the request via the ELSP, record the position. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/20160909131201.16673-3-chris@chris-wilson.co.uk
このコミットが含まれているのは:
@@ -482,8 +482,7 @@ static void execlists_unqueue(struct intel_engine_cs *engine)
|
||||
* resubmit the request. See gen8_emit_request() for where we
|
||||
* prepare the padding after the end of the request.
|
||||
*/
|
||||
req0->tail += 8;
|
||||
req0->tail &= req0->ring->size - 1;
|
||||
req0->tail = req0->wa_tail;
|
||||
}
|
||||
|
||||
execlists_elsp_submit_contexts(req0, req1);
|
||||
@@ -711,6 +710,7 @@ intel_logical_ring_advance(struct drm_i915_gem_request *request)
|
||||
intel_ring_emit(ring, MI_NOOP);
|
||||
intel_ring_emit(ring, MI_NOOP);
|
||||
intel_ring_advance(ring);
|
||||
request->wa_tail = ring->tail;
|
||||
|
||||
/* We keep the previous context alive until we retire the following
|
||||
* request. This ensures that any the context object is still pinned
|
||||
|
新しいイシューから参照
ユーザーをブロックする