To be used for a Workaroud. Similar to: commit 884ceacee308f0e4616d0c933518af2639f7b1d8 Author: Kenneth Graunke <kenneth@xxxxxxxxxxxxx> Date: Sat Jun 28 02:04:20 2014 +0300 drm/i915: Refactor Broadwell PIPE_CONTROL emission into a helper. Signed-off-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> --- drivers/gpu/drm/i915/intel_lrc.c | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c index 6025ac7..666c000 100644 --- a/drivers/gpu/drm/i915/intel_lrc.c +++ b/drivers/gpu/drm/i915/intel_lrc.c @@ -1126,6 +1126,26 @@ static int gen8_emit_flush(struct intel_ringbuffer *ringbuf, return 0; } +static int gen8_emit_pipe_control(struct intel_ringbuffer *ringbuf, + u32 flags, u32 scratch_addr) +{ + int ret; + + ret = intel_logical_ring_begin(ringbuf, 6); + if (ret) + return ret; + + intel_logical_ring_emit(ringbuf, GFX_OP_PIPE_CONTROL(6)); + intel_logical_ring_emit(ringbuf, flags); + intel_logical_ring_emit(ringbuf, scratch_addr); + intel_logical_ring_emit(ringbuf, 0); + intel_logical_ring_emit(ringbuf, 0); + intel_logical_ring_emit(ringbuf, 0); + intel_logical_ring_advance(ringbuf); + + return 0; +} + static int gen8_emit_flush_render(struct intel_ringbuffer *ringbuf, u32 invalidate_domains, u32 flush_domains) @@ -1133,7 +1153,6 @@ static int gen8_emit_flush_render(struct intel_ringbuffer *ringbuf, struct intel_engine_cs *ring = ringbuf->ring; u32 scratch_addr = ring->scratch.gtt_offset + 2 * CACHELINE_BYTES; u32 flags = 0; - int ret; flags |= PIPE_CONTROL_CS_STALL; @@ -1153,19 +1172,7 @@ static int gen8_emit_flush_render(struct intel_ringbuffer *ringbuf, flags |= PIPE_CONTROL_GLOBAL_GTT_IVB; } - ret = intel_logical_ring_begin(ringbuf, 6); - if (ret) - return ret; - - intel_logical_ring_emit(ringbuf, GFX_OP_PIPE_CONTROL(6)); - intel_logical_ring_emit(ringbuf, flags); - intel_logical_ring_emit(ringbuf, scratch_addr); - intel_logical_ring_emit(ringbuf, 0); - intel_logical_ring_emit(ringbuf, 0); - intel_logical_ring_emit(ringbuf, 0); - intel_logical_ring_advance(ringbuf); - - return 0; + return gen8_emit_pipe_control(ringbuf, flags, scratch_addr); } static u32 gen8_get_seqno(struct intel_engine_cs *ring, bool lazy_coherency) -- 1.9.3 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx