提交 d94b5030 编写于 作者: C Chris Wilson 提交者: Daniel Vetter

drm/i915: Ensure cache flushes prior to doing CS flips

Synchronising to an object active on the same ring is a no-op, for the
benefit of execbuffer scheduler. However, for CS flips this means that
we can forgo checking whether the last write request of the object is
actually queued and more importantly whether the cache flush for the
write was emitted.
Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
上级 2e2f351d
...@@ -11040,6 +11040,12 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, ...@@ -11040,6 +11040,12 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
i915_gem_request_assign(&work->flip_queued_req, i915_gem_request_assign(&work->flip_queued_req,
obj->last_write_req); obj->last_write_req);
} else { } else {
if (obj->last_write_req) {
ret = i915_gem_check_olr(obj->last_write_req);
if (ret)
goto cleanup_unpin;
}
ret = dev_priv->display.queue_flip(dev, crtc, fb, obj, ring, ret = dev_priv->display.queue_flip(dev, crtc, fb, obj, ring,
page_flip_flags); page_flip_flags);
if (ret) if (ret)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册