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 [email protected] 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 <[email protected]> >> 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 _______________________________________________ Pixman mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/pixman
