IvyBridge has the ability to pageflip from either the Render or Blitter rings. Scheduling the pageflip on the active ring (if the new scanout is being rendered on either pipeline) saves inserting a semaphore (if available) and forcing a stall on both pipelines. We presume that the current scanout is inactive.
Signed-off-by: Chris Wilson <[email protected]> --- drivers/gpu/drm/i915/intel_display.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 984834a..ead2822 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -7908,9 +7908,13 @@ static int intel_gen7_queue_flip(struct drm_device *dev, { struct drm_i915_private *dev_priv = dev->dev_private; struct intel_crtc *intel_crtc = to_intel_crtc(crtc); - struct intel_ring_buffer *ring = &dev_priv->ring[BCS]; + struct intel_ring_buffer *ring; int ret; + ring = obj->ring; + if (ring == NULL || ring == &dev_priv->ring[RCS]) + ring = &dev_priv->ring[BCS]; + ret = intel_pin_and_fence_fb_obj(dev, obj, ring); if (ret) goto out; -- 1.7.10 _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
