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