[Pixman] [PATCH 03/11] Always set the FAST_PATH_NO_ALPHA_MAP flag for non-BITS images
Søren Sandmann Pedersen
soren.sandmann at gmail.com
Wed May 22 06:45:12 PDT 2013
We only support alpha maps for BITS images, so it's always to ignore
the alpha map for non-BITS image. This makes it possible get rid of
the check for SOLID images since it will now be subsumed by the check
for FAST_PATH_NO_ALPHA_MAP.
Opaque masks are reduced to NULL images in pixman.c, and those can
also safely be treated as not having an alpha map, so set the
FAST_PATH_NO_ALPHA_MAP bit for those as well.
---
pixman/pixman-image.c | 6 ++++--
pixman/pixman-noop.c | 3 +--
pixman/pixman.c | 2 +-
3 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c
index ebf55cd..78c8610 100644
--- a/pixman/pixman-image.c
+++ b/pixman/pixman-image.c
@@ -502,8 +502,10 @@ compute_image_info (pixman_image_t *image)
break;
}
- /* Alpha map */
- if (!image->common.alpha_map)
+ /* Alpha maps are only supported for BITS images, so it's always
+ * safe to ignore their presense for non-BITS images
+ */
+ if (!image->common.alpha_map || image->type != BITS)
{
flags |= FAST_PATH_NO_ALPHA_MAP;
}
diff --git a/pixman/pixman-noop.c b/pixman/pixman-noop.c
index 955e9c8..6afd4b9 100644
--- a/pixman/pixman-noop.c
+++ b/pixman/pixman-noop.c
@@ -78,8 +78,7 @@ noop_src_iter_init (pixman_implementation_t *imp, pixman_iter_t *iter)
iter->get_scanline = _pixman_iter_get_scanline_noop;
}
else if (image->common.extended_format_code == PIXMAN_solid &&
- (iter->image->type == SOLID ||
- (iter->image_flags & FAST_PATH_NO_ALPHA_MAP)))
+ (iter->image_flags & FAST_PATH_NO_ALPHA_MAP))
{
if (iter->iter_flags & ITER_NARROW)
{
diff --git a/pixman/pixman.c b/pixman/pixman.c
index 184f0c4..9555cea 100644
--- a/pixman/pixman.c
+++ b/pixman/pixman.c
@@ -605,7 +605,7 @@ pixman_image_composite32 (pixman_op_t op,
else
{
mask_format = PIXMAN_null;
- info.mask_flags = FAST_PATH_IS_OPAQUE;
+ info.mask_flags = FAST_PATH_IS_OPAQUE | FAST_PATH_NO_ALPHA_MAP;
}
dest_format = dest->common.extended_format_code;
--
1.7.11.7
More information about the Pixman
mailing list