Implement the note indicated in the bspec.

Signed-off-by: Ben Widawsky <b...@bwidawsk.net>
---
 drivers/gpu/drm/i915/i915_gem_context.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_gem_context.c 
b/drivers/gpu/drm/i915/i915_gem_context.c
index 2b0598e..bb84be8 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -659,6 +659,15 @@ static int do_switch(struct intel_ring_buffer *ring,
        if (!to->is_initialized || is_default_context(to))
                hw_flags |= MI_RESTORE_INHIBIT;
 
+       /* When SW intends to use semaphore signaling between Command streamers,
+        * it must avoid lite restores in HW by programming "Force Restore" bit
+        * to ‘1’ in context descriptor during context submission
+        *
+        * XXX: is this really needed for ringbuffer mode?
+        */
+       if (IS_GEN8(ring->dev) && i915_semaphore_is_enabled(ring->dev))
+               hw_flags |= MI_FORCE_RESTORE;
+
        ret = mi_set_context(ring, to, hw_flags);
        if (ret)
                goto unpin_out;
-- 
1.8.5.3

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to