[PATCH 9/9] dbl-flush
Chris Wilson
chris at chris-wilson.co.uk
Thu Dec 6 12:04:12 UTC 2018
---
drivers/gpu/drm/i915/intel_lrc.c | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index e6a86fa4502d..616d3d568bfb 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -1939,10 +1939,7 @@ static void gen8_logical_ring_disable_irq(struct intel_engine_cs *engine)
static int gen8_emit_flush(struct i915_request *request, u32 mode)
{
u32 cmd, *cs;
-
- cs = intel_ring_begin(request, 4);
- if (IS_ERR(cs))
- return PTR_ERR(cs);
+ int repeat = 1;
cmd = MI_FLUSH_DW + 1;
@@ -1959,10 +1956,20 @@ static int gen8_emit_flush(struct i915_request *request, u32 mode)
cmd |= MI_INVALIDATE_BSD;
}
- *cs++ = cmd;
- *cs++ = I915_GEM_HWS_SCRATCH_ADDR | MI_FLUSH_DW_USE_GTT;
- *cs++ = 0; /* upper addr */
- *cs++ = 0; /* value */
+ if (mode & EMIT_FLUSH)
+ repeat = 8;
+
+ cs = intel_ring_begin(request, 4 * repeat);
+ if (IS_ERR(cs))
+ return PTR_ERR(cs);
+
+ for (i = 0; i < repeat; i++) {
+ *cs++ = cmd;
+ *cs++ = I915_GEM_HWS_SCRATCH_ADDR | MI_FLUSH_DW_USE_GTT;
+ *cs++ = 0; /* upper addr */
+ *cs++ = 0; /* value */
+ }
+
intel_ring_advance(request, cs);
return 0;
--
2.20.0.rc2
More information about the Intel-gfx-trybot
mailing list