[Pixman] [PATCH] Added MIPS32R2 and MIPS DSP ASE optimized functions.
Georgi Beloev
gb at beloev.net
Wed Dec 8 10:22:43 PST 2010
Hi Siarhei,
These are valid points and will have to be addressed. Unfortunately, I am not going to be able to allocate any more time on Pixman for the foreseeable future. The MIPS port a small project based on specific customer requirements; no further development is planned at the moment.
Cheers,
--
Georgi Beloev
gb at beloev.net
On Dec 8, 2010, at 6:07 AM, Siarhei Siamashka wrote:
> On Thursday 02 December 2010 00:59:41 Georgi Beloev wrote:
>> Please note -- the following Pixman patch has been updated to reflect
>> comments received after an earlier submission. It was tested successfully
>> on real hardware with Pixman 0.21.2.
>>
>>
>> From 9ecf61f2072d8f51f845b086686380ff3c34f861 Mon Sep 17 00:00:00 2001
>> From: Georgi Beloev <gb at beloev.net>
>> Date: Wed, 1 Dec 2010 14:34:06 -0800
>> Subject: [PATCH] Added MIPS32R2 and MIPS DSP ASE optimized functions.
>>
>> The following functions were implemented for MIPS32R2:
>> - pixman_fill32()
>> - fast_composite_over_n_8_8888()
>>
>> The following functions were implemented for MIPS DSP ASE:
>> - combine_over_u()
>> - fast_composite_over_n_8_8888()
>>
>> Additionally, MIPS DSP ASE uses the MIPS32R2 pixman_fill32() function.
>>
>> Use configure commands similar to the ones below to select the target
>> processor and, correspondingly, the target instruction set:
>>
>> - MIPS32R2: configure CFLAGS='-march=24kc -O2'
>> - MIPS DSP ASE: configure CFLAGS='-march=24kec -O2'
>
> Hi, thanks for the update.
>
> Have you benchmarked these optimizations? Do you have some numbers to share?
>
> When I tried to run some of the cairo-perf-trace benchmarks on my
> AR7161, MIPS32 24Kc @680MHz device, I got the following results:
>
> original:
>
> [ # ] backend test min(s) median(s) stddev. count
> [ # ] image: pixman 0.21.3
> [ 0] image poppler 170.195 170.484 0.07% 6/6
> [ 2] image gnome-system-monitor 383.189 383.368 0.02% 6/6
> [ 3] image evolution 155.689 155.737 0.01% 4/6
>
> patched:
>
> [ # ] backend test min(s) median(s) stddev. count
> [ # ] image: pixman 0.21.3
> [ 0] image poppler 170.440 170.451 0.22% 3/3
> [ 2] image gnome-system-monitor 418.555 418.668 0.05% 3/3
> [ 3] image evolution 162.266 162.390 0.04% 3/3
>
> One of the reasons for such a slowdown in gnome-system-monitor test is that it
> uses 'over_n_8_8888' operation with the mask where 96.5% of values are zero.
> And your MIPS32R2 optimized code does not handle these special cases, always
> taking the slowest path [1].
>
> I guess DSP ASE code should have much better performance, just because it needs
> less instructions to do the job. Unfortunately I have no way to benchmark it
> myself.
>
> Anyway, I understand that it is hard to be one of the first developers to do
> MIPS optimizations, considering that they are practically non-existent in open
> source software currently. So the challenges are unavoidable. But preferably
> the MIPS assembly code should improve pixman performance, and not just only
> provide some kind of "MIPS optimized" check mark ;)
>
> Regarding the runtime CPU capabilities detection, I think gcc actually has some
> support for -march=native option on MIPS [2], and it is implemented by parsing
> /proc/cpuinfo
>
>
> 1. http://lists.freedesktop.org/archives/pixman/2010-September/000498.html
> 2. http://gcc.gnu.org/onlinedocs/gcc-4.5.1/gcc/MIPS-Options.html
>
> --
> Best regards,
> Siarhei Siamashka
More information about the Pixman
mailing list