[PATCH] Avoid an unwanted pixmap migration in EXA when compositing trapezoids
Bernardo Innocenti
bernie at codewiz.org
Tue Aug 21 17:12:22 PDT 2007
Fredrik Höglund wrote:
> This patch solves the trapezoid migration problem Michel Dänzer described
> in a recent email on this mailing list.
Thank you, we were looking exactly for an improvement in this area!
FYI, aleph tested your patch on the OLPC and posted his results on
the devel@ mailing-list:
-------- Original Message --------
Subject: Re: X trapezoids rendering performance
Date: Wed, 22 Aug 2007 01:53:34 +0200
From: Stefano Fedrigo <aleph at develer.com>
To: Bernardo Innocenti <bernie at codewiz.org>
CC: OLPC Development <devel at lists.laptop.org>, Jordan Crouse <jordan.crouse at amd.com>, Jim Gettys <jg at laptop.org>
References: <46C90EDD.8020805 at codewiz.org>
Bernardo Innocenti wrote:
> This patch is likely to make a big difference in the EXA codepath
> I benchmarked, which is heavily used by the OLPC GTK theme.
>
> The mini-benchmark attached to #1837 mimics it by drawing rounded
> edges shapes with Cairo.
> [...]
> -------- Original Message --------
> Subject: [PATCH] Avoid an unwanted pixmap migration in EXA when
> compositing trapezoids
> Date: Wed, 15 Aug 2007 19:58:56 +0200
> From: Fredrik Höglund <fredrik at kde.org>
I made quite some testing with the attached benchmark: I tried with a few
different configurations (24 and 16 bit display, different snapshots of
xserver 1.4): speed increase is consistently at 30%.
Definitely not bad, and the patch is already committed in the server-1.4-branch.
Looking at oprofile output is evident that the main optimization is avoiding
memcpy'ing the pixmaps.
Benchmark result without the patch (16 bpp):
op: rect
user: 2.600
sys: 0.050
real: 7.930
op/s: 126.103
Oprofile report:
samples| %|
------------------
534 56.8085 Xorg
TIMER:0|
samples| %|
------------------
243 45.5056 libc-2.6.so
211 39.5131 libpixman-1.so.0.9.4
38 7.1161 amd_drv.so
17 3.1835 libexa.so
16 2.9963 Xorg
8 1.4981 libfb.so
1 0.1873 libextmod.so
[...]
samples % linenr info image name app name symbol name
225 23.9362 (no location information) libc-2.6.so Xorg memcpy
213 22.6596 (no location information) libcairo.so.2.11.5 python (no symbols)
168 17.8723 pixman-edge.c:322 libpixman-1.so.0.9.4 Xorg pixman_rasterize_edges
63 6.7021 (no location information) no-vmlinux no-vmlinux (no symbols)
56 5.9574 (no location information) libpython2.5.so.1.0 python (no symbols)
19 2.0213 cim_gp.c:3305 amd_drv.so Xorg gp_wait_until_idle
16 1.7021 (no location information) libc-2.6.so python msort_with_tmp
12 1.2766 pixman-mmx.c:0 libpixman-1.so.0.9.4 Xorg __divdi3
11 1.1702 cim_gp.c:1228 amd_drv.so Xorg gp_color_bitmap_to_screen_blt
** With the patch applied:
op: rect
user: 2.550
sys: 0.020
real: 6.070
op/s: 164.745
samples| %|
------------------
709 47.1096 Xorg
TIMER:0|
samples| %|
------------------
511 72.0733 libpixman-1.so.0.9.4
71 10.0141 amd_drv.so
43 6.0649 Xorg
40 5.6417 libexa.so
36 5.0776 libc-2.6.so
7 0.9873 libfb.so
1 0.1410 librt-2.6.so
[...]
samples % linenr info image name app name symbol name
407 27.0432 (no location information) libcairo.so.2.11.5 python (no symbols)
322 21.3953 pixman-edge.c:322 libpixman-1.so.0.9.4 Xorg pixman_rasterize_edges
130 8.6379 (no location information) no-vmlinux no-vmlinux (no symbols)
103 6.8439 (no location information) libpython2.5.so.1.0 python (no symbols)
90 5.9801 pixman-utils.c:165 libpixman-1.so.0.9.4 Xorg pixman_fill
40 2.6578 (no location information) libc-2.6.so python msort_with_tmp
32 2.1262 cim_gp.c:1228 amd_drv.so Xorg gp_color_bitmap_to_screen_blt
--
// Bernardo Innocenti
\X/ http://www.codewiz.org/
More information about the xorg
mailing list