xf86-video-intel: 2 commits - src/sna/sna_damage.c src/sna/sna_glyphs.c src/sna/sna_render.c
Chris Wilson
ickle at kemper.freedesktop.org
Fri Apr 6 07:39:42 PDT 2012
src/sna/sna_damage.c | 9 ++++-----
src/sna/sna_glyphs.c | 10 +++++++++-
src/sna/sna_render.c | 3 +--
3 files changed, 14 insertions(+), 8 deletions(-)
New commits:
commit b790ba2ec9ead51227d85fc8630bc7505eb7d7b3
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Fri Apr 6 15:38:02 2012 +0100
sna: Correct the damage offset for redirected rendering
Reported-by: Clemens Eisserer <linuxhippy at gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48385
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_damage.c b/src/sna/sna_damage.c
index 9c646d8..f2d682d 100644
--- a/src/sna/sna_damage.c
+++ b/src/sna/sna_damage.c
@@ -945,8 +945,11 @@ struct sna_damage *_sna_damage_is_all(struct sna_damage *damage,
{
DBG(("%s(%d, %d)%s?\n", __FUNCTION__, width, height,
damage->dirty ? "*" : ""));
- assert(damage->mode == DAMAGE_ADD);
+ DBG(("%s: (%d, %d), (%d, %d)\n", __FUNCTION__,
+ damage->extents.x1, damage->extents.y1,
+ damage->extents.x2, damage->extents.y2));
+ assert(damage->mode == DAMAGE_ADD);
assert(damage->extents.x1 == 0 &&
damage->extents.y1 == 0 &&
damage->extents.x2 == width &&
@@ -962,10 +965,6 @@ struct sna_damage *_sna_damage_is_all(struct sna_damage *damage,
return damage;
}
- DBG(("%s: (%d, %d), (%d, %d)\n", __FUNCTION__,
- damage->extents.x1, damage->extents.y1,
- damage->extents.x2, damage->extents.y2));
-
assert(damage->extents.x1 == 0 &&
damage->extents.y1 == 0 &&
damage->extents.x2 == width &&
diff --git a/src/sna/sna_render.c b/src/sna/sna_render.c
index d774a34..8af80f2 100644
--- a/src/sna/sna_render.c
+++ b/src/sna/sna_render.c
@@ -1878,8 +1878,7 @@ sna_render_composite_redirect_done(struct sna *sna,
}
if (t->damage) {
sna_damage_combine(t->real_damage, t->damage,
- t->box.x1 - op->dst.x,
- t->box.y1 - op->dst.y);
+ -t->box.x1, -t->box.y1);
__sna_damage_destroy(t->damage);
}
commit 0b81bafb802bb86454739ed46cf45571bccef735
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Fri Apr 6 15:14:45 2012 +0100
sna/glyphs: Prefer a temporary upload mask for large glyph masks
If the required temporary mask is larger than the 3D pipeline can
handle, just render to a CPU buffer rather than redirect every glyph
composition.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_glyphs.c b/src/sna/sna_glyphs.c
index 235528c..87371aa 100644
--- a/src/sna/sna_glyphs.c
+++ b/src/sna/sna_glyphs.c
@@ -662,6 +662,13 @@ clear_pixmap(struct sna *sna, PixmapPtr pixmap)
return sna->render.clear(sna, pixmap, priv->gpu_bo);
}
+static bool
+too_large(struct sna *sna, int width, int height)
+{
+ return (width > sna->render.max_3d_size ||
+ height > sna->render.max_3d_size);
+}
+
static Bool
glyphs_via_mask(struct sna *sna,
CARD8 op,
@@ -724,7 +731,8 @@ glyphs_via_mask(struct sna *sna,
component_alpha = NeedsComponent(format->format);
if (!NO_SMALL_MASK &&
- (uint32_t)width * height * format->depth < 8 * 4096) {
+ ((uint32_t)width * height * format->depth < 8 * 4096 ||
+ too_large(sna, width, height))) {
pixman_image_t *mask_image;
int s;
More information about the xorg-commit
mailing list