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

Pekka Paalanen ppaalanen at gmail.com
Wed Sep 9 01:46:47 PDT 2015


On Tue, 8 Sep 2015 17:18:01 +0300
Oded Gabbay <oded.gabbay at gmail.com> wrote:

> 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

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

Pushed:
   e9ef2cc..812c9c9  master -> master


Thanks,
pq
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 811 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freedesktop.org/archives/pixman/attachments/20150909/c040081a/attachment.sig>


More information about the Pixman mailing list