[Pixman] [PATCH 2/5] Add SSE2 fetcher for x8r8g8b8

Siarhei Siamashka siarhei.siamashka at gmail.com
Tue Feb 1 08:23:44 PST 2011


On Saturday 29 January 2011 03:12:21 Søren Sandmann wrote:
> From: Søren Sandmann Pedersen <ssp at redhat.com>
> 
> New output of lowlevel-blt-bench over_x888_8_0565:
> 
> over_x888_8_0565 =  L1:  55.68  L2:  55.11  M: 52.83 ( 19.04%)  HT: 39.62 
> VT: 37.70  R: 30.88  RT: 14.62 ( 174Kops/s)
> 
> The fetcher is looked up in a table, so that other fetchers can easily
> be added.

> +static void
> +sse2_src_iter_init (pixman_implementation_t *imp,
> +		    pixman_iter_t *iter,
> +		    pixman_image_t *image,
> +		    int x, int y, int width, int height,
> +		    uint8_t *buffer, iter_flags_t flags)
> +{
> +#define FLAGS								
\
> +    (FAST_PATH_STANDARD_FLAGS | FAST_PATH_ID_TRANSFORM)
> +
> +    if ((flags & ITER_NARROW)				&&
> +	(image->common.flags & FLAGS) == FLAGS		&&
> +	x >= 0 && y >= 0				&&
> +	x + width <= image->bits.width			&&
> +	y + height <= image->bits.height)
> +    {
> +	const fetcher_info_t *f;
> +
> +	for (f = &fetchers[0]; f->format != PIXMAN_null; f++)
> +	{
> +	    if (image->common.extended_format_code == f->format)
> +	    {
> +		uint8_t *b = (uint8_t *)image->bits.bits;
> +		int s = image->bits.rowstride * 4;
> +
> +		iter->bits = b + s * y + x * PIXMAN_FORMAT_BPP (f->format) / 8;
> +		iter->stride = s;
> +		iter->width = width;
> +		iter->buffer = (uint32_t *)buffer;
> +
> +		iter->get_scanline = f->get_scanline;
> +		return;
> +	    }
> +	}
> +    }
> +
> +    _pixman_implementation_src_iter_init (
> +	imp->delegate, iter, image, x, y, width, height, buffer, flags);
> +}

Are we going to have this new code performing linear search in this array
once per each compositing operation now? It may be bad for performance unless
some kind of caching (at the time of pixman_image_t creation?) can be
added later.

Also is there a plan to provide SSE2 optimized store functions in addition
to fetchers later?

Anyway, with such changes coming, I see more and more reasons to avoid general
compositing path in pixman as much as possible :)

-- 
Best regards,
Siarhei Siamashka


More information about the Pixman mailing list