pixman: Branch 'master' - 2 commits
Søren Sandmann Pedersen
sandmann at kemper.freedesktop.org
Fri Mar 11 12:52:41 PST 2011
test/affine-test.c | 6 +++---
test/blitters-test.c | 4 ++--
test/composite-traps-test.c | 6 +++++-
test/scaling-test.c | 6 +++---
test/utils.c | 9 +++++++--
test/utils.h | 2 +-
6 files changed, 21 insertions(+), 12 deletions(-)
New commits:
commit 84e361c8e357e26f299213fbeefe64c73447b116
Author: Søren Sandmann Pedersen <ssp at redhat.com>
Date: Fri Mar 4 15:51:18 2011 -0500
test: Do endian swapping of the source and destination images.
Otherwise the test fails on big endian. Fix for bug 34767, reported by
Siarhei Siamashka.
diff --git a/test/composite-traps-test.c b/test/composite-traps-test.c
index 298537d..cf30281 100644
--- a/test/composite-traps-test.c
+++ b/test/composite-traps-test.c
@@ -139,6 +139,8 @@ test_composite (int testnum,
pixman_image_set_source_clipping (src_img, 1);
pixman_region_fini (&clip);
}
+
+ image_endian_swap (src_img);
}
/* Create destination image */
@@ -157,6 +159,8 @@ test_composite (int testnum,
dst_img = pixman_image_create_bits (
dst_format, dst_width, dst_height, dst_bits, dst_stride);
+
+ image_endian_swap (dst_img);
}
/* Create traps */
commit 84f3c5a71a2de1a96dcf0c7f9ab0a8ee1b1b158f
Author: Søren Sandmann Pedersen <ssp at redhat.com>
Date: Mon Mar 7 13:45:54 2011 -0500
test: In image_endian_swap() use pixman_image_get_format() to get the bpp.
There is no reason to pass in the bpp as an argument; it can be gotten
directly from the image.
diff --git a/test/affine-test.c b/test/affine-test.c
index b7a1fa6..ed8000c 100644
--- a/test/affine-test.c
+++ b/test/affine-test.c
@@ -95,8 +95,8 @@ test_composite (int testnum,
dst_img = pixman_image_create_bits (
dst_fmt, dst_width, dst_height, dstbuf, dst_stride);
- image_endian_swap (src_img, src_bpp * 8);
- image_endian_swap (dst_img, dst_bpp * 8);
+ image_endian_swap (src_img);
+ image_endian_swap (dst_img);
pixman_transform_init_identity (&transform);
@@ -251,7 +251,7 @@ test_composite (int testnum,
dstbuf[i] &= 0xFFFFFF;
}
- image_endian_swap (dst_img, dst_bpp * 8);
+ image_endian_swap (dst_img);
if (verbose)
{
diff --git a/test/blitters-test.c b/test/blitters-test.c
index 42181ef..63e7cb3 100644
--- a/test/blitters-test.c
+++ b/test/blitters-test.c
@@ -61,7 +61,7 @@ create_random_image (pixman_format_code_t *allowed_formats,
pixman_image_set_indexed (img, &(y_palette[PIXMAN_FORMAT_BPP (fmt)]));
}
- image_endian_swap (img, PIXMAN_FORMAT_BPP (fmt));
+ image_endian_swap (img);
if (used_fmt) *used_fmt = fmt;
return img;
@@ -101,7 +101,7 @@ free_random_image (uint32_t initcrc,
/* swap endiannes in order to provide identical results on both big
* and litte endian systems
*/
- image_endian_swap (img, PIXMAN_FORMAT_BPP (fmt));
+ image_endian_swap (img);
crc32 = compute_crc32 (initcrc, data, stride * height);
}
diff --git a/test/composite-traps-test.c b/test/composite-traps-test.c
index 8f32778..298537d 100644
--- a/test/composite-traps-test.c
+++ b/test/composite-traps-test.c
@@ -218,7 +218,7 @@ test_composite (int testnum,
dst_bits[i] &= 0xFFFFFF;
}
- image_endian_swap (dst_img, dst_bpp * 8);
+ image_endian_swap (dst_img);
if (verbose)
{
diff --git a/test/scaling-test.c b/test/scaling-test.c
index dbb9d39..82370f7 100644
--- a/test/scaling-test.c
+++ b/test/scaling-test.c
@@ -140,8 +140,8 @@ test_composite (int testnum,
dst_img = pixman_image_create_bits (
dst_fmt, dst_width, dst_height, dstbuf, dst_stride);
- image_endian_swap (src_img, src_bpp * 8);
- image_endian_swap (dst_img, dst_bpp * 8);
+ image_endian_swap (src_img);
+ image_endian_swap (dst_img);
if (lcg_rand_n (4) > 0)
{
@@ -330,7 +330,7 @@ test_composite (int testnum,
dstbuf[i] &= 0xFFFFFF;
}
- image_endian_swap (dst_img, dst_bpp * 8);
+ image_endian_swap (dst_img);
if (verbose)
{
diff --git a/test/utils.c b/test/utils.c
index 2f21398..4bf02e1 100644
--- a/test/utils.c
+++ b/test/utils.c
@@ -133,11 +133,12 @@ compute_crc32 (uint32_t in_crc32,
/* perform endian conversion of pixel data
*/
void
-image_endian_swap (pixman_image_t *img, int bpp)
+image_endian_swap (pixman_image_t *img)
{
int stride = pixman_image_get_stride (img);
uint32_t *data = pixman_image_get_data (img);
int height = pixman_image_get_height (img);
+ int bpp = PIXMAN_FORMAT_BPP (pixman_image_get_format (img));
int i, j;
/* swap bytes only on big endian systems */
@@ -145,10 +146,13 @@ image_endian_swap (pixman_image_t *img, int bpp)
if (*(volatile uint8_t *)&endian_check_var != 0x12)
return;
+ if (bpp == 8)
+ return;
+
for (i = 0; i < height; i++)
{
uint8_t *line_data = (uint8_t *)data + stride * i;
- /* swap bytes only for 16, 24 and 32 bpp for now */
+
switch (bpp)
{
case 1:
@@ -208,6 +212,7 @@ image_endian_swap (pixman_image_t *img, int bpp)
}
break;
default:
+ assert (FALSE);
break;
}
}
diff --git a/test/utils.h b/test/utils.h
index 9c7bdb1..a5183f7 100644
--- a/test/utils.h
+++ b/test/utils.h
@@ -60,7 +60,7 @@ compute_crc32 (uint32_t in_crc32,
/* perform endian conversion of pixel data
*/
void
-image_endian_swap (pixman_image_t *img, int bpp);
+image_endian_swap (pixman_image_t *img);
/* Allocate memory that is bounded by protected pages,
* so that out-of-bounds access will cause segfaults
More information about the xorg-commit
mailing list