[Pixman] [PATCH 05/10] pixman-utils.c, pixman-private.h: Add floating point conversion routines

Søren Sandmann sandmann at cs.au.dk
Wed Sep 26 18:11:19 PDT 2012


Matt Turner <mattst88 at gmail.com> writes:

>> +pixman_bool_t
>> +_pixman_lookup_composite_function (pixman_implementation_t     *toplevel,
>> +                                  pixman_op_t                  op,
>> +                                  pixman_format_code_t         src_format,
>> +                                  uint32_t                     src_flags,
>> +                                  pixman_format_code_t         mask_format,
>> +                                  uint32_t                     mask_flags,
>> +                                  pixman_format_code_t         dest_format,
>> +                                  uint32_t                     dest_flags,
>> +                                  pixman_implementation_t    **out_imp,
>> +                                  pixman_composite_func_t     *out_func);
>> +

This declaration is the result of a mismerge. I'll remove it before comitting.


>> +void
>> +pixman_expand_to_float (argb_t               *dst,
>> +                       const uint32_t       *src,
>> +                       pixman_format_code_t  format,
>> +                       int                   width)
>> +{

>> +void
>> +pixman_contract_from_float (uint32_t     *dst,
>> +                           const argb_t *src,
>> +                           int           width)
>> +{
>
> As I'm sure you know, these functions can be done with SSE 2 or 4.1 if
> we could convert 4 pixels at once. How can we override their
> implementations with optimized ones?

A way to do that might be to make it a new entry point in the
implementation struct, and then make sure that the implementation
pointer is passed down to the accessors.

But a simpler approach would probably be to write SIMD iterators for the
most common formats that would convert to and from floating point
without using these expand/contract functions.

An idea here might be to change the "untransformed" iterators such that
they could take an accessor function as a parameter. Then the SIMD
implementations could simply write accessor functions and pass them to
that iterator.


Søren


More information about the Pixman mailing list