xf86-video-intel: 2 commits - src/sna/gen7_render.c src/sna/sna_display_fake.c src/sna/sna_driver.c src/sna/sna.h

Chris Wilson ickle at kemper.freedesktop.org
Thu Nov 21 02:08:59 PST 2013


 src/sna/gen7_render.c      |   15 +++++++++------
 src/sna/sna.h              |    3 +++
 src/sna/sna_display_fake.c |    3 +++
 src/sna/sna_driver.c       |    4 +---
 4 files changed, 16 insertions(+), 9 deletions(-)

New commits:
commit 7d9edc9a717cfc6fbdbe468f7e32a68ac674a207
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Nov 20 18:50:40 2013 +0000

    sna: Set supported rotations on virtual outputs
    
    As the virtual outputs are created later, they do not get automatically
    populated with RR properties and we must do that instantiation
    ourselves.
    
    Reported-by: Kirill Müller <mail at kirill-mueller.de>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71846
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna.h b/src/sna/sna.h
index f26c827..6474d11 100644
--- a/src/sna/sna.h
+++ b/src/sna/sna.h
@@ -1020,4 +1020,7 @@ static inline void sigtrap_put(void)
 	--sigtrap;
 }
 
+#define RR_Rotate_All (RR_Rotate_0 | RR_Rotate_90 | RR_Rotate_180 | RR_Rotate_270)
+#define RR_Reflect_All (RR_Reflect_X | RR_Reflect_Y)
+
 #endif /* _SNA_H */
diff --git a/src/sna/sna_display_fake.c b/src/sna/sna_display_fake.c
index fd1419b..29426b7 100644
--- a/src/sna/sna_display_fake.c
+++ b/src/sna/sna_display_fake.c
@@ -299,6 +299,9 @@ static bool add_fake_output(struct sna *sna, bool late)
 			    !RROutputSetClones(output->randr_output, clones, j))
 				goto err;
 		}
+
+		RRCrtcSetRotations(crtc->randr_crtc,
+				   RR_Rotate_All | RR_Reflect_All);
 	} else {
 		mask = (1 << ++sna->mode.num_fake) - 1;
 		output->possible_crtcs = mask << sna->mode.num_real_crtc;
diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index 805ae05..1832cd8 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -1037,9 +1037,7 @@ sna_screen_init(SCREEN_INIT_ARGS_DECL)
 	if (!xf86CrtcScreenInit(screen))
 		return FALSE;
 
-	xf86RandR12SetRotations(screen,
-				RR_Rotate_0 | RR_Rotate_90 | RR_Rotate_180 | RR_Rotate_270 |
-				RR_Reflect_X | RR_Reflect_Y);
+	xf86RandR12SetRotations(screen, RR_Rotate_All | RR_Reflect_All);
 	xf86RandR12SetTransformSupport(screen, TRUE);
 
 	if (!miCreateDefColormap(screen))
commit c79cb18407273dc7798618390bd0b7d69b0f80d6
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Nov 20 11:17:20 2013 +0000

    sna/gen7: Try to reduce flushes between primitive continuations
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index bd37ced..72861cc 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -1105,17 +1105,20 @@ gen7_emit_state(struct sna *sna,
 
 	assert(op->dst.bo->exec);
 
-	need_invalidate = kgem_bo_is_dirty(op->src.bo) || kgem_bo_is_dirty(op->mask.bo);
-	if (ALWAYS_INVALIDATE)
-		need_invalidate = true;
-
-	need_flush = wm_binding_table & 1 || sna->render_state.gen7.emit_flush;
+	need_flush = wm_binding_table & 1 ||
+		(sna->render_state.gen7.emit_flush && GEN7_READS_DST(op->u.gen7.flags));
 	if (ALWAYS_FLUSH)
 		need_flush = true;
 
 	wm_binding_table &= ~1;
 
 	need_stall = sna->render_state.gen7.surface_table != wm_binding_table;
+
+	need_invalidate = need_stall &&
+		(kgem_bo_is_dirty(op->src.bo) || kgem_bo_is_dirty(op->mask.bo));
+	if (ALWAYS_INVALIDATE)
+		need_invalidate = true;
+
 	need_stall &= gen7_emit_drawing_rectangle(sna, op);
 	if (ALWAYS_STALL)
 		need_stall = true;
@@ -3750,7 +3753,7 @@ static void gen7_render_reset(struct sna *sna)
 	sna->render_state.gen7.kernel = -1;
 	sna->render_state.gen7.drawrect_offset = -1;
 	sna->render_state.gen7.drawrect_limit = -1;
-	sna->render_state.gen7.surface_table = -1;
+	sna->render_state.gen7.surface_table = 0;
 
 	if (sna->render.vbo && !kgem_bo_can_map(&sna->kgem, sna->render.vbo)) {
 		DBG(("%s: discarding unmappable vbo\n", __FUNCTION__));


More information about the xorg-commit mailing list