Chris Wilson caa5915bb3 drm/i915/ringbuffer: Pull the render flush into breadcrumb emission
In preparation for removing the manual EMIT_FLUSH prior to emitting the
breadcrumb implement the flush inline with writing the breadcrumb for
ringbuffer emission.

With a combined flush+breadcrumb, we can use a single operation to both
flush and after the flush is complete (post-sync) write the breadcrumb.
This gives us a strongly ordered operation that should be sufficient to
serialise the write before we emit the interrupt; and therefore we may
take the opportunity to remove the irq_seqno_barrier w/a for gen6+.
Although using the PIPECONTROL to write the breadcrumb is slower than
MI_STORE_DWORD_IMM, by combining the operations into one and removing the
extra flush (next patch) it is faster

For gen2-5, we simply combine the MI_FLUSH into the breadcrumb emission,
though maybe we could find a solution here to the seqno-vs-interrupt
issue on Ironlake by mixing up the flush? The answer is no, adding an
MI_FLUSH before the interrupt is insufficient.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181228153114.4948-2-chris@chris-wilson.co.uk
2018-12-28 16:36:57 +00:00
..
2018-11-18 12:21:09 -08:00
2018-11-01 18:34:46 -07:00
2018-11-16 09:31:59 -06:00
2018-10-29 15:16:01 -07:00
2018-10-27 09:24:24 -07:00
2018-10-25 06:50:48 -07:00
2018-10-16 11:13:50 +02:00
2018-10-25 06:50:48 -07:00
2018-10-11 12:12:55 +02:00
2018-11-09 17:56:44 +01:00
2018-10-29 10:38:10 -07:00
2018-10-31 08:54:16 -07:00
2018-11-08 17:49:04 -06:00
2018-11-02 11:25:48 -07:00
2018-11-19 10:40:33 +10:00
2018-10-31 16:47:55 -07:00
2018-10-25 06:31:56 -07:00
2018-11-09 16:31:51 -06:00
2018-11-09 16:41:58 -06:00
2018-10-26 14:36:21 -07:00
2018-10-22 17:30:06 +01:00
2018-10-26 08:14:13 -07:00
2018-11-01 08:42:21 -07:00
2018-10-26 12:09:58 -07:00
2018-10-29 15:16:01 -07:00
2018-11-03 10:44:06 -07:00
2018-11-16 09:31:59 -06:00
2018-10-31 08:54:16 -07:00
2018-10-25 06:19:15 -07:00
2018-10-11 09:16:44 -07:00
2018-11-10 13:32:14 -06:00
2018-10-31 11:01:38 -07:00
2018-11-01 14:42:49 -07:00
2018-11-19 10:40:33 +10:00
2018-11-10 08:58:48 -06:00