drm/i915: Fix the flip synchronisation to consider mmioflips
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 7 Apr 2015 15:20:26 +0000 (16:20 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 10 Apr 2015 06:56:00 +0000 (08:56 +0200)
commitcf5d8a46a001c9421c7397699db55f962e0410fc
treeb3b6af7255f8b7285959d15105f48657078cf600
parentee286370d6233da01788c942c2dd7e450078eb27
drm/i915: Fix the flip synchronisation to consider mmioflips

Currently we emit semaphore synchronisation as if we were going to flip
using the target CS engine, but we then change our minds and do the flip
using the CPU. Consequently we write instructions to the ring but never
use them - even to the point of filling that ring up entirely and never
submitting a request.

The wrinkle in the ointment is that we have to tell a white lie to
pin-to-display for it to skip the synchronisation for mmioflips as we
will create a task specifically for that slow synchronisation. An oddity
of note is the discrepancy in requests that we tell to pin-display to
serialise to and that we then eventually wait upon. This is due to a
limitation in the i915_gem_object_sync() routine that will be lifted
later.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_display.c