Worth trying just:
diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c index 637137e..dc80de3 100644 --- a/src/sna/gen4_render.c +++ b/src/sna/gen4_render.c @@ -660,9 +660,11 @@ inline static int gen4_get_rectangles(struct sna *sna, if (rem <= 0) { if (sna->render.vertex_offset) { gen4_vertex_flush(sna); - if (gen4_magic_ca_pass(sna, op)) + if (gen4_magic_ca_pass(sna, op)) { + OUT_BATCH(MI_FLUSH | MI_INHIBIT_RENDER_CACHE_FLUSH); gen4_emit_pipelined_pointers(sna, op, op->op, op->u.gen4.wm_kernel); + } } OUT_BATCH(MI_FLUSH | MI_INHIBIT_RENDER_CACHE_FLUSH); rem = MAX_FLUSH_VERTICES;
if you are happy that it reproduces reliably.
Worth trying just:
diff --git a/src/sna/ gen4_render. c b/src/sna/ gen4_render. c gen4_render. c gen4_render. c rectangles( struct sna *sna,
if (sna->render. vertex_ offset) {
gen4_ vertex_ flush(sna) ; ca_pass( sna, op)) ca_pass( sna, op)) { RENDER_ CACHE_FLUSH) ;
gen4_ emit_pipelined_ pointers( sna, op, op->op,
op- >u.gen4. wm_kernel) ;
}
OUT_ BATCH(MI_ FLUSH | MI_INHIBIT_ RENDER_ CACHE_FLUSH) ;
rem = MAX_FLUSH_VERTICES;
index 637137e..dc80de3 100644
--- a/src/sna/
+++ b/src/sna/
@@ -660,9 +660,11 @@ inline static int gen4_get_
if (rem <= 0) {
- if (gen4_magic_
+ if (gen4_magic_
+ OUT_BATCH(MI_FLUSH | MI_INHIBIT_
+ }
if you are happy that it reproduces reliably.