From f961390db6fa0707895effb2e7672edda575f8ec Mon Sep 17 00:00:00 2001 From: Zhigang Gong Date: Thu, 7 Jul 2011 15:31:35 +0800 Subject: [PATCH] glamor: Don't need to pad the tile image if pixmap is ni texture. Signed-off-by: Zhigang Gong --- glamor/glamor_core.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/glamor/glamor_core.c b/glamor/glamor_core.c index 31734bed0..da8b90b21 100644 --- a/glamor/glamor_core.c +++ b/glamor/glamor_core.c @@ -242,12 +242,10 @@ Bool glamor_prepare_access_gc(GCPtr gc) { if (gc->stipple) { - glamor_fallback("has stipple %p\n", gc->stipple); if (!glamor_prepare_access(&gc->stipple->drawable, GLAMOR_ACCESS_RO)) return FALSE; } if (gc->fillStyle == FillTiled) { - glamor_fallback("has tile pixmap %p\n", gc->tile.pixmap); if (!glamor_prepare_access (&gc->tile.pixmap->drawable, GLAMOR_ACCESS_RO)) { if (gc->stipple) @@ -353,16 +351,20 @@ glamor_validate_gc(GCPtr gc, unsigned long changes, DrawablePtr drawable) } #endif if (changes & GCTile) { - if (!gc->tileIsPixel && FbEvenTile(gc->tile.pixmap->drawable.width * - drawable->bitsPerPixel)) - { - glamor_fallback("GC %p tile changed %p.\n", gc, gc->tile.pixmap); - if (glamor_prepare_access(&gc->tile.pixmap->drawable, + if (!gc->tileIsPixel) { + glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(gc->tile.pixmap); + if ((!GLAMOR_PIXMAP_PRIV_HAS_FBO(pixmap_priv)) + && FbEvenTile(gc->tile.pixmap->drawable.width * + drawable->bitsPerPixel)) + { + glamor_fallback("GC %p tile changed %p.\n", gc, gc->tile.pixmap); + if (glamor_prepare_access(&gc->tile.pixmap->drawable, GLAMOR_ACCESS_RW)) { fbPadPixmap(gc->tile.pixmap); glamor_finish_access(&gc->tile.pixmap->drawable); - } - } + } + } + } /* Mask out the GCTile change notification, now that we've done FB's * job for it. */ @@ -373,7 +375,6 @@ glamor_validate_gc(GCPtr gc, unsigned long changes, DrawablePtr drawable) /* We can't inline stipple handling like we do for GCTile because * it sets fbgc privates. */ - glamor_fallback("GC %p stipple changed %p.\n", gc, gc->stipple); if (glamor_prepare_access(&gc->stipple->drawable, GLAMOR_ACCESS_RW)) { fbValidateGC(gc, changes, drawable); glamor_finish_access(&gc->stipple->drawable);