xf86-video-intel: src/sna/gen6_render.c src/sna/gen7_render.c src/sna/sna_dri.c src/sna/sna_render.h
Chris Wilson
ickle at kemper.freedesktop.org
Thu Jan 17 12:02:40 PST 2013
src/sna/gen6_render.c | 3 +++
src/sna/gen7_render.c | 3 +++
src/sna/sna_dri.c | 7 ++++++-
src/sna/sna_render.h | 1 +
4 files changed, 13 insertions(+), 1 deletion(-)
New commits:
commit 9f68ac60ae37cc72503ec40691d1ae43a476f8e7
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Thu Jan 17 20:00:34 2013 +0000
sna/dri: Explicitly flag sync copies for the backends
As gen6/7 need to prevent ring switching and perform a rendercopy if we
need to perform a vsync'ed copy.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c
index 8b1ae3c..7af59ae 100644
--- a/src/sna/gen6_render.c
+++ b/src/sna/gen6_render.c
@@ -2453,6 +2453,9 @@ static inline bool prefer_blt_copy(struct sna *sna,
struct kgem_bo *dst_bo,
unsigned flags)
{
+ if (flags & COPY_SYNC)
+ return false;
+
if (PREFER_RENDER)
return PREFER_RENDER > 0;
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index 2269b3a..5880e7a 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -2557,6 +2557,9 @@ static inline bool prefer_blt_copy(struct sna *sna,
struct kgem_bo *dst_bo,
unsigned flags)
{
+ if (flags & COPY_SYNC)
+ return false;
+
if (sna->kgem.ring == KGEM_BLT)
return true;
diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c
index e972537..b48894e 100644
--- a/src/sna/sna_dri.c
+++ b/src/sna/sna_dri.c
@@ -677,10 +677,15 @@ sna_dri_copy_to_front(struct sna *sna, DrawablePtr draw, RegionPtr region,
dst_bo, 0, 0,
boxes, n);
} else {
+ unsigned flags;
+
+ flags = COPY_LAST;
+ if (flush)
+ flags |= COPY_SYNC;
sna->render.copy_boxes(sna, GXcopy,
(PixmapPtr)draw, src_bo, -draw->x-dx, -draw->y-dy,
pixmap, dst_bo, 0, 0,
- boxes, n, COPY_LAST);
+ boxes, n, flags);
DBG(("%s: flushing? %d\n", __FUNCTION__, flush));
if (flush) { /* STAT! */
diff --git a/src/sna/sna_render.h b/src/sna/sna_render.h
index 4174b6f..13a3e7d 100644
--- a/src/sna/sna_render.h
+++ b/src/sna/sna_render.h
@@ -242,6 +242,7 @@ struct sna_render {
PixmapPtr dst, struct kgem_bo *dst_bo, int16_t dst_dx, int16_t dst_dy,
const BoxRec *box, int n, unsigned flags);
#define COPY_LAST 0x1
+#define COPY_SYNC 0x2
bool (*copy)(struct sna *sna, uint8_t alu,
PixmapPtr src, struct kgem_bo *src_bo,
More information about the xorg-commit
mailing list