[Pixman] [PATCH] implementation: add PIXMAN_DISABLE=wholeops

Oded Gabbay oded.gabbay at gmail.com
Tue Sep 8 07:18:01 PDT 2015


On Tue, Sep 8, 2015 at 2:08 PM, Pekka Paalanen <ppaalanen at gmail.com> wrote:
> From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
>
> Add a new option to PIXMAN_DISABLE: "wholeops". This option disables all
> whole-operation fast paths regardless of implementation level, except
> the general path (general_composite_rect).
>
> The purpose is to add a debug option that allows us to test optimized
> iterator paths specifically. With this, it is possible to see if:
> - fast paths mask bugs in iterators
> - compare fast paths with iterator paths for performance
>
> The effect was tested on x86_64 by running:
> $ PIXMAN_DISABLE='' ./test/lowlevel-blt-bench over_8888_8888
> $ PIXMAN_DISABLE='wholeops' ./test/lowlevel-blt-bench over_8888_8888
>
> In the first case time is spent in sse2_composite_over_8888_8888(), and
> in the latter in sse2_combine_over_u().
>
> Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> ---
>  pixman/pixman-implementation.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
>
> diff --git a/pixman/pixman-implementation.c b/pixman/pixman-implementation.c
> index 5884054..2c7de4c 100644
> --- a/pixman/pixman-implementation.c
> +++ b/pixman/pixman-implementation.c
> @@ -380,6 +380,11 @@ _pixman_disabled (const char *name)
>      return FALSE;
>  }
>
> +static const pixman_fast_path_t empty_fast_path[] =
> +{
> +    { PIXMAN_OP_NONE }
> +};
> +
>  pixman_implementation_t *
>  _pixman_choose_implementation (void)
>  {
> @@ -397,5 +402,16 @@ _pixman_choose_implementation (void)
>
>      imp = _pixman_implementation_create_noop (imp);
>
> +    if (_pixman_disabled ("wholeops"))
> +    {
> +        pixman_implementation_t *cur;
> +
> +        /* Disable all whole-operation paths except the general one,
> +         * so that optimized iterators are used as much as possible.
> +         */
> +        for (cur = imp; cur->fallback; cur = cur->fallback)
> +            cur->fast_paths = empty_fast_path;
> +    }
> +
>      return imp;
>  }
> --
> 2.4.6
>
> _______________________________________________
> Pixman mailing list
> Pixman at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/pixman

Reviewed-by: Oded Gabbay <oded.gabbay at gmail.com>


More information about the Pixman mailing list