[oe] [PATCH 2/9] xorg-lib: move older not pinned versions to obsolete dir

Martin Jansa martin.jansa at gmail.com
Mon Aug 16 15:30:13 UTC 2010


Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
---
 recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.1.bb   |   12 +
 recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.2.bb   |   10 +
 recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.3.bb   |   10 +
 recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.4.bb   |   10 +
 recipes/obsolete/xorg/xorg-lib/libapplewm_1.0.0.bb |    9 +
 recipes/obsolete/xorg/xorg-lib/libdmx_1.0.2.bb     |    8 +
 recipes/obsolete/xorg/xorg-lib/libfontenc_1.0.4.bb |   11 +
 recipes/obsolete/xorg/xorg-lib/libfs_1.0.0.bb      |   10 +
 recipes/obsolete/xorg/xorg-lib/libfs_1.0.1.bb      |   10 +
 recipes/obsolete/xorg/xorg-lib/libice_1.0.3.bb     |   12 +
 recipes/obsolete/xorg/xorg-lib/libice_1.0.4.bb     |   12 +
 .../xorg/xorg-lib/liblbxutil/mkg3states.patch      |   51 +
 recipes/obsolete/xorg/xorg-lib/liblbxutil_1.0.1.bb |   11 +
 .../xorg-lib/libpciaccess/fix-mtrr-check.patch     |   19 +
 .../obsolete/xorg/xorg-lib/libpciaccess_0.10.3.bb  |    7 +
 .../obsolete/xorg/xorg-lib/libpciaccess_0.11.0.bb  |    6 +
 recipes/obsolete/xorg/xorg-lib/libsm_1.0.2.bb      |   13 +
 recipes/obsolete/xorg/xorg-lib/libsm_1.0.3.bb      |   12 +
 recipes/obsolete/xorg/xorg-lib/libsm_1.1.0.bb      |   12 +
 .../obsolete/xorg/xorg-lib/libwindowswm_1.0.0.bb   |    9 +
 .../xorg-lib/libx11-1.0.1/keysymdef_include.patch  |   62 +
 .../libx11-1.0.1/x11_disable_makekeys.patch        |   15 +
 .../xorg-lib/libx11-1.0.3/keysymdef_include.patch  |   62 +
 .../libx11-1.0.3/x11_disable_makekeys.patch        |   15 +
 .../xorg-lib/libx11-1.1.1/keysymdef_include.patch  |   62 +
 .../xorg-lib/libx11-1.1.2/keysymdef_include.patch  |   62 +
 .../xorg-lib/libx11-1.1.3/keysymdef_include.patch  |   62 +
 .../xorg-lib/libx11-1.1.4/keysymdef_include.patch  |   62 +
 .../xorg-lib/libx11-1.2/x11_disable_makekeys.patch |   23 +
 .../xorg/xorg-lib/libx11-1.3.3+git/dolt-fix.patch  |   22 +
 .../libx11-1.3.3+git/keysymdef_include.patch       |   29 +
 .../libx11-1.3.3+git/x11_disable_makekeys.patch    |   26 +
 .../libx11-1.3.3/x11_disable_makekeys.patch        |   23 +
 .../xorg/xorg-lib/libx11-1.3.4/dolt-fix.patch      |   22 +
 .../xorg-lib/libx11-1.3.4/keysymdef_include.patch  |   21 +
 .../libx11-1.3.4/x11_disable_makekeys.patch        |   29 +
 recipes/obsolete/xorg/xorg-lib/libx11/ruutf8.patch |   12 +
 .../obsolete/xorg/xorg-lib/libx11/xchar2b.patch    |   13 +
 recipes/obsolete/xorg/xorg-lib/libx11/xim.patch    |   55 +
 recipes/obsolete/xorg/xorg-lib/libx11_1.0.1.bb     |   10 +
 recipes/obsolete/xorg/xorg-lib/libx11_1.0.3.bb     |   10 +
 recipes/obsolete/xorg/xorg-lib/libx11_1.1.1.bb     |    9 +
 recipes/obsolete/xorg/xorg-lib/libx11_1.1.2.bb     |    8 +
 recipes/obsolete/xorg/xorg-lib/libx11_1.1.3.bb     |    8 +
 recipes/obsolete/xorg/xorg-lib/libx11_1.1.4.bb     |    8 +
 recipes/obsolete/xorg/xorg-lib/libx11_1.2.bb       |    9 +
 recipes/obsolete/xorg/xorg-lib/libx11_1.3.3.bb     |    6 +
 recipes/obsolete/xorg/xorg-lib/libx11_1.3.4.bb     |    6 +
 recipes/obsolete/xorg/xorg-lib/libx11_git.bb       |   14 +
 recipes/obsolete/xorg/xorg-lib/libxau_1.0.3.bb     |   12 +
 recipes/obsolete/xorg/xorg-lib/libxau_1.0.4.bb     |   12 +
 recipes/obsolete/xorg/xorg-lib/libxaw_1.0.3.bb     |   22 +
 recipes/obsolete/xorg/xorg-lib/libxaw_1.0.4.bb     |   22 +
 .../libxcomposite/change-include-order.patch       |   14 +
 .../obsolete/xorg/xorg-lib/libxcomposite_0.3.1.bb  |   12 +
 .../obsolete/xorg/xorg-lib/libxcomposite_0.4.0.bb  |   12 +
 recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.8.bb |   13 +
 recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.9.bb |   13 +
 recipes/obsolete/xorg/xorg-lib/libxdamage_1.0.4.bb |   11 +
 recipes/obsolete/xorg/xorg-lib/libxdamage_1.1.1.bb |   11 +
 recipes/obsolete/xorg/xorg-lib/libxdmcp_1.0.2.bb   |   12 +
 recipes/obsolete/xorg/xorg-lib/libxext_1.0.2.bb    |   13 +
 recipes/obsolete/xorg/xorg-lib/libxext_1.0.3.bb    |   12 +
 recipes/obsolete/xorg/xorg-lib/libxext_1.0.4.bb    |   12 +
 recipes/obsolete/xorg/xorg-lib/libxext_1.0.5.bb    |   12 +
 recipes/obsolete/xorg/xorg-lib/libxfixes_4.0.3.bb  |   13 +
 .../builtinreaddirectory-no-side-effect.patch      |  188 +++
 .../xorg/xorg-lib/libxfont/no-scalable-crash.patch |   22 +
 recipes/obsolete/xorg/xorg-lib/libxfont_1.2.7.bb   |   15 +
 recipes/obsolete/xorg/xorg-lib/libxfont_1.2.8.bb   |   15 +
 recipes/obsolete/xorg/xorg-lib/libxfont_1.3.0.bb   |   15 +
 recipes/obsolete/xorg/xorg-lib/libxfont_1.3.1.bb   |   14 +
 recipes/obsolete/xorg/xorg-lib/libxfont_1.3.2.bb   |   14 +
 recipes/obsolete/xorg/xorg-lib/libxfont_1.3.3.bb   |   13 +
 .../obsolete/xorg/xorg-lib/libxfontcache_1.0.4.bb  |   10 +
 recipes/obsolete/xorg/xorg-lib/libxft_2.1.12.bb    |   21 +
 recipes/obsolete/xorg/xorg-lib/libxft_2.1.13.bb    |   21 +
 recipes/obsolete/xorg/xorg-lib/libxi_1.0.2.bb      |   10 +
 recipes/obsolete/xorg/xorg-lib/libxi_1.1.0.bb      |   10 +
 recipes/obsolete/xorg/xorg-lib/libxi_1.1.2.bb      |   10 +
 recipes/obsolete/xorg/xorg-lib/libxi_1.1.3.bb      |   10 +
 recipes/obsolete/xorg/xorg-lib/libxi_1.2.0.bb      |   10 +
 .../obsolete/xorg/xorg-lib/libxinerama_1.0.2.bb    |   10 +
 .../obsolete/xorg/xorg-lib/libxinerama_1.0.3.bb    |   10 +
 recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.4.bb |   11 +
 recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.5.bb |   11 +
 recipes/obsolete/xorg/xorg-lib/libxmu_1.0.3.bb     |   17 +
 recipes/obsolete/xorg/xorg-lib/libxmu_1.0.4.bb     |   17 +
 recipes/obsolete/xorg/xorg-lib/libxpm_3.5.6.bb     |   16 +
 recipes/obsolete/xorg/xorg-lib/libxpm_3.5.7.bb     |   16 +
 recipes/obsolete/xorg/xorg-lib/libxrandr_1.1.2.bb  |   13 +
 recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.2.bb  |   13 +
 recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.3.bb  |   13 +
 recipes/obsolete/xorg/xorg-lib/libxrender_0.9.2.bb |   13 +
 recipes/obsolete/xorg/xorg-lib/libxrender_0.9.3.bb |   13 +
 recipes/obsolete/xorg/xorg-lib/libxrender_0.9.4.bb |   13 +
 recipes/obsolete/xorg/xorg-lib/libxres_1.0.3.bb    |   10 +
 .../obsolete/xorg/xorg-lib/libxscrnsaver_1.1.2.bb  |   13 +
 .../obsolete/xorg/xorg-lib/libxscrnsaver_1.1.3.bb  |   13 +
 .../xorg/xorg-lib/libxt/pr10970-header-fix.patch   |  512 ++++++
 recipes/obsolete/xorg/xorg-lib/libxt_1.0.4.bb      |   24 +
 recipes/obsolete/xorg/xorg-lib/libxt_1.0.5.bb      |   23 +
 recipes/obsolete/xorg/xorg-lib/libxtst_1.0.2.bb    |   10 +
 recipes/obsolete/xorg/xorg-lib/libxtst_1.0.3.bb    |   10 +
 recipes/obsolete/xorg/xorg-lib/libxv_1.0.3.bb      |   10 +
 recipes/obsolete/xorg/xorg-lib/libxv_1.0.4.bb      |   10 +
 recipes/obsolete/xorg/xorg-lib/libxvmc/drm.patch   |    9 +
 recipes/obsolete/xorg/xorg-lib/libxvmc/true.patch  |   11 +
 recipes/obsolete/xorg/xorg-lib/libxvmc/via.patch   |   23 +
 recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.4.bb    |   10 +
 recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.5.bb    |   10 +
 .../obsolete/xorg/xorg-lib/libxxf86dga_1.0.1.bb    |   10 +
 .../obsolete/xorg/xorg-lib/libxxf86dga_1.0.2.bb    |   10 +
 .../obsolete/xorg/xorg-lib/libxxf86misc_1.0.1.bb   |   10 +
 recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.1.bb |   10 +
 recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.2.bb |   10 +
 ...mplementation-of-pixman_blt-with-overlapp.patch |  114 ++
 ...of-overlapping-src-dst-for-pixman_blt_mmx.patch |   91 ++
 ...f-overlapping-src-dst-for-pixman_blt_sse2.patch |   91 ++
 ...f-overlapping-src-dst-for-pixman_blt_neon.patch |   94 ++
 .../xorg/xorg-lib/pixman-0.17.8/1-composite.patch  |  161 ++
 .../xorg/xorg-lib/pixman-0.17.8/2-composite.patch  |  102 ++
 .../xorg/xorg-lib/pixman-0.17.8/3-composite.patch  |  108 ++
 ...mplementation-of-pixman_blt-with-overlapp.patch |  114 ++
 ...of-overlapping-src-dst-for-pixman_blt_mmx.patch |   91 ++
 ...f-overlapping-src-dst-for-pixman_blt_sse2.patch |   91 ++
 ...f-overlapping-src-dst-for-pixman_blt_neon.patch |   94 ++
 ...EON-optimizations-for-fetch-store-r5g6b5-.patch |  169 ++
 .../xorg/xorg-lib/pixman-0.18.0/565-scanline.patch |  257 +++
 .../pixman-0.18.0/missing-cache-preload.diff       |   28 +
 .../dont-copy-unused-bits-to-alpha-channel.patch   |   29 +
 ...mplementation-of-pixman_blt-with-overlapp.patch |  114 ++
 ...of-overlapping-src-dst-for-pixman_blt_mmx.patch |   91 ++
 ...f-overlapping-src-dst-for-pixman_blt_sse2.patch |   91 ++
 ...f-overlapping-src-dst-for-pixman_blt_neon.patch |   94 ++
 ...EON-optimizations-for-fetch-store-r5g6b5-.patch |  169 ++
 ...SIMD-Try-without-any-CFLAGS-before-forcin.patch |   53 +
 recipes/obsolete/xorg/xorg-lib/pixman/calloc.patch |   23 +
 .../xorg/xorg-lib/pixman/nearest-neighbour.patch   | 1040 ++++++++++++
 .../xorg/xorg-lib/pixman/over-n-8-0565.patch       |  231 +++
 .../xorg/xorg-lib/pixman/pixman-28986.patch        |   32 +
 .../obsolete/xorg/xorg-lib/pixman/prefetch.patch   |  298 ++++
 .../xorg/xorg-lib/pixman/remove-broken.patch       |  826 ++++++++++
 .../xorg/xorg-lib/pixman/src-8888-0565.patch       |  324 ++++
 recipes/obsolete/xorg/xorg-lib/pixman/tls.patch    |   59 +
 recipes/obsolete/xorg/xorg-lib/pixman_0.10.0.bb    |    5 +
 recipes/obsolete/xorg/xorg-lib/pixman_0.11.4.bb    |    7 +
 recipes/obsolete/xorg/xorg-lib/pixman_0.11.8.bb    |    9 +
 recipes/obsolete/xorg/xorg-lib/pixman_0.15.18.bb   |    7 +
 recipes/obsolete/xorg/xorg-lib/pixman_0.15.6.bb    |    7 +
 recipes/obsolete/xorg/xorg-lib/pixman_0.17.12.bb   |   24 +
 recipes/obsolete/xorg/xorg-lib/pixman_0.17.8.bb    |   23 +
 recipes/obsolete/xorg/xorg-lib/pixman_0.18.0.bb    |   24 +
 recipes/obsolete/xorg/xorg-lib/pixman_0.9.4.bb     |    7 +
 recipes/obsolete/xorg/xorg-lib/pixman_0.9.5.bb     |    8 +
 recipes/obsolete/xorg/xorg-lib/pixman_git.bb       |   27 +
 .../xorg-lib/xtrans/fix-missing-includepath.patch  |   13 +
 recipes/obsolete/xorg/xorg-lib/xtrans_1.0.3.bb     |   15 +
 recipes/obsolete/xorg/xorg-lib/xtrans_1.0.4.bb     |   15 +
 recipes/obsolete/xorg/xorg-lib/xtrans_1.1.bb       |   15 +
 recipes/obsolete/xorg/xorg-lib/xtrans_1.2.1.bb     |   15 +
 recipes/obsolete/xorg/xorg-lib/xtrans_1.2.3.bb     |   15 +
 recipes/obsolete/xorg/xorg-lib/xtrans_1.2.bb       |   15 +
 recipes/xorg-lib/diet-x11_1.1.1.bb                 |   12 -
 recipes/xorg-lib/diet-x11_1.1.2.bb                 |   10 -
 recipes/xorg-lib/diet-x11_1.1.3.bb                 |   10 -
 recipes/xorg-lib/diet-x11_1.1.4.bb                 |   10 -
 recipes/xorg-lib/libapplewm_1.0.0.bb               |    9 -
 recipes/xorg-lib/libdmx_1.0.2.bb                   |    8 -
 recipes/xorg-lib/libfontenc_1.0.4.bb               |   11 -
 recipes/xorg-lib/libfs_1.0.0.bb                    |   10 -
 recipes/xorg-lib/libfs_1.0.1.bb                    |   10 -
 recipes/xorg-lib/libice_1.0.3.bb                   |   12 -
 recipes/xorg-lib/libice_1.0.4.bb                   |   12 -
 .../xorg-lib/liblbxutil-1.1.0/mkg3states-1.1.patch |   55 +
 recipes/xorg-lib/liblbxutil/mkg3states-1.1.patch   |   55 -
 recipes/xorg-lib/liblbxutil/mkg3states.patch       |   51 -
 recipes/xorg-lib/liblbxutil_1.0.1.bb               |   11 -
 recipes/xorg-lib/libpciaccess/fix-mtrr-check.patch |   19 -
 recipes/xorg-lib/libpciaccess_0.10.3.bb            |    7 -
 recipes/xorg-lib/libpciaccess_0.11.0.bb            |    6 -
 recipes/xorg-lib/libsm_1.0.2.bb                    |   13 -
 recipes/xorg-lib/libsm_1.0.3.bb                    |   12 -
 recipes/xorg-lib/libsm_1.1.0.bb                    |   12 -
 recipes/xorg-lib/libwindowswm_1.0.0.bb             |    9 -
 .../xorg-lib/libx11-1.0.1/keysymdef_include.patch  |   62 -
 .../libx11-1.0.1/x11_disable_makekeys.patch        |   15 -
 .../xorg-lib/libx11-1.0.3/keysymdef_include.patch  |   62 -
 .../libx11-1.0.3/x11_disable_makekeys.patch        |   15 -
 .../xorg-lib/libx11-1.1.1/keysymdef_include.patch  |   62 -
 .../xorg-lib/libx11-1.1.2/keysymdef_include.patch  |   62 -
 .../xorg-lib/libx11-1.1.3/keysymdef_include.patch  |   62 -
 .../xorg-lib/libx11-1.1.4/keysymdef_include.patch  |   62 -
 recipes/xorg-lib/libx11-1.1.5/X18NCMSstubs.diff    |  528 ++++++
 recipes/xorg-lib/libx11-1.1.5/dolt-fix.patch       |   21 +
 .../xorg-lib/libx11-1.1.5/fix-disable-xlocale.diff |   14 +
 .../libx11-1.1.5/fix-utf8-wrong-define.patch       |   16 +
 .../xorg-lib/libx11-1.1.5/keysymdef_include.patch  |   29 +
 .../xorg-lib/libx11-1.1.5/makekeys-update.patch    |   87 +
 .../libx11-1.1.5/x11_disable_makekeys.patch        |   30 +
 .../xorg-lib/libx11-1.2/x11_disable_makekeys.patch |   23 -
 recipes/xorg-lib/libx11-1.3.2/dolt-fix.patch       |   21 +
 .../xorg-lib/libx11-1.3.2/keysymdef_include.patch  |   29 +
 recipes/xorg-lib/libx11-1.3.3+git/dolt-fix.patch   |   22 -
 .../libx11-1.3.3+git/keysymdef_include.patch       |   29 -
 .../libx11-1.3.3+git/x11_disable_makekeys.patch    |   26 -
 .../libx11-1.3.3/x11_disable_makekeys.patch        |   23 -
 recipes/xorg-lib/libx11-1.3.4/dolt-fix.patch       |   22 -
 .../xorg-lib/libx11-1.3.4/keysymdef_include.patch  |   21 -
 .../libx11-1.3.4/x11_disable_makekeys.patch        |   29 -
 recipes/xorg-lib/libx11/X18NCMSstubs.diff          |  528 ------
 recipes/xorg-lib/libx11/dolt-fix.patch             |   21 -
 recipes/xorg-lib/libx11/fix-disable-xlocale.diff   |   14 -
 .../xorg-lib/libx11/fix-utf8-wrong-define.patch    |   16 -
 recipes/xorg-lib/libx11/keysymdef_include.patch    |   29 -
 recipes/xorg-lib/libx11/makekeys-update.patch      |   87 -
 recipes/xorg-lib/libx11/ruutf8.patch               |   12 -
 recipes/xorg-lib/libx11/x11_disable_makekeys.patch |   30 -
 recipes/xorg-lib/libx11/xchar2b.patch              |   13 -
 recipes/xorg-lib/libx11/xim.patch                  |   55 -
 recipes/xorg-lib/libx11_1.0.1.bb                   |   10 -
 recipes/xorg-lib/libx11_1.0.3.bb                   |   10 -
 recipes/xorg-lib/libx11_1.1.1.bb                   |    9 -
 recipes/xorg-lib/libx11_1.1.2.bb                   |    8 -
 recipes/xorg-lib/libx11_1.1.3.bb                   |    8 -
 recipes/xorg-lib/libx11_1.1.4.bb                   |    8 -
 recipes/xorg-lib/libx11_1.2.bb                     |    9 -
 recipes/xorg-lib/libx11_1.3.3.bb                   |    6 -
 recipes/xorg-lib/libx11_1.3.4.bb                   |    6 -
 recipes/xorg-lib/libx11_git.bb                     |   14 -
 recipes/xorg-lib/libxau_1.0.3.bb                   |   12 -
 recipes/xorg-lib/libxau_1.0.4.bb                   |   12 -
 recipes/xorg-lib/libxaw_1.0.3.bb                   |   22 -
 recipes/xorg-lib/libxaw_1.0.4.bb                   |   22 -
 .../libxcomposite/change-include-order.patch       |   14 -
 recipes/xorg-lib/libxcomposite_0.3.1.bb            |   12 -
 recipes/xorg-lib/libxcomposite_0.4.0.bb            |   12 -
 recipes/xorg-lib/libxcursor_1.1.8.bb               |   13 -
 recipes/xorg-lib/libxcursor_1.1.9.bb               |   13 -
 recipes/xorg-lib/libxdamage_1.0.4.bb               |   11 -
 recipes/xorg-lib/libxdamage_1.1.1.bb               |   11 -
 recipes/xorg-lib/libxdmcp_1.0.2.bb                 |   12 -
 recipes/xorg-lib/libxext_1.0.2.bb                  |   13 -
 recipes/xorg-lib/libxext_1.0.3.bb                  |   12 -
 recipes/xorg-lib/libxext_1.0.4.bb                  |   12 -
 recipes/xorg-lib/libxext_1.0.5.bb                  |   12 -
 recipes/xorg-lib/libxfixes_4.0.3.bb                |   13 -
 .../builtinreaddirectory-no-side-effect.patch      |  188 ---
 recipes/xorg-lib/libxfont/no-scalable-crash.patch  |   22 -
 recipes/xorg-lib/libxfont_1.2.7.bb                 |   15 -
 recipes/xorg-lib/libxfont_1.2.8.bb                 |   15 -
 recipes/xorg-lib/libxfont_1.3.0.bb                 |   15 -
 recipes/xorg-lib/libxfont_1.3.1.bb                 |   14 -
 recipes/xorg-lib/libxfont_1.3.2.bb                 |   14 -
 recipes/xorg-lib/libxfont_1.3.3.bb                 |   13 -
 recipes/xorg-lib/libxfontcache_1.0.4.bb            |   10 -
 recipes/xorg-lib/libxft_2.1.12.bb                  |   21 -
 recipes/xorg-lib/libxft_2.1.13.bb                  |   21 -
 recipes/xorg-lib/libxi_1.0.2.bb                    |   10 -
 recipes/xorg-lib/libxi_1.1.0.bb                    |   10 -
 recipes/xorg-lib/libxi_1.1.2.bb                    |   10 -
 recipes/xorg-lib/libxi_1.1.3.bb                    |   10 -
 recipes/xorg-lib/libxi_1.2.0.bb                    |   10 -
 recipes/xorg-lib/libxinerama_1.0.2.bb              |   10 -
 recipes/xorg-lib/libxinerama_1.0.3.bb              |   10 -
 recipes/xorg-lib/libxkbfile_1.0.4.bb               |   11 -
 recipes/xorg-lib/libxkbfile_1.0.5.bb               |   11 -
 recipes/xorg-lib/libxmu_1.0.3.bb                   |   17 -
 recipes/xorg-lib/libxmu_1.0.4.bb                   |   17 -
 recipes/xorg-lib/libxpm_3.5.6.bb                   |   16 -
 recipes/xorg-lib/libxpm_3.5.7.bb                   |   16 -
 recipes/xorg-lib/libxrandr_1.1.2.bb                |   13 -
 recipes/xorg-lib/libxrandr_1.2.2.bb                |   13 -
 recipes/xorg-lib/libxrandr_1.2.3.bb                |   13 -
 recipes/xorg-lib/libxrender_0.9.2.bb               |   13 -
 recipes/xorg-lib/libxrender_0.9.3.bb               |   13 -
 recipes/xorg-lib/libxrender_0.9.4.bb               |   13 -
 recipes/xorg-lib/libxres_1.0.3.bb                  |   10 -
 recipes/xorg-lib/libxscrnsaver_1.1.2.bb            |   13 -
 recipes/xorg-lib/libxscrnsaver_1.1.3.bb            |   13 -
 recipes/xorg-lib/libxt/pr10970-header-fix.patch    |  512 ------
 recipes/xorg-lib/libxt_1.0.4.bb                    |   24 -
 recipes/xorg-lib/libxt_1.0.5.bb                    |   23 -
 recipes/xorg-lib/libxtst_1.0.2.bb                  |   10 -
 recipes/xorg-lib/libxtst_1.0.3.bb                  |   10 -
 recipes/xorg-lib/libxv_1.0.3.bb                    |   10 -
 recipes/xorg-lib/libxv_1.0.4.bb                    |   10 -
 recipes/xorg-lib/libxvmc/drm.patch                 |    9 -
 recipes/xorg-lib/libxvmc/true.patch                |   11 -
 recipes/xorg-lib/libxvmc/via.patch                 |   23 -
 recipes/xorg-lib/libxvmc_1.0.4.bb                  |   10 -
 recipes/xorg-lib/libxvmc_1.0.5.bb                  |   10 -
 recipes/xorg-lib/libxxf86dga_1.0.1.bb              |   10 -
 recipes/xorg-lib/libxxf86dga_1.0.2.bb              |   10 -
 recipes/xorg-lib/libxxf86misc_1.0.1.bb             |   10 -
 recipes/xorg-lib/libxxf86vm_1.0.1.bb               |   10 -
 recipes/xorg-lib/libxxf86vm_1.0.2.bb               |   10 -
 recipes/xorg-lib/pixman-0.12.0/pixman-arm.patch    |  632 ++++++++
 .../xorg-lib/pixman-0.12.0/pixman-x888-565.patch   |   68 +
 .../pixman-0.13.2/pixman-0.13.2-neon1.patch        | 1702 ++++++++++++++++++++
 ...mplementation-of-pixman_blt-with-overlapp.patch |  114 --
 ...of-overlapping-src-dst-for-pixman_blt_mmx.patch |   91 --
 ...f-overlapping-src-dst-for-pixman_blt_sse2.patch |   91 --
 ...f-overlapping-src-dst-for-pixman_blt_neon.patch |   94 --
 recipes/xorg-lib/pixman-0.17.8/1-composite.patch   |  161 --
 recipes/xorg-lib/pixman-0.17.8/2-composite.patch   |  102 --
 recipes/xorg-lib/pixman-0.17.8/3-composite.patch   |  108 --
 ...mplementation-of-pixman_blt-with-overlapp.patch |  114 --
 ...of-overlapping-src-dst-for-pixman_blt_mmx.patch |   91 --
 ...f-overlapping-src-dst-for-pixman_blt_sse2.patch |   91 --
 ...f-overlapping-src-dst-for-pixman_blt_neon.patch |   94 --
 ...EON-optimizations-for-fetch-store-r5g6b5-.patch |  169 --
 recipes/xorg-lib/pixman-0.18.0/565-scanline.patch  |  257 ---
 .../pixman-0.18.0/missing-cache-preload.diff       |   28 -
 .../dont-copy-unused-bits-to-alpha-channel.patch   |   29 -
 ...mplementation-of-pixman_blt-with-overlapp.patch |  114 --
 ...of-overlapping-src-dst-for-pixman_blt_mmx.patch |   91 --
 ...f-overlapping-src-dst-for-pixman_blt_sse2.patch |   91 --
 ...f-overlapping-src-dst-for-pixman_blt_neon.patch |   94 --
 ...EON-optimizations-for-fetch-store-r5g6b5-.patch |  169 --
 ...SIMD-Try-without-any-CFLAGS-before-forcin.patch |   53 -
 recipes/xorg-lib/pixman/calloc.patch               |   23 -
 recipes/xorg-lib/pixman/nearest-neighbour.patch    | 1040 ------------
 recipes/xorg-lib/pixman/over-n-8-0565.patch        |  231 ---
 recipes/xorg-lib/pixman/pixman-0.13.2-neon1.patch  | 1702 --------------------
 recipes/xorg-lib/pixman/pixman-28986.patch         |   32 -
 recipes/xorg-lib/pixman/pixman-arm.patch           |  632 --------
 recipes/xorg-lib/pixman/pixman-x888-565.patch      |   68 -
 recipes/xorg-lib/pixman/prefetch.patch             |  298 ----
 recipes/xorg-lib/pixman/remove-broken.patch        |  826 ----------
 recipes/xorg-lib/pixman/src-8888-0565.patch        |  324 ----
 recipes/xorg-lib/pixman/tls.patch                  |   59 -
 recipes/xorg-lib/pixman_0.10.0.bb                  |    5 -
 recipes/xorg-lib/pixman_0.11.4.bb                  |    7 -
 recipes/xorg-lib/pixman_0.11.8.bb                  |    9 -
 recipes/xorg-lib/pixman_0.15.18.bb                 |    7 -
 recipes/xorg-lib/pixman_0.15.6.bb                  |    7 -
 recipes/xorg-lib/pixman_0.17.12.bb                 |   24 -
 recipes/xorg-lib/pixman_0.17.8.bb                  |   23 -
 recipes/xorg-lib/pixman_0.18.0.bb                  |   24 -
 recipes/xorg-lib/pixman_0.9.4.bb                   |    7 -
 recipes/xorg-lib/pixman_0.9.5.bb                   |    8 -
 recipes/xorg-lib/pixman_git.bb                     |   27 -
 .../xorg-lib/xtrans/fix-missing-includepath.patch  |   13 -
 recipes/xorg-lib/xtrans_1.0.3.bb                   |   15 -
 recipes/xorg-lib/xtrans_1.0.4.bb                   |   15 -
 recipes/xorg-lib/xtrans_1.1.bb                     |   15 -
 recipes/xorg-lib/xtrans_1.2.1.bb                   |   15 -
 recipes/xorg-lib/xtrans_1.2.3.bb                   |   15 -
 recipes/xorg-lib/xtrans_1.2.bb                     |   15 -
 350 files changed, 11141 insertions(+), 11091 deletions(-)
 create mode 100644 recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.1.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libapplewm_1.0.0.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libdmx_1.0.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libfontenc_1.0.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libfs_1.0.0.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libfs_1.0.1.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libice_1.0.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libice_1.0.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/liblbxutil/mkg3states.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/liblbxutil_1.0.1.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libpciaccess/fix-mtrr-check.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libpciaccess_0.10.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libpciaccess_0.11.0.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libsm_1.0.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libsm_1.0.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libsm_1.1.0.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libwindowswm_1.0.0.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.0.1/keysymdef_include.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.0.1/x11_disable_makekeys.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.0.3/keysymdef_include.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.0.3/x11_disable_makekeys.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.1.1/keysymdef_include.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.1.2/keysymdef_include.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.1.3/keysymdef_include.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.1.4/keysymdef_include.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.2/x11_disable_makekeys.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/dolt-fix.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/keysymdef_include.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/x11_disable_makekeys.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.3.3/x11_disable_makekeys.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/dolt-fix.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/keysymdef_include.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/x11_disable_makekeys.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11/ruutf8.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11/xchar2b.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11/xim.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11_1.0.1.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11_1.0.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11_1.1.1.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11_1.1.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11_1.1.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11_1.1.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11_1.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11_1.3.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11_1.3.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libx11_git.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxau_1.0.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxau_1.0.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxaw_1.0.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxaw_1.0.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxcomposite/change-include-order.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxcomposite_0.3.1.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxcomposite_0.4.0.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.8.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.9.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxdamage_1.0.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxdamage_1.1.1.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxdmcp_1.0.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxext_1.0.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxext_1.0.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxext_1.0.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxext_1.0.5.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxfixes_4.0.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxfont/builtinreaddirectory-no-side-effect.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxfont/no-scalable-crash.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxfont_1.2.7.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxfont_1.2.8.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxfont_1.3.0.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxfont_1.3.1.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxfont_1.3.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxfont_1.3.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxfontcache_1.0.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxft_2.1.12.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxft_2.1.13.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxi_1.0.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxi_1.1.0.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxi_1.1.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxi_1.1.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxi_1.2.0.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxinerama_1.0.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxinerama_1.0.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.5.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxmu_1.0.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxmu_1.0.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxpm_3.5.6.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxpm_3.5.7.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxrandr_1.1.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxrender_0.9.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxrender_0.9.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxrender_0.9.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxres_1.0.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxscrnsaver_1.1.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxscrnsaver_1.1.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxt/pr10970-header-fix.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxt_1.0.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxt_1.0.5.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxtst_1.0.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxtst_1.0.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxv_1.0.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxv_1.0.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxvmc/drm.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxvmc/true.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxvmc/via.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.5.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxxf86dga_1.0.1.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxxf86dga_1.0.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxxf86misc_1.0.1.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.1.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.2.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/1-composite.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/2-composite.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/3-composite.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/565-scanline.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/missing-cache-preload.diff
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman-0.9.5/dont-copy-unused-bits-to-alpha-channel.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman/0006-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman/calloc.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman/nearest-neighbour.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman/over-n-8-0565.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman/pixman-28986.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman/prefetch.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman/remove-broken.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman/src-8888-0565.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman/tls.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman_0.10.0.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman_0.11.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman_0.11.8.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman_0.15.18.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman_0.15.6.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman_0.17.12.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman_0.17.8.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman_0.18.0.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman_0.9.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman_0.9.5.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/pixman_git.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/xtrans/fix-missing-includepath.patch
 create mode 100644 recipes/obsolete/xorg/xorg-lib/xtrans_1.0.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/xtrans_1.0.4.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/xtrans_1.1.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/xtrans_1.2.1.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/xtrans_1.2.3.bb
 create mode 100644 recipes/obsolete/xorg/xorg-lib/xtrans_1.2.bb
 delete mode 100644 recipes/xorg-lib/diet-x11_1.1.1.bb
 delete mode 100644 recipes/xorg-lib/diet-x11_1.1.2.bb
 delete mode 100644 recipes/xorg-lib/diet-x11_1.1.3.bb
 delete mode 100644 recipes/xorg-lib/diet-x11_1.1.4.bb
 delete mode 100644 recipes/xorg-lib/libapplewm_1.0.0.bb
 delete mode 100644 recipes/xorg-lib/libdmx_1.0.2.bb
 delete mode 100644 recipes/xorg-lib/libfontenc_1.0.4.bb
 delete mode 100644 recipes/xorg-lib/libfs_1.0.0.bb
 delete mode 100644 recipes/xorg-lib/libfs_1.0.1.bb
 delete mode 100644 recipes/xorg-lib/libice_1.0.3.bb
 delete mode 100644 recipes/xorg-lib/libice_1.0.4.bb
 create mode 100644 recipes/xorg-lib/liblbxutil-1.1.0/mkg3states-1.1.patch
 delete mode 100644 recipes/xorg-lib/liblbxutil/mkg3states-1.1.patch
 delete mode 100644 recipes/xorg-lib/liblbxutil/mkg3states.patch
 delete mode 100644 recipes/xorg-lib/liblbxutil_1.0.1.bb
 delete mode 100644 recipes/xorg-lib/libpciaccess/fix-mtrr-check.patch
 delete mode 100644 recipes/xorg-lib/libpciaccess_0.10.3.bb
 delete mode 100644 recipes/xorg-lib/libpciaccess_0.11.0.bb
 delete mode 100644 recipes/xorg-lib/libsm_1.0.2.bb
 delete mode 100644 recipes/xorg-lib/libsm_1.0.3.bb
 delete mode 100644 recipes/xorg-lib/libsm_1.1.0.bb
 delete mode 100644 recipes/xorg-lib/libwindowswm_1.0.0.bb
 delete mode 100644 recipes/xorg-lib/libx11-1.0.1/keysymdef_include.patch
 delete mode 100644 recipes/xorg-lib/libx11-1.0.1/x11_disable_makekeys.patch
 delete mode 100644 recipes/xorg-lib/libx11-1.0.3/keysymdef_include.patch
 delete mode 100644 recipes/xorg-lib/libx11-1.0.3/x11_disable_makekeys.patch
 delete mode 100644 recipes/xorg-lib/libx11-1.1.1/keysymdef_include.patch
 delete mode 100644 recipes/xorg-lib/libx11-1.1.2/keysymdef_include.patch
 delete mode 100644 recipes/xorg-lib/libx11-1.1.3/keysymdef_include.patch
 delete mode 100644 recipes/xorg-lib/libx11-1.1.4/keysymdef_include.patch
 create mode 100644 recipes/xorg-lib/libx11-1.1.5/X18NCMSstubs.diff
 create mode 100644 recipes/xorg-lib/libx11-1.1.5/dolt-fix.patch
 create mode 100644 recipes/xorg-lib/libx11-1.1.5/fix-disable-xlocale.diff
 create mode 100644 recipes/xorg-lib/libx11-1.1.5/fix-utf8-wrong-define.patch
 create mode 100644 recipes/xorg-lib/libx11-1.1.5/keysymdef_include.patch
 create mode 100644 recipes/xorg-lib/libx11-1.1.5/makekeys-update.patch
 create mode 100644 recipes/xorg-lib/libx11-1.1.5/x11_disable_makekeys.patch
 delete mode 100644 recipes/xorg-lib/libx11-1.2/x11_disable_makekeys.patch
 create mode 100644 recipes/xorg-lib/libx11-1.3.2/dolt-fix.patch
 create mode 100644 recipes/xorg-lib/libx11-1.3.2/keysymdef_include.patch
 delete mode 100644 recipes/xorg-lib/libx11-1.3.3+git/dolt-fix.patch
 delete mode 100644 recipes/xorg-lib/libx11-1.3.3+git/keysymdef_include.patch
 delete mode 100644 recipes/xorg-lib/libx11-1.3.3+git/x11_disable_makekeys.patch
 delete mode 100644 recipes/xorg-lib/libx11-1.3.3/x11_disable_makekeys.patch
 delete mode 100644 recipes/xorg-lib/libx11-1.3.4/dolt-fix.patch
 delete mode 100644 recipes/xorg-lib/libx11-1.3.4/keysymdef_include.patch
 delete mode 100644 recipes/xorg-lib/libx11-1.3.4/x11_disable_makekeys.patch
 delete mode 100644 recipes/xorg-lib/libx11/X18NCMSstubs.diff
 delete mode 100644 recipes/xorg-lib/libx11/dolt-fix.patch
 delete mode 100644 recipes/xorg-lib/libx11/fix-disable-xlocale.diff
 delete mode 100644 recipes/xorg-lib/libx11/fix-utf8-wrong-define.patch
 delete mode 100644 recipes/xorg-lib/libx11/keysymdef_include.patch
 delete mode 100644 recipes/xorg-lib/libx11/makekeys-update.patch
 delete mode 100644 recipes/xorg-lib/libx11/ruutf8.patch
 delete mode 100644 recipes/xorg-lib/libx11/x11_disable_makekeys.patch
 delete mode 100644 recipes/xorg-lib/libx11/xchar2b.patch
 delete mode 100644 recipes/xorg-lib/libx11/xim.patch
 delete mode 100644 recipes/xorg-lib/libx11_1.0.1.bb
 delete mode 100644 recipes/xorg-lib/libx11_1.0.3.bb
 delete mode 100644 recipes/xorg-lib/libx11_1.1.1.bb
 delete mode 100644 recipes/xorg-lib/libx11_1.1.2.bb
 delete mode 100644 recipes/xorg-lib/libx11_1.1.3.bb
 delete mode 100644 recipes/xorg-lib/libx11_1.1.4.bb
 delete mode 100644 recipes/xorg-lib/libx11_1.2.bb
 delete mode 100644 recipes/xorg-lib/libx11_1.3.3.bb
 delete mode 100644 recipes/xorg-lib/libx11_1.3.4.bb
 delete mode 100644 recipes/xorg-lib/libx11_git.bb
 delete mode 100644 recipes/xorg-lib/libxau_1.0.3.bb
 delete mode 100644 recipes/xorg-lib/libxau_1.0.4.bb
 delete mode 100644 recipes/xorg-lib/libxaw_1.0.3.bb
 delete mode 100644 recipes/xorg-lib/libxaw_1.0.4.bb
 delete mode 100644 recipes/xorg-lib/libxcomposite/change-include-order.patch
 delete mode 100644 recipes/xorg-lib/libxcomposite_0.3.1.bb
 delete mode 100644 recipes/xorg-lib/libxcomposite_0.4.0.bb
 delete mode 100644 recipes/xorg-lib/libxcursor_1.1.8.bb
 delete mode 100644 recipes/xorg-lib/libxcursor_1.1.9.bb
 delete mode 100644 recipes/xorg-lib/libxdamage_1.0.4.bb
 delete mode 100644 recipes/xorg-lib/libxdamage_1.1.1.bb
 delete mode 100644 recipes/xorg-lib/libxdmcp_1.0.2.bb
 delete mode 100644 recipes/xorg-lib/libxext_1.0.2.bb
 delete mode 100644 recipes/xorg-lib/libxext_1.0.3.bb
 delete mode 100644 recipes/xorg-lib/libxext_1.0.4.bb
 delete mode 100644 recipes/xorg-lib/libxext_1.0.5.bb
 delete mode 100644 recipes/xorg-lib/libxfixes_4.0.3.bb
 delete mode 100644 recipes/xorg-lib/libxfont/builtinreaddirectory-no-side-effect.patch
 delete mode 100644 recipes/xorg-lib/libxfont/no-scalable-crash.patch
 delete mode 100644 recipes/xorg-lib/libxfont_1.2.7.bb
 delete mode 100644 recipes/xorg-lib/libxfont_1.2.8.bb
 delete mode 100644 recipes/xorg-lib/libxfont_1.3.0.bb
 delete mode 100644 recipes/xorg-lib/libxfont_1.3.1.bb
 delete mode 100644 recipes/xorg-lib/libxfont_1.3.2.bb
 delete mode 100644 recipes/xorg-lib/libxfont_1.3.3.bb
 delete mode 100644 recipes/xorg-lib/libxfontcache_1.0.4.bb
 delete mode 100644 recipes/xorg-lib/libxft_2.1.12.bb
 delete mode 100644 recipes/xorg-lib/libxft_2.1.13.bb
 delete mode 100644 recipes/xorg-lib/libxi_1.0.2.bb
 delete mode 100644 recipes/xorg-lib/libxi_1.1.0.bb
 delete mode 100644 recipes/xorg-lib/libxi_1.1.2.bb
 delete mode 100644 recipes/xorg-lib/libxi_1.1.3.bb
 delete mode 100644 recipes/xorg-lib/libxi_1.2.0.bb
 delete mode 100644 recipes/xorg-lib/libxinerama_1.0.2.bb
 delete mode 100644 recipes/xorg-lib/libxinerama_1.0.3.bb
 delete mode 100644 recipes/xorg-lib/libxkbfile_1.0.4.bb
 delete mode 100644 recipes/xorg-lib/libxkbfile_1.0.5.bb
 delete mode 100644 recipes/xorg-lib/libxmu_1.0.3.bb
 delete mode 100644 recipes/xorg-lib/libxmu_1.0.4.bb
 delete mode 100644 recipes/xorg-lib/libxpm_3.5.6.bb
 delete mode 100644 recipes/xorg-lib/libxpm_3.5.7.bb
 delete mode 100644 recipes/xorg-lib/libxrandr_1.1.2.bb
 delete mode 100644 recipes/xorg-lib/libxrandr_1.2.2.bb
 delete mode 100644 recipes/xorg-lib/libxrandr_1.2.3.bb
 delete mode 100644 recipes/xorg-lib/libxrender_0.9.2.bb
 delete mode 100644 recipes/xorg-lib/libxrender_0.9.3.bb
 delete mode 100644 recipes/xorg-lib/libxrender_0.9.4.bb
 delete mode 100644 recipes/xorg-lib/libxres_1.0.3.bb
 delete mode 100644 recipes/xorg-lib/libxscrnsaver_1.1.2.bb
 delete mode 100644 recipes/xorg-lib/libxscrnsaver_1.1.3.bb
 delete mode 100644 recipes/xorg-lib/libxt/pr10970-header-fix.patch
 delete mode 100644 recipes/xorg-lib/libxt_1.0.4.bb
 delete mode 100644 recipes/xorg-lib/libxt_1.0.5.bb
 delete mode 100644 recipes/xorg-lib/libxtst_1.0.2.bb
 delete mode 100644 recipes/xorg-lib/libxtst_1.0.3.bb
 delete mode 100644 recipes/xorg-lib/libxv_1.0.3.bb
 delete mode 100644 recipes/xorg-lib/libxv_1.0.4.bb
 delete mode 100644 recipes/xorg-lib/libxvmc/drm.patch
 delete mode 100644 recipes/xorg-lib/libxvmc/true.patch
 delete mode 100644 recipes/xorg-lib/libxvmc/via.patch
 delete mode 100644 recipes/xorg-lib/libxvmc_1.0.4.bb
 delete mode 100644 recipes/xorg-lib/libxvmc_1.0.5.bb
 delete mode 100644 recipes/xorg-lib/libxxf86dga_1.0.1.bb
 delete mode 100644 recipes/xorg-lib/libxxf86dga_1.0.2.bb
 delete mode 100644 recipes/xorg-lib/libxxf86misc_1.0.1.bb
 delete mode 100644 recipes/xorg-lib/libxxf86vm_1.0.1.bb
 delete mode 100644 recipes/xorg-lib/libxxf86vm_1.0.2.bb
 create mode 100644 recipes/xorg-lib/pixman-0.12.0/pixman-arm.patch
 create mode 100644 recipes/xorg-lib/pixman-0.12.0/pixman-x888-565.patch
 create mode 100644 recipes/xorg-lib/pixman-0.13.2/pixman-0.13.2-neon1.patch
 delete mode 100644 recipes/xorg-lib/pixman-0.17.8/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
 delete mode 100644 recipes/xorg-lib/pixman-0.17.8/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
 delete mode 100644 recipes/xorg-lib/pixman-0.17.8/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
 delete mode 100644 recipes/xorg-lib/pixman-0.17.8/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
 delete mode 100644 recipes/xorg-lib/pixman-0.17.8/1-composite.patch
 delete mode 100644 recipes/xorg-lib/pixman-0.17.8/2-composite.patch
 delete mode 100644 recipes/xorg-lib/pixman-0.17.8/3-composite.patch
 delete mode 100644 recipes/xorg-lib/pixman-0.18.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
 delete mode 100644 recipes/xorg-lib/pixman-0.18.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
 delete mode 100644 recipes/xorg-lib/pixman-0.18.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
 delete mode 100644 recipes/xorg-lib/pixman-0.18.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
 delete mode 100644 recipes/xorg-lib/pixman-0.18.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
 delete mode 100644 recipes/xorg-lib/pixman-0.18.0/565-scanline.patch
 delete mode 100644 recipes/xorg-lib/pixman-0.18.0/missing-cache-preload.diff
 delete mode 100644 recipes/xorg-lib/pixman-0.9.5/dont-copy-unused-bits-to-alpha-channel.patch
 delete mode 100644 recipes/xorg-lib/pixman/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
 delete mode 100644 recipes/xorg-lib/pixman/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
 delete mode 100644 recipes/xorg-lib/pixman/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
 delete mode 100644 recipes/xorg-lib/pixman/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
 delete mode 100644 recipes/xorg-lib/pixman/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
 delete mode 100644 recipes/xorg-lib/pixman/0006-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch
 delete mode 100644 recipes/xorg-lib/pixman/calloc.patch
 delete mode 100644 recipes/xorg-lib/pixman/nearest-neighbour.patch
 delete mode 100644 recipes/xorg-lib/pixman/over-n-8-0565.patch
 delete mode 100644 recipes/xorg-lib/pixman/pixman-0.13.2-neon1.patch
 delete mode 100644 recipes/xorg-lib/pixman/pixman-28986.patch
 delete mode 100644 recipes/xorg-lib/pixman/pixman-arm.patch
 delete mode 100644 recipes/xorg-lib/pixman/pixman-x888-565.patch
 delete mode 100644 recipes/xorg-lib/pixman/prefetch.patch
 delete mode 100644 recipes/xorg-lib/pixman/remove-broken.patch
 delete mode 100644 recipes/xorg-lib/pixman/src-8888-0565.patch
 delete mode 100644 recipes/xorg-lib/pixman/tls.patch
 delete mode 100644 recipes/xorg-lib/pixman_0.10.0.bb
 delete mode 100644 recipes/xorg-lib/pixman_0.11.4.bb
 delete mode 100644 recipes/xorg-lib/pixman_0.11.8.bb
 delete mode 100644 recipes/xorg-lib/pixman_0.15.18.bb
 delete mode 100644 recipes/xorg-lib/pixman_0.15.6.bb
 delete mode 100644 recipes/xorg-lib/pixman_0.17.12.bb
 delete mode 100644 recipes/xorg-lib/pixman_0.17.8.bb
 delete mode 100644 recipes/xorg-lib/pixman_0.18.0.bb
 delete mode 100644 recipes/xorg-lib/pixman_0.9.4.bb
 delete mode 100644 recipes/xorg-lib/pixman_0.9.5.bb
 delete mode 100644 recipes/xorg-lib/pixman_git.bb
 delete mode 100644 recipes/xorg-lib/xtrans/fix-missing-includepath.patch
 delete mode 100644 recipes/xorg-lib/xtrans_1.0.3.bb
 delete mode 100644 recipes/xorg-lib/xtrans_1.0.4.bb
 delete mode 100644 recipes/xorg-lib/xtrans_1.1.bb
 delete mode 100644 recipes/xorg-lib/xtrans_1.2.1.bb
 delete mode 100644 recipes/xorg-lib/xtrans_1.2.3.bb
 delete mode 100644 recipes/xorg-lib/xtrans_1.2.bb

diff --git a/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.1.bb b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.1.bb
new file mode 100644
index 0000000..593ba34
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.1.bb
@@ -0,0 +1,12 @@
+require libx11_${PV}.bb
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://X18NCMSstubs.diff \
+            file://fix-disable-xlocale.diff \
+            file://fix-utf8-wrong-define.patch \
+            file://xim.patch \
+            file://xchar2b.patch"
+
+EXTRA_OECONF += "--without-xcb --disable-udc --enable-xcms --disable-xlocale --disable-xkb"
+
+CFLAGS += "-D_GNU_SOURCE"
diff --git a/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.2.bb b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.2.bb
new file mode 100644
index 0000000..f6291a9
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.2.bb
@@ -0,0 +1,10 @@
+require libx11_${PV}.bb
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://X18NCMSstubs.diff \
+            file://fix-disable-xlocale.diff \
+            file://fix-utf8-wrong-define.patch"
+
+EXTRA_OECONF += "--without-xcb --disable-udc --disable-xcms --disable-xlocale --disable-xkb"
+
+CFLAGS += "-D_GNU_SOURCE"
diff --git a/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.3.bb b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.3.bb
new file mode 100644
index 0000000..f6291a9
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.3.bb
@@ -0,0 +1,10 @@
+require libx11_${PV}.bb
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://X18NCMSstubs.diff \
+            file://fix-disable-xlocale.diff \
+            file://fix-utf8-wrong-define.patch"
+
+EXTRA_OECONF += "--without-xcb --disable-udc --disable-xcms --disable-xlocale --disable-xkb"
+
+CFLAGS += "-D_GNU_SOURCE"
diff --git a/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.4.bb b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.4.bb
new file mode 100644
index 0000000..f6291a9
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.4.bb
@@ -0,0 +1,10 @@
+require libx11_${PV}.bb
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://X18NCMSstubs.diff \
+            file://fix-disable-xlocale.diff \
+            file://fix-utf8-wrong-define.patch"
+
+EXTRA_OECONF += "--without-xcb --disable-udc --disable-xcms --disable-xlocale --disable-xkb"
+
+CFLAGS += "-D_GNU_SOURCE"
diff --git a/recipes/obsolete/xorg/xorg-lib/libapplewm_1.0.0.bb b/recipes/obsolete/xorg/xorg-lib/libapplewm_1.0.0.bb
new file mode 100644
index 0000000..6e746b4
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libapplewm_1.0.0.bb
@@ -0,0 +1,9 @@
+require xorg-lib-common.inc
+DEPENDS += "libxext applewmproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "48a403c45be2206ee900729ced3a0e62"
+SRC_URI[archive.sha256sum] = "ecd2ff407a418eb4ac673f48b4d0a9c5b6860a13cef7211a32fe8f3d3db0407e"
+
+XORG_PN = "libAppleWM"
diff --git a/recipes/obsolete/xorg/xorg-lib/libdmx_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libdmx_1.0.2.bb
new file mode 100644
index 0000000..7d6e025
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libdmx_1.0.2.bb
@@ -0,0 +1,8 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Distributed Multihead extension library"
+DEPENDS += "libxext dmxproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "4d866967210d06098fc9f302ed4c79b1"
+SRC_URI[archive.sha256sum] = "fa3ff31a543f7cea04762c08f48b418e75230de8b4dfdf9d2d3ae9e2af26b9c4"
diff --git a/recipes/obsolete/xorg/xorg-lib/libfontenc_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libfontenc_1.0.4.bb
new file mode 100644
index 0000000..f16cb77
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libfontenc_1.0.4.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 font encoding library"
+LICENSE = "BSD-X"
+DEPENDS += "zlib xproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "5cd16a2e51ca7b96a3081c7486ff98b9"
+SRC_URI[archive.sha256sum] = "b993aa3d17e845a12a49160b5d96993059ce919c7ba902005b910b867b6258c8"
+
+BBCLASSEXTEND = "native"
diff --git a/recipes/obsolete/xorg/xorg-lib/libfs_1.0.0.bb b/recipes/obsolete/xorg/xorg-lib/libfs_1.0.0.bb
new file mode 100644
index 0000000..7f81054
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libfs_1.0.0.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Font Services library"
+DEPENDS += "xproto fontsproto xtrans"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "dfd5de47e232db0891410bec8ee6707b"
+SRC_URI[archive.sha256sum] = "2f18f9fa0e18a3eab3c154ba820ad64b5c6ee364e147524055a553a130ccfdde"
+
+XORG_PN = "libFS"
diff --git a/recipes/obsolete/xorg/xorg-lib/libfs_1.0.1.bb b/recipes/obsolete/xorg/xorg-lib/libfs_1.0.1.bb
new file mode 100644
index 0000000..fe1f774
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libfs_1.0.1.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Font Services library"
+DEPENDS += "xproto fontsproto xtrans"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "81521249353fa33be7a4bb0062c2fbb9"
+SRC_URI[archive.sha256sum] = "9bf92ffdb51e69e07682cd1a6c0101f2a833b16b9bfa5d601491ff46a35a2cf5"
+
+XORG_PN = "libFS"
diff --git a/recipes/obsolete/xorg/xorg-lib/libice_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libice_1.0.3.bb
new file mode 100644
index 0000000..52c9de0
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libice_1.0.3.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Inter-Client Exchange library"
+DEPENDS += "xproto xtrans"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "071f96648ac25c8e87a3de11a7de2d8a"
+SRC_URI[archive.sha256sum] = "ffd46270dae30cad147d73559142a701a8ff8d0658f4abfb2341edefabb8161d"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libICE"
diff --git a/recipes/obsolete/xorg/xorg-lib/libice_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libice_1.0.4.bb
new file mode 100644
index 0000000..29303c1
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libice_1.0.4.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Inter-Client Exchange library"
+DEPENDS += "xproto xtrans"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "4ab4e67e0b8845aa201e984153087f4a"
+SRC_URI[archive.sha256sum] = "13055e2f4c645cbd135ce97a7974a5866f9ba3ed8988e686b552f55c30514f04"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libICE"
diff --git a/recipes/obsolete/xorg/xorg-lib/liblbxutil/mkg3states.patch b/recipes/obsolete/xorg/xorg-lib/liblbxutil/mkg3states.patch
new file mode 100644
index 0000000..58463db
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/liblbxutil/mkg3states.patch
@@ -0,0 +1,51 @@
+--- liblbxutil-1.0.0/configure.ac.old	2006-03-31 02:38:44.000000000 -0500
++++ liblbxutil-1.0.0/configure.ac	2006-03-31 02:39:06.000000000 -0500
+@@ -60,4 +60,5 @@ XORG_RELEASE_VERSION
+ 
+ AC_OUTPUT([Makefile
+ 	   src/Makefile
++	   src/image/Makefile
+ 	   lbxutil.pc])
+--- liblbxutil-1.0.0/src/Makefile.am.old	2006-03-31 02:38:51.000000000 -0500
++++ liblbxutil-1.0.0/src/Makefile.am	2006-03-31 02:39:49.000000000 -0500
+@@ -1,9 +1,6 @@
+ lib_LTLIBRARIES = liblbxutil.la
+ 
+-noinst_PROGRAMS = mkg3states
+-
+-mkg3states_SOURCES =				\
+-	$(srcdir)/image/mkg3states.c
++SUBDIRS = image
+ 
+ liblbxutil_la_SOURCES =				\
+ 	$(srcdir)/lbx_zlib/reqstats.h		\
+@@ -28,9 +25,8 @@ INCLUDES = @LBXUTIL_CFLAGS@ 
+ 
+ $(srcdir)/image/dfaxg42d.c: g3states.h
+ 
+-g3states.h: mkg3states
+-	-rm -f g3states.h
+-	./mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h
++g3states.h: image/mkg3states
++	./image/mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h
+ 
+ liblbxutil_la_LDFLAGS = -version-number 1:0:0
+ 
+--- liblbxutil-1.0.0/src/image/Makefile.am.old	2006-03-31 02:41:19.000000000 -0500
++++ liblbxutil-1.0.0/src/image/Makefile.am	2006-03-31 02:40:40.000000000 -0500
+@@ -0,0 +1,15 @@
++# evil hack
++CFLAGS=$(CFLAGS_FOR_BUILD)
++CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
++LDFLAGS=$(LDFLAGS_FOR_BUILD)
++
++CC=$(CC_FOR_BUILD)
++LIBTOOL = @LIBTOOL@ --tag=CC
++
++noinst_PROGRAMS = mkg3states
++
++mkg3states_SOURCES =				\
++	mkg3states.c
++
++mkg3states_CFLAGS=$(CFLAGS_FOR_BUILD)
++mkg3states_LDFLAGS=$(LDFLAGS_FOR_BUILD)
diff --git a/recipes/obsolete/xorg/xorg-lib/liblbxutil_1.0.1.bb b/recipes/obsolete/xorg/xorg-lib/liblbxutil_1.0.1.bb
new file mode 100644
index 0000000..f51d5ab
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/liblbxutil_1.0.1.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+DESCRIPTION = "XFIXES Extension"
+DEPENDS += " xextproto xproto zlib"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://mkg3states.patch"
+SRC_URI[archive.md5sum] = "b73cbd5bc3cd268722a624a5f1318fde"
+SRC_URI[archive.sha256sum] = "94c31c7090106d3a95e2a7c083961efca1321b970118fe103ab06e5d927b7258"
+
+export CC_FOR_BUILD = "gcc"
diff --git a/recipes/obsolete/xorg/xorg-lib/libpciaccess/fix-mtrr-check.patch b/recipes/obsolete/xorg/xorg-lib/libpciaccess/fix-mtrr-check.patch
new file mode 100644
index 0000000..e2d9f62
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libpciaccess/fix-mtrr-check.patch
@@ -0,0 +1,19 @@
+---
+ configure.ac |    2 --
+ 1 file changed, 2 deletions(-)
+
+--- libpciaccess-0.10.3.orig/configure.ac
++++ libpciaccess-0.10.3/configure.ac
+@@ -89,12 +89,10 @@ esac
+ AM_CONDITIONAL(LINUX, [test "x$linux" = xyes])
+ AM_CONDITIONAL(FREEBSD, [test "x$freebsd" = xyes])
+ AM_CONDITIONAL(OPENBSD, [test "x$openbsd" = xyes])
+ AM_CONDITIONAL(SOLARIS, [test "x$solaris" = xyes])
+ 
+-AC_CHECK_FILE([/usr/include/asm/mtrr.h],
+-              [have_mtrr_h="yes"], [have_mtrr_h="no"])
+ if test "x$have_mtrr_h" = xyes; then
+     AC_DEFINE(HAVE_MTRR, 1, [Use MTRRs on mappings])
+ fi
+ 
+ AC_SUBST(PCIACCESS_CFLAGS)
diff --git a/recipes/obsolete/xorg/xorg-lib/libpciaccess_0.10.3.bb b/recipes/obsolete/xorg/xorg-lib/libpciaccess_0.10.3.bb
new file mode 100644
index 0000000..c594dc0
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libpciaccess_0.10.3.bb
@@ -0,0 +1,7 @@
+require xorg-lib-common.inc
+DEPENDS += "xproto virtual/libx11"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://fix-mtrr-check.patch"
+SRC_URI[archive.md5sum] = "6d5468debf76fac84576ca26c9535821"
+SRC_URI[archive.sha256sum] = "2f609ad3b5688ae66dcd18d7cdd1fc6b68531a2a85f89798f6cfb5eda6d680dc"
diff --git a/recipes/obsolete/xorg/xorg-lib/libpciaccess_0.11.0.bb b/recipes/obsolete/xorg/xorg-lib/libpciaccess_0.11.0.bb
new file mode 100644
index 0000000..aca0a2f
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libpciaccess_0.11.0.bb
@@ -0,0 +1,6 @@
+require xorg-lib-common.inc
+DEPENDS += "xproto virtual/libx11"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "686320dcec98daad0bdfb8894d4f2a2b"
+SRC_URI[archive.sha256sum] = "6e38be12b656c83c66a6fd8ba56c041d8188218278219c88ee635242ec1c7dab"
diff --git a/recipes/obsolete/xorg/xorg-lib/libsm_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libsm_1.0.2.bb
new file mode 100644
index 0000000..ee2ff16
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libsm_1.0.2.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "Session management library"
+PRIORITY = "optional"
+DEPENDS += " libice xproto xtrans"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "a254771550c01db372e88d1a1dc2e13a"
+SRC_URI[archive.sha256sum] = "e290614797bd626c1b92bac8f83e8954b99bd66e6ecdaa1e935e176df099eba8"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libSM"
diff --git a/recipes/obsolete/xorg/xorg-lib/libsm_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libsm_1.0.3.bb
new file mode 100644
index 0000000..8ca90fe
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libsm_1.0.3.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Session management library"
+DEPENDS += "libice xproto xtrans"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "184cbf502b3cd5d7ba5f9d1290a99606"
+SRC_URI[archive.sha256sum] = "57f42d3557effe452cd348362977ff90fa61009885c23b3aca8cb0219b5dec04"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libSM"
diff --git a/recipes/obsolete/xorg/xorg-lib/libsm_1.1.0.bb b/recipes/obsolete/xorg/xorg-lib/libsm_1.1.0.bb
new file mode 100644
index 0000000..1b51b89
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libsm_1.1.0.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Session management library"
+DEPENDS += "libice xproto xtrans util-linux-ng"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "05a04c2b6382fb0054f6c70494e22733"
+SRC_URI[archive.sha256sum] = "7536ac382e1ff82014d3a0defba0c61b3a30984f4e5bc7707960d6debcb92a82"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libSM"
diff --git a/recipes/obsolete/xorg/xorg-lib/libwindowswm_1.0.0.bb b/recipes/obsolete/xorg/xorg-lib/libwindowswm_1.0.0.bb
new file mode 100644
index 0000000..35457cb
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libwindowswm_1.0.0.bb
@@ -0,0 +1,9 @@
+require xorg-lib-common.inc
+DEPENDS += "libxext windowswmproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "337b379fd00a67345b083100c4e6ba95"
+SRC_URI[archive.sha256sum] = "6ad87266173d21ba7e0e4506db0c094769fd58c3f0b741b37f30c297deec166a"
+
+XORG_PN = "libWindowsWM"
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.0.1/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.1/keysymdef_include.patch
new file mode 100644
index 0000000..5653088
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.1/keysymdef_include.patch
@@ -0,0 +1,62 @@
+---
+ configure.ac |   44 ++++++++++++++++++++++++--------------------
+ 1 file changed, 24 insertions(+), 20 deletions(-)
+
+Index: libX11-1.1.2/configure.ac
+===================================================================
+--- libX11-1.1.2.orig/configure.ac	2008-01-02 15:30:47.000000000 +0000
++++ libX11-1.1.2/configure.ac	2008-01-02 15:47:25.000000000 +0000
+@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL,
+ #
+ KEYSYMDEF=""
+ AC_MSG_CHECKING([keysymdef.h])
+-for flag in $XPROTO_CFLAGS -I/usr/include; do
+-	case "$KEYSYMDEF" in
+-	"")
+-		case "$flag" in
+-		*-I*)
+-			dir=`echo "$flag" | sed 's/ *-I//'`
+-			file="$dir/X11/keysymdef.h"
+-			if test -f "$file"; then
+-				KEYSYMDEF="$file"
+-			fi
++AC_ARG_WITH(keysymdef,
++	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),  
++	KEYSYMDEF=$withval, KEYSYMDEF="")
++
++if test x$KEYSYMDEF = x; then
++	for flag in $XPROTO_CFLAGS -I/usr/include; do
++		case "$KEYSYMDEF" in
++		"")
++			case "$flag" in
++			*-I*)
++				dir=`echo "$flag" | sed 's/ *-I//'`
++				file="$dir/X11/keysymdef.h"
++				if test -f "$file"; then
++					KEYSYMDEF="$file"
++				fi
++				;;
++			esac
+ 			;;
+ 		esac
+-		;;
+-	esac
+-done
+-case "$KEYSYMDEF" in
+-"")
+-	AC_MSG_ERROR([Cannot find keysymdef.h])
+-	;;
+-*)
++	done
++fi
++
++if test -f "$KEYSYMDEF"; then
+ 	AC_MSG_RESULT([$KEYSYMDEF])
+-        ;;
+-esac
++else
++	AC_MSG_ERROR([Cannot find keysymdef.h])
++fi
+ AC_SUBST(KEYSYMDEF)
+ 
+ AC_ARG_ENABLE(udc,
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.0.1/x11_disable_makekeys.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.1/x11_disable_makekeys.patch
new file mode 100644
index 0000000..ad8b6fc
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.1/x11_disable_makekeys.patch
@@ -0,0 +1,15 @@
+Index: libX11-1.0.1/src/util/Makefile.am
+===================================================================
+--- libX11-1.0.1.old/src/util/Makefile.am
++++ libX11-1.0.1/src/util/Makefile.am
+@@ -1,10 +1 @@
+-# $XdotOrg: lib/X11/src/util/Makefile.am,v 1.4 2006-02-19 02:14:12 jamey Exp $
+-
+-noinst_PROGRAMS=makekeys
+-
+-makekeys_CFLAGS=$(X11_CFLAGS)
+-
+-#override CC = gcc
+-LINK = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-
+ EXTRA_DIST = mkks.sh
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.0.3/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.3/keysymdef_include.patch
new file mode 100644
index 0000000..5653088
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.3/keysymdef_include.patch
@@ -0,0 +1,62 @@
+---
+ configure.ac |   44 ++++++++++++++++++++++++--------------------
+ 1 file changed, 24 insertions(+), 20 deletions(-)
+
+Index: libX11-1.1.2/configure.ac
+===================================================================
+--- libX11-1.1.2.orig/configure.ac	2008-01-02 15:30:47.000000000 +0000
++++ libX11-1.1.2/configure.ac	2008-01-02 15:47:25.000000000 +0000
+@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL,
+ #
+ KEYSYMDEF=""
+ AC_MSG_CHECKING([keysymdef.h])
+-for flag in $XPROTO_CFLAGS -I/usr/include; do
+-	case "$KEYSYMDEF" in
+-	"")
+-		case "$flag" in
+-		*-I*)
+-			dir=`echo "$flag" | sed 's/ *-I//'`
+-			file="$dir/X11/keysymdef.h"
+-			if test -f "$file"; then
+-				KEYSYMDEF="$file"
+-			fi
++AC_ARG_WITH(keysymdef,
++	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),  
++	KEYSYMDEF=$withval, KEYSYMDEF="")
++
++if test x$KEYSYMDEF = x; then
++	for flag in $XPROTO_CFLAGS -I/usr/include; do
++		case "$KEYSYMDEF" in
++		"")
++			case "$flag" in
++			*-I*)
++				dir=`echo "$flag" | sed 's/ *-I//'`
++				file="$dir/X11/keysymdef.h"
++				if test -f "$file"; then
++					KEYSYMDEF="$file"
++				fi
++				;;
++			esac
+ 			;;
+ 		esac
+-		;;
+-	esac
+-done
+-case "$KEYSYMDEF" in
+-"")
+-	AC_MSG_ERROR([Cannot find keysymdef.h])
+-	;;
+-*)
++	done
++fi
++
++if test -f "$KEYSYMDEF"; then
+ 	AC_MSG_RESULT([$KEYSYMDEF])
+-        ;;
+-esac
++else
++	AC_MSG_ERROR([Cannot find keysymdef.h])
++fi
+ AC_SUBST(KEYSYMDEF)
+ 
+ AC_ARG_ENABLE(udc,
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.0.3/x11_disable_makekeys.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.3/x11_disable_makekeys.patch
new file mode 100644
index 0000000..ad8b6fc
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.3/x11_disable_makekeys.patch
@@ -0,0 +1,15 @@
+Index: libX11-1.0.1/src/util/Makefile.am
+===================================================================
+--- libX11-1.0.1.old/src/util/Makefile.am
++++ libX11-1.0.1/src/util/Makefile.am
+@@ -1,10 +1 @@
+-# $XdotOrg: lib/X11/src/util/Makefile.am,v 1.4 2006-02-19 02:14:12 jamey Exp $
+-
+-noinst_PROGRAMS=makekeys
+-
+-makekeys_CFLAGS=$(X11_CFLAGS)
+-
+-#override CC = gcc
+-LINK = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-
+ EXTRA_DIST = mkks.sh
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.1.1/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.1/keysymdef_include.patch
new file mode 100644
index 0000000..5653088
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.1/keysymdef_include.patch
@@ -0,0 +1,62 @@
+---
+ configure.ac |   44 ++++++++++++++++++++++++--------------------
+ 1 file changed, 24 insertions(+), 20 deletions(-)
+
+Index: libX11-1.1.2/configure.ac
+===================================================================
+--- libX11-1.1.2.orig/configure.ac	2008-01-02 15:30:47.000000000 +0000
++++ libX11-1.1.2/configure.ac	2008-01-02 15:47:25.000000000 +0000
+@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL,
+ #
+ KEYSYMDEF=""
+ AC_MSG_CHECKING([keysymdef.h])
+-for flag in $XPROTO_CFLAGS -I/usr/include; do
+-	case "$KEYSYMDEF" in
+-	"")
+-		case "$flag" in
+-		*-I*)
+-			dir=`echo "$flag" | sed 's/ *-I//'`
+-			file="$dir/X11/keysymdef.h"
+-			if test -f "$file"; then
+-				KEYSYMDEF="$file"
+-			fi
++AC_ARG_WITH(keysymdef,
++	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),  
++	KEYSYMDEF=$withval, KEYSYMDEF="")
++
++if test x$KEYSYMDEF = x; then
++	for flag in $XPROTO_CFLAGS -I/usr/include; do
++		case "$KEYSYMDEF" in
++		"")
++			case "$flag" in
++			*-I*)
++				dir=`echo "$flag" | sed 's/ *-I//'`
++				file="$dir/X11/keysymdef.h"
++				if test -f "$file"; then
++					KEYSYMDEF="$file"
++				fi
++				;;
++			esac
+ 			;;
+ 		esac
+-		;;
+-	esac
+-done
+-case "$KEYSYMDEF" in
+-"")
+-	AC_MSG_ERROR([Cannot find keysymdef.h])
+-	;;
+-*)
++	done
++fi
++
++if test -f "$KEYSYMDEF"; then
+ 	AC_MSG_RESULT([$KEYSYMDEF])
+-        ;;
+-esac
++else
++	AC_MSG_ERROR([Cannot find keysymdef.h])
++fi
+ AC_SUBST(KEYSYMDEF)
+ 
+ AC_ARG_ENABLE(udc,
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.1.2/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.2/keysymdef_include.patch
new file mode 100644
index 0000000..5653088
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.2/keysymdef_include.patch
@@ -0,0 +1,62 @@
+---
+ configure.ac |   44 ++++++++++++++++++++++++--------------------
+ 1 file changed, 24 insertions(+), 20 deletions(-)
+
+Index: libX11-1.1.2/configure.ac
+===================================================================
+--- libX11-1.1.2.orig/configure.ac	2008-01-02 15:30:47.000000000 +0000
++++ libX11-1.1.2/configure.ac	2008-01-02 15:47:25.000000000 +0000
+@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL,
+ #
+ KEYSYMDEF=""
+ AC_MSG_CHECKING([keysymdef.h])
+-for flag in $XPROTO_CFLAGS -I/usr/include; do
+-	case "$KEYSYMDEF" in
+-	"")
+-		case "$flag" in
+-		*-I*)
+-			dir=`echo "$flag" | sed 's/ *-I//'`
+-			file="$dir/X11/keysymdef.h"
+-			if test -f "$file"; then
+-				KEYSYMDEF="$file"
+-			fi
++AC_ARG_WITH(keysymdef,
++	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),  
++	KEYSYMDEF=$withval, KEYSYMDEF="")
++
++if test x$KEYSYMDEF = x; then
++	for flag in $XPROTO_CFLAGS -I/usr/include; do
++		case "$KEYSYMDEF" in
++		"")
++			case "$flag" in
++			*-I*)
++				dir=`echo "$flag" | sed 's/ *-I//'`
++				file="$dir/X11/keysymdef.h"
++				if test -f "$file"; then
++					KEYSYMDEF="$file"
++				fi
++				;;
++			esac
+ 			;;
+ 		esac
+-		;;
+-	esac
+-done
+-case "$KEYSYMDEF" in
+-"")
+-	AC_MSG_ERROR([Cannot find keysymdef.h])
+-	;;
+-*)
++	done
++fi
++
++if test -f "$KEYSYMDEF"; then
+ 	AC_MSG_RESULT([$KEYSYMDEF])
+-        ;;
+-esac
++else
++	AC_MSG_ERROR([Cannot find keysymdef.h])
++fi
+ AC_SUBST(KEYSYMDEF)
+ 
+ AC_ARG_ENABLE(udc,
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.1.3/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.3/keysymdef_include.patch
new file mode 100644
index 0000000..5653088
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.3/keysymdef_include.patch
@@ -0,0 +1,62 @@
+---
+ configure.ac |   44 ++++++++++++++++++++++++--------------------
+ 1 file changed, 24 insertions(+), 20 deletions(-)
+
+Index: libX11-1.1.2/configure.ac
+===================================================================
+--- libX11-1.1.2.orig/configure.ac	2008-01-02 15:30:47.000000000 +0000
++++ libX11-1.1.2/configure.ac	2008-01-02 15:47:25.000000000 +0000
+@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL,
+ #
+ KEYSYMDEF=""
+ AC_MSG_CHECKING([keysymdef.h])
+-for flag in $XPROTO_CFLAGS -I/usr/include; do
+-	case "$KEYSYMDEF" in
+-	"")
+-		case "$flag" in
+-		*-I*)
+-			dir=`echo "$flag" | sed 's/ *-I//'`
+-			file="$dir/X11/keysymdef.h"
+-			if test -f "$file"; then
+-				KEYSYMDEF="$file"
+-			fi
++AC_ARG_WITH(keysymdef,
++	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),  
++	KEYSYMDEF=$withval, KEYSYMDEF="")
++
++if test x$KEYSYMDEF = x; then
++	for flag in $XPROTO_CFLAGS -I/usr/include; do
++		case "$KEYSYMDEF" in
++		"")
++			case "$flag" in
++			*-I*)
++				dir=`echo "$flag" | sed 's/ *-I//'`
++				file="$dir/X11/keysymdef.h"
++				if test -f "$file"; then
++					KEYSYMDEF="$file"
++				fi
++				;;
++			esac
+ 			;;
+ 		esac
+-		;;
+-	esac
+-done
+-case "$KEYSYMDEF" in
+-"")
+-	AC_MSG_ERROR([Cannot find keysymdef.h])
+-	;;
+-*)
++	done
++fi
++
++if test -f "$KEYSYMDEF"; then
+ 	AC_MSG_RESULT([$KEYSYMDEF])
+-        ;;
+-esac
++else
++	AC_MSG_ERROR([Cannot find keysymdef.h])
++fi
+ AC_SUBST(KEYSYMDEF)
+ 
+ AC_ARG_ENABLE(udc,
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.1.4/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.4/keysymdef_include.patch
new file mode 100644
index 0000000..5653088
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.4/keysymdef_include.patch
@@ -0,0 +1,62 @@
+---
+ configure.ac |   44 ++++++++++++++++++++++++--------------------
+ 1 file changed, 24 insertions(+), 20 deletions(-)
+
+Index: libX11-1.1.2/configure.ac
+===================================================================
+--- libX11-1.1.2.orig/configure.ac	2008-01-02 15:30:47.000000000 +0000
++++ libX11-1.1.2/configure.ac	2008-01-02 15:47:25.000000000 +0000
+@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL,
+ #
+ KEYSYMDEF=""
+ AC_MSG_CHECKING([keysymdef.h])
+-for flag in $XPROTO_CFLAGS -I/usr/include; do
+-	case "$KEYSYMDEF" in
+-	"")
+-		case "$flag" in
+-		*-I*)
+-			dir=`echo "$flag" | sed 's/ *-I//'`
+-			file="$dir/X11/keysymdef.h"
+-			if test -f "$file"; then
+-				KEYSYMDEF="$file"
+-			fi
++AC_ARG_WITH(keysymdef,
++	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),  
++	KEYSYMDEF=$withval, KEYSYMDEF="")
++
++if test x$KEYSYMDEF = x; then
++	for flag in $XPROTO_CFLAGS -I/usr/include; do
++		case "$KEYSYMDEF" in
++		"")
++			case "$flag" in
++			*-I*)
++				dir=`echo "$flag" | sed 's/ *-I//'`
++				file="$dir/X11/keysymdef.h"
++				if test -f "$file"; then
++					KEYSYMDEF="$file"
++				fi
++				;;
++			esac
+ 			;;
+ 		esac
+-		;;
+-	esac
+-done
+-case "$KEYSYMDEF" in
+-"")
+-	AC_MSG_ERROR([Cannot find keysymdef.h])
+-	;;
+-*)
++	done
++fi
++
++if test -f "$KEYSYMDEF"; then
+ 	AC_MSG_RESULT([$KEYSYMDEF])
+-        ;;
+-esac
++else
++	AC_MSG_ERROR([Cannot find keysymdef.h])
++fi
+ AC_SUBST(KEYSYMDEF)
+ 
+ AC_ARG_ENABLE(udc,
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.2/x11_disable_makekeys.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.2/x11_disable_makekeys.patch
new file mode 100644
index 0000000..9e9e75e
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.2/x11_disable_makekeys.patch
@@ -0,0 +1,23 @@
+--- /tmp/Makefile.am	2009-05-27 22:19:39.000000000 +0200
++++ libX11-1.2/src/util/Makefile.am	2009-05-27 22:21:31.000000000 +0200
+@@ -1,20 +1 @@
+-# $XdotOrg: lib/X11/src/util/Makefile.am,v 1.4 2006-02-19 02:14:12 jamey Exp $
+-
+-noinst_PROGRAMS=makekeys
+-
+-makekeys_CFLAGS=$(X11_CFLAGS)
+-
+-CC = @CC_FOR_BUILD@
+-
+ EXTRA_DIST = mkks.sh
+-
+-if LINT
+-# Check source code with tools like lint & sparse
+-
+-ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+-		$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
+-
+-lint:
+-	$(LINT) $(ALL_LINT_FLAGS) makekeys.c
+-
+-endif LINT
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/dolt-fix.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/dolt-fix.patch
new file mode 100644
index 0000000..7e96075
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/dolt-fix.patch
@@ -0,0 +1,22 @@
+Index: libX11-1.3.4/m4/dolt.m4
+===================================================================
+--- libX11-1.3.4/m4/dolt.m4
++++ libX11-1.3.4/m4/dolt.m4
+@@ -155,7 +155,7 @@ dnl without '=', because automake does n
+     cat <<__DOLTLIBTOOL__EOF__ > doltlibtool
+ #!$DOLT_BASH
+ __DOLTLIBTOOL__EOF__
+-    cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool
++    cat <<'__DOLTLIBTOOL__EOF__' | sed -e "s/@host_alias@/$host_alias/g" >>doltlibtool
+ top_builddir_slash="${0%%doltlibtool}"
+ : ${top_builddir_slash:=./}
+ args=()
+@@ -171,7 +171,7 @@ done
+ if $modeok && $tagok ; then
+     . ${top_builddir_slash}doltcompile "${args@<:@@@:>@}"
+ else
+-    exec ${top_builddir_slash}libtool "$[]@"
++    exec ${top_builddir_slash}@host_alias at -libtool "$[]@"
+ fi
+ __DOLTLIBTOOL__EOF__
+ 
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/keysymdef_include.patch
new file mode 100644
index 0000000..07487b6
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/keysymdef_include.patch
@@ -0,0 +1,29 @@
+Index: libX11-1.1.5/configure.ac
+===================================================================
+--- libX11-1.1.5.orig/configure.ac	2008-10-28 11:36:49.000000000 +0000
++++ libX11-1.1.5/configure.ac	2008-10-28 11:40:05.000000000 +0000
+@@ -221,13 +221,21 @@
+ # Find keysymdef.h
+ #
+ AC_MSG_CHECKING([keysymdef.h])
+-dir=`pkg-config --variable=includedir xproto`
+-KEYSYMDEF="$dir/X11/keysymdef.h"
++AC_ARG_WITH(keysymdef,
++	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),
++	KEYSYMDEF=$withval, KEYSYMDEF="")
++
++if test x$KEYSYMDEF = x; then
++	dir=`pkg-config --variable=includedir xproto`
++	KEYSYMDEF="$dir/X11/keysymdef.h"
++fi
++
+ if test -f "$KEYSYMDEF"; then
+-        AC_MSG_RESULT([$KEYSYMDEF])
++	AC_MSG_RESULT([$KEYSYMDEF])
+ else
+ 	AC_MSG_ERROR([Cannot find keysymdef.h])
+ fi
++
+ AC_SUBST(KEYSYMDEF)
+ 
+ AM_CONDITIONAL(UDC, test xfalse = xtrue)
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/x11_disable_makekeys.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/x11_disable_makekeys.patch
new file mode 100644
index 0000000..0739632
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/x11_disable_makekeys.patch
@@ -0,0 +1,26 @@
+Index: git/src/util/Makefile.am
+===================================================================
+--- git.orig/src/util/Makefile.am
++++ git/src/util/Makefile.am
+@@ -1,21 +1 @@
+-
+-noinst_PROGRAMS=makekeys
+-
+-makekeys_CFLAGS = \
+-	$(X11_CFLAGS) \
+-	$(CWARNFLAGS)
+-
+-CC = @CC_FOR_BUILD@
+-
+ EXTRA_DIST = mkks.sh
+-
+-if LINT
+-# Check source code with tools like lint & sparse
+-
+-ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+-		$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
+-
+-lint:
+-	$(LINT) $(ALL_LINT_FLAGS) makekeys.c
+-
+-endif LINT
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3/x11_disable_makekeys.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3/x11_disable_makekeys.patch
new file mode 100644
index 0000000..5d0a24c
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3/x11_disable_makekeys.patch
@@ -0,0 +1,23 @@
+diff -uNr libX11-1.3.3.orig/src/util/Makefile.am libX11-1.3.3/src/util/Makefile.am
+--- libX11-1.3.3.orig/src/util/Makefile.am	2010-01-15 02:11:36.000000000 +0100
++++ libX11-1.3.3/src/util/Makefile.am	2010-01-18 14:48:27.000000000 +0100
+@@ -1,19 +1 @@
+-
+-noinst_PROGRAMS=makekeys
+-
+-makekeys_CFLAGS=$(X11_CFLAGS)
+-
+-CC = @CC_FOR_BUILD@
+-
+ EXTRA_DIST = mkks.sh
+-
+-if LINT
+-# Check source code with tools like lint & sparse
+-
+-ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+-		$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
+-
+-lint:
+-	$(LINT) $(ALL_LINT_FLAGS) makekeys.c
+-
+-endif LINT
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/dolt-fix.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/dolt-fix.patch
new file mode 100644
index 0000000..7e96075
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/dolt-fix.patch
@@ -0,0 +1,22 @@
+Index: libX11-1.3.4/m4/dolt.m4
+===================================================================
+--- libX11-1.3.4/m4/dolt.m4
++++ libX11-1.3.4/m4/dolt.m4
+@@ -155,7 +155,7 @@ dnl without '=', because automake does n
+     cat <<__DOLTLIBTOOL__EOF__ > doltlibtool
+ #!$DOLT_BASH
+ __DOLTLIBTOOL__EOF__
+-    cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool
++    cat <<'__DOLTLIBTOOL__EOF__' | sed -e "s/@host_alias@/$host_alias/g" >>doltlibtool
+ top_builddir_slash="${0%%doltlibtool}"
+ : ${top_builddir_slash:=./}
+ args=()
+@@ -171,7 +171,7 @@ done
+ if $modeok && $tagok ; then
+     . ${top_builddir_slash}doltcompile "${args@<:@@@:>@}"
+ else
+-    exec ${top_builddir_slash}libtool "$[]@"
++    exec ${top_builddir_slash}@host_alias at -libtool "$[]@"
+ fi
+ __DOLTLIBTOOL__EOF__
+ 
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/keysymdef_include.patch
new file mode 100644
index 0000000..0cab165
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/keysymdef_include.patch
@@ -0,0 +1,21 @@
+Index: libX11-1.3.4/configure.ac
+===================================================================
+--- libX11-1.3.4.orig/configure.ac
++++ libX11-1.3.4/configure.ac
+@@ -355,8 +355,14 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL,
+ # Find keysymdef.h
+ #
+ AC_MSG_CHECKING([keysymdef.h])
+-dir=`$PKG_CONFIG --variable=includedir xproto`
+-KEYSYMDEF="$dir/X11/keysymdef.h"
++AC_ARG_WITH(keysymdef,
++        AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),
++        KEYSYMDEF=$withval, KEYSYMDEF="")
++
++if test x$KEYSYMDEF = x; then
++        dir=`${PKG_CONFIG} --variable=includedir xproto`
++        KEYSYMDEF="$dir/X11/keysymdef.h"
++fi
+ if test -f "$KEYSYMDEF"; then
+         AC_MSG_RESULT([$KEYSYMDEF])
+ else
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/x11_disable_makekeys.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/x11_disable_makekeys.patch
new file mode 100644
index 0000000..9763313
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/x11_disable_makekeys.patch
@@ -0,0 +1,29 @@
+Index: libX11-1.3.4/src/util/Makefile.am
+===================================================================
+--- libX11-1.3.4.orig/src/util/Makefile.am
++++ libX11-1.3.4/src/util/Makefile.am
+@@ -1,24 +1 @@
+-
+-noinst_PROGRAMS=makekeys
+-
+-makekeys_CFLAGS = \
+-	$(X11_CFLAGS) \
+-	$(CWARNFLAGS)
+-
+-CC = @CC_FOR_BUILD@
+-CPPFLAGS = @CPPFLAGS_FOR_BUILD@
+-CFLAGS = @CFLAGS_FOR_BUILD@
+-LDFLAGS = @LDFLAGS_FOR_BUILD@
+-
+ EXTRA_DIST = mkks.sh
+-
+-if LINT
+-# Check source code with tools like lint & sparse
+-
+-ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+-		$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
+-
+-lint:
+-	$(LINT) $(ALL_LINT_FLAGS) makekeys.c
+-
+-endif LINT
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11/ruutf8.patch b/recipes/obsolete/xorg/xorg-lib/libx11/ruutf8.patch
new file mode 100644
index 0000000..0822b30
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11/ruutf8.patch
@@ -0,0 +1,12 @@
+diff --git a/nls/locale.alias.pre b/nls/locale.alias.pre
+index a74ca75..ff5bc3f 100644
+--- a/nls/locale.alias.pre
++++ b/nls/locale.alias.pre
+@@ -898,6 +898,7 @@ ru_RU.cp1251:					ru_RU.CP1251
+ ru_RU.microsoftcp1251:				ru_RU.CP1251
+ ru_RU.microsoft-cp1251:				ru_RU.CP1251
+ ru_RU.MICROSOFT-CP1251:				ru_RU.CP1251
++ru_RU.utf8:					ru_RU.UTF-8
+ #if defined(INCLUDE_ru_SU)
+ XCOMM ru_SU is redundant now
+ ru_SU:						ru_RU.KOI8-R
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11/xchar2b.patch b/recipes/obsolete/xorg/xorg-lib/libx11/xchar2b.patch
new file mode 100644
index 0000000..31da58f
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11/xchar2b.patch
@@ -0,0 +1,13 @@
+http://www.koka-in.org/~kensyu/zaurus/diary/20030618.html
+
+--- /tmp/Xlib.h	2006-12-01 14:40:27.000000000 +0100
++++ libX11-X11R7.1-1.0.1/include/X11/Xlib.h	2006-12-01 14:40:56.948254000 +0100
+@@ -1067,7 +1067,7 @@
+ typedef struct {		/* normal 16 bit characters are two bytes */
+     unsigned char byte1;
+     unsigned char byte2;
+-} XChar2b;
++} __attribute__ ((packed)) XChar2b;
+ 
+ typedef struct {
+     XChar2b *chars;		/* two byte characters */
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11/xim.patch b/recipes/obsolete/xorg/xorg-lib/libx11/xim.patch
new file mode 100644
index 0000000..0eab197
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11/xim.patch
@@ -0,0 +1,55 @@
+--- libX11-6.2.1/src/X18NCMSstubs.c	2003-12-04 22:47:47.000000000 +0000
++++ libX11-6.2.1/src/X18NCMSstubs.c-new	2005-12-09 12:09:03.000000000 +0000
+@@ -90,6 +90,52 @@
+   return;
+ }
+ 
++XIM
++XOpenIM (
++    Display* display,
++    struct _XrmHashBucketRec* rdb,
++    char* res_name,
++    char* res_class)
++{
++  return (XIM) NULL;
++}
++
++Status
++XCloseIM ( XIM im )
++{
++  return NULL;
++}
++
++XIC
++XCreateIC ( XIM im, ...)
++{
++  return NULL;
++}
++
++void
++XDestroyIC ( XIC ic )
++{
++  return;
++}
++
++int
++XmbLookupString (
++    XIC ic,
++    XKeyPressedEvent* ev,
++    char* buffer,
++    int nbytes,
++    KeySym* keysym,
++    Status* status)
++{
++  return XLookupNone;
++}
++
++char *
++XGetICValues( XIC ic, ...)
++{
++  return (char *) NULL;
++}
++
+ XPointer
+ _XimGetLocaleCode ( _Xconst char* encoding_name )
+ {
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.0.1.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.0.1.bb
new file mode 100644
index 0000000..734a31d
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.0.1.bb
@@ -0,0 +1,10 @@
+require libx11.inc
+LICENSE = "XFree86"
+DEPENDS = "${COMMON_DEPENDS}"
+PR = "${INC_PR}.0"
+
+SRC_URI += " file://ruutf8.patch"
+SRC_URI[archive.md5sum] = "58f0537f21183e27149cf906a1b6bef9"
+SRC_URI[archive.sha256sum] = "f99e4ce6d8e3b8833957978fe22223897b0e636c83580f2b07eff0388eb75294"
+
+EXTRA_OECONF += " --without-xcb"
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.0.3.bb
new file mode 100644
index 0000000..40cbeb5
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.0.3.bb
@@ -0,0 +1,10 @@
+require libx11.inc
+LICENSE = "XFree86"
+DEPENDS = "${COMMON_DEPENDS}"
+PR = "${INC_PR}.0"
+
+SRC_URI += " file://ruutf8.patch"
+SRC_URI[archive.md5sum] = "60b787a812c92d33f71860e4e19cb59d"
+SRC_URI[archive.sha256sum] = "fb42f2400c3709a0c2c17f27cc4a902c191ebd6228c70698891bf3a13ea5b3ac"
+
+EXTRA_OECONF += " --without-xcb"
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.1.1.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.1.bb
new file mode 100644
index 0000000..368dd7b
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.1.bb
@@ -0,0 +1,9 @@
+require libx11.inc
+DEPENDS = "${COMMON_DEPENDS}"
+PR = "${INC_PR}.0"
+
+SRC_URI += " file://ruutf8.patch"
+SRC_URI[archive.md5sum] = "848b80f77b20ae1fa5c882bbfa531ebc"
+SRC_URI[archive.sha256sum] = "5359db57793430429786b648ac570d4ab205797306e049bf1e8675250af21541"
+
+EXTRA_OECONF += " --without-xcb"
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.1.2.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.2.bb
new file mode 100644
index 0000000..60093c1
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.2.bb
@@ -0,0 +1,8 @@
+require libx11.inc
+DEPENDS = "${COMMON_DEPENDS}"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "710bf38a9477a5a1b235bc94f1d0593c"
+SRC_URI[archive.sha256sum] = "b77e4fd2bbd4092e7e78d0964760ad8ab160caccd4bc6d7d0c87a23febaea85e"
+
+EXTRA_OECONF += " --without-xcb"
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.1.3.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.3.bb
new file mode 100644
index 0000000..d6aa199
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.3.bb
@@ -0,0 +1,8 @@
+require libx11.inc
+DEPENDS = "${COMMON_DEPENDS}"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "4d43d3e472c552d2f191ecdd4e75112c"
+SRC_URI[archive.sha256sum] = "4a2f566e2ea5dd955c875cb8fa9c18dd725324fc5cf4e23c803442e31ab8917a"
+
+EXTRA_OECONF += " --without-xcb"
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.1.4.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.4.bb
new file mode 100644
index 0000000..3eeeece
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.4.bb
@@ -0,0 +1,8 @@
+require libx11.inc
+DEPENDS = "${COMMON_DEPENDS}"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "1469a5a8aa8d288dce6f4c45d2f68dc3"
+SRC_URI[archive.sha256sum] = "bdbd6d239435c1736f5c532b12e8078761db8db5f37ab3195fe11c3e5b692c1c"
+
+EXTRA_OECONF += " --without-xcb"
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.2.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.2.bb
new file mode 100644
index 0000000..0cea5f8
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.2.bb
@@ -0,0 +1,9 @@
+require libx11.inc
+DEPENDS = "${COMMON_DEPENDS}"
+PR = "${INC_PR}.0"
+
+SRC_URI += " file://dolt-fix.patch"
+SRC_URI[archive.md5sum] = "c6265b59ea2b594fd68e33f9125b4d20"
+SRC_URI[archive.sha256sum] = "e4863cdf5d471763806e9bcae25ea47606a56cd91a5546a34c093aa3de181051"
+
+EXTRA_OECONF += " --without-xcb"
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.3.3.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.3.3.bb
new file mode 100644
index 0000000..8c40a99
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.3.3.bb
@@ -0,0 +1,6 @@
+require libx11.inc
+PR = "${INC_PR}.0"
+
+SRC_URI += " file://dolt-fix.patch"
+SRC_URI[archive.md5sum] = "5d74971360f194ce33d2bd2e4d9b066c"
+SRC_URI[archive.sha256sum] = "8c7f867918a3739dc7cabe955179539d4a7ecc52cb42becfd261e5dfbff511ac"
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.3.4.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.3.4.bb
new file mode 100644
index 0000000..e55d720
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.3.4.bb
@@ -0,0 +1,6 @@
+require libx11.inc
+PR = "${INC_PR}.0"
+
+SRC_URI += " file://dolt-fix.patch"
+SRC_URI[archive.md5sum] = "f65c9c7ecbfb64c19dbd7927160d63fd"
+SRC_URI[archive.sha256sum] = "88d7238ce5f7cd123450567de7a3b56a43556e4ccc45df38b8324147c889a844"
diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_git.bb b/recipes/obsolete/xorg/xorg-lib/libx11_git.bb
new file mode 100644
index 0000000..eac68d8
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libx11_git.bb
@@ -0,0 +1,14 @@
+require libx11.inc
+PV = "1.3.3+git"
+PR = "${INC_PR}.0"
+
+SRC_URI = "git://anongit.freedesktop.org/git/xorg/lib/libX11;protocol=git"
+SRC_URI += " file://keysymdef_include.patch \
+             file://x11_disable_makekeys.patch \
+             file://dolt-fix.patch \
+"
+
+SRCREV = "c3f3e4a9e531d010312c97e753d6e543e607094d"
+S = "${WORKDIR}/git"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxau_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxau_1.0.3.bb
new file mode 100644
index 0000000..cd4f79b
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxau_1.0.3.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "A Sample Authorization Protocol for X"
+DEPENDS += " xproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "75a9f2b85cd1617b5ca98c9095323853"
+SRC_URI[archive.sha256sum] = "d6c30a88770a720e96e0bd7e13e0334f9ef60f1b475a92556764828005c19e3b"
+
+BBCLASSEXTEND = "native nativesdk"
+
+XORG_PN = "libXau"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxau_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxau_1.0.4.bb
new file mode 100644
index 0000000..293fc63
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxau_1.0.4.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "A Sample Authorization Protocol for X"
+DEPENDS += " xproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "0f2b88d857e0a3f5898e4759c541af46"
+SRC_URI[archive.sha256sum] = "10d3ffa5f00d0c0a4083309ba68bdfa01dfdf912ef4cf2141e3f260b2edeb22c"
+
+BBCLASSEXTEND = "native nativesdk"
+
+XORG_PN = "libXau"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxaw_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxaw_1.0.3.bb
new file mode 100644
index 0000000..87ec70e
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxaw_1.0.3.bb
@@ -0,0 +1,22 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Athena Widget Set"
+DEPENDS += "xproto virtual/libx11 libxext xextproto libxt libxmu libxpm libxp printproto libxau"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "ee215536ea78798268ab3a444d10135a"
+SRC_URI[archive.sha256sum] = "45ca55bdac904a07b8118618c65ddb5bf8826e626c4c927e3c2508c58e231514"
+
+do_install_append () {
+    ln -sf libXaw6.so.6 ${D}${libdir}/libXaw.so.6
+    ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so.7
+    ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so
+}
+
+PACKAGES =+ "libxaw6 libxaw7 libxaw8"
+
+FILES_libxaw6 = "${libdir}/libXaw6.so.6*"
+FILES_libxaw7 = "${libdir}/libXaw7.so.7*"
+FILES_libxaw8 = "${libdir}/libXaw8.so.8*"
+
+XORG_PN = "libXaw"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxaw_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxaw_1.0.4.bb
new file mode 100644
index 0000000..2ed715d
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxaw_1.0.4.bb
@@ -0,0 +1,22 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Athena Widget Set"
+DEPENDS += "xproto virtual/libx11 libxext xextproto libxt libxmu libxpm libxp printproto libxau"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "73671d8f1cf36fdd81395328cc3539c9"
+SRC_URI[archive.sha256sum] = "11f4ab184fb8dc853fd95238d4de7b251427dd036643d11fd2a669232fa35af9"
+
+do_install_append () {
+    ln -sf libXaw6.so.6 ${D}${libdir}/libXaw.so.6
+    ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so.7
+    ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so
+}
+
+PACKAGES =+ "libxaw6 libxaw7 libxaw8"
+
+FILES_libxaw6 = "${libdir}/libXaw6.so.6*"
+FILES_libxaw7 = "${libdir}/libXaw7.so.7*"
+FILES_libxaw8 = "${libdir}/libXaw8.so.8*"
+
+XORG_PN = "libXaw"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxcomposite/change-include-order.patch b/recipes/obsolete/xorg/xorg-lib/libxcomposite/change-include-order.patch
new file mode 100644
index 0000000..630b881
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxcomposite/change-include-order.patch
@@ -0,0 +1,14 @@
+This patch makes the build use its own Xcomposite.h over rather than an
+older Xcomposite.h that might already be installed in the staging dir.
+
+--- libXcomposite-X11R7.0-0.2.2.2/src/Makefile.am.orig	2006-03-12 20:10:17.000000000 +0100
++++ libXcomposite-X11R7.0-0.2.2.2/src/Makefile.am	2006-03-12 20:10:35.000000000 +0100
+@@ -21,7 +21,7 @@
+ #  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ #  PERFORMANCE OF THIS SOFTWARE.
+ 
+-AM_CFLAGS = $(XCOMPOSITE_CFLAGS) $(XCOMPOSITE_CFLAGS) $(X_CFLAGS) -I$(top_srcdir)/include
++AM_CFLAGS = -I$(top_srcdir)/include $(XCOMPOSITE_CFLAGS) $(XCOMPOSITE_CFLAGS) $(X_CFLAGS)
+ 
+ lib_LTLIBRARIES = libXcomposite.la
+ 
diff --git a/recipes/obsolete/xorg/xorg-lib/libxcomposite_0.3.1.bb b/recipes/obsolete/xorg/xorg-lib/libxcomposite_0.3.1.bb
new file mode 100644
index 0000000..d7f8beb
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxcomposite_0.3.1.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Composite extension library."
+LICENSE = "BSD-X"
+DEPENDS += " compositeproto virtual/libx11 libxfixes"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI += " file://change-include-order.patch"
+SRC_URI[archive.md5sum] = "a80650d660486ea7bb2e5fd84a83799a"
+SRC_URI[archive.sha256sum] = "d42b59d3c38dae5e4fec375d12e56e7a5764ba10e8b8ec70f9ce951fc9cec72b"
+
+XORG_PN = "libXcomposite"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxcomposite_0.4.0.bb b/recipes/obsolete/xorg/xorg-lib/libxcomposite_0.4.0.bb
new file mode 100644
index 0000000..2dff14a
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxcomposite_0.4.0.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Composite extension library."
+LICENSE = "BSD-X"
+DEPENDS += " compositeproto virtual/libx11 libxfixes libxext"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI += " file://change-include-order.patch"
+SRC_URI[archive.md5sum] = "7e95395dea89be21bae929b9b7f16641"
+SRC_URI[archive.sha256sum] = "7db759e82dd1f68094e4c4d257025f7893dafb2913ed249e00cbe18fa13c7510"
+
+XORG_PN = "libXcomposite"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.8.bb b/recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.8.bb
new file mode 100644
index 0000000..3f175e8
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.8.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X cursor management library"
+LICENSE = "BSD-X"
+DEPENDS += "libxrender libxfixes"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "ec2acd10a7736a85dd1e1ed9ea5bec96"
+SRC_URI[archive.sha256sum] = "8f039f81af52c88d583fba48b878abd074542221cb0030638ad52336b4ae1377"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libXcursor"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.9.bb b/recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.9.bb
new file mode 100644
index 0000000..2b363a5
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.9.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X cursor management library"
+LICENSE = "BSD-X"
+DEPENDS += "libxrender libxfixes"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "99b7554037a92b260891091e81815a0a"
+SRC_URI[archive.sha256sum] = "1dffb3542271c8ce964066d561474caec5b639d6588b257b21cfb8225a15d2b4"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libXcursor"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxdamage_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxdamage_1.0.4.bb
new file mode 100644
index 0000000..452c634
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxdamage_1.0.4.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Damage extension library."
+LICENSE = "BSD-X"
+DEPENDS += " virtual/libx11 damageproto libxfixes fixesproto xextproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "4d0eece7a8372a7754db1de08c2be324"
+SRC_URI[archive.sha256sum] = "5df90f0efa77e1d6f9e1768a2b0adfc896d09c7a3d8680ed0980511b3625c636"
+
+XORG_PN = "libXdamage"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxdamage_1.1.1.bb b/recipes/obsolete/xorg/xorg-lib/libxdamage_1.1.1.bb
new file mode 100644
index 0000000..cb7eca1
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxdamage_1.1.1.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 damaged region extension library"
+LICENSE = "BSD-X"
+DEPENDS += "damageproto libxfixes"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "ac0ce6b0063a9858c8f24ddb4c60487d"
+SRC_URI[archive.sha256sum] = "0102754db23952a1c3adf7881bbf191f91ca3e3d183e1b0179452bce932fae2e"
+
+XORG_PN = "libXdamage"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxdmcp_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libxdmcp_1.0.2.bb
new file mode 100644
index 0000000..1226afb
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxdmcp_1.0.2.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Display Manager Control Protocol library"
+DEPENDS += "xproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "10facf2bc7cbd5e5c1a698b8a210a582"
+SRC_URI[archive.sha256sum] = "f3e50c1847599145c22784a2f15818821960652ee91d21d905817fb7c10f96a8"
+
+BBCLASSEXTEND = "native nativesdk"
+
+XORG_PN = "libXdmcp"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxext_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.2.bb
new file mode 100644
index 0000000..02326de
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.2.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Server Extension library"
+PRIORITY = "optional"
+DEPENDS += " xproto virtual/libx11 xextproto libxau"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "cce89c5b941a493512b534f4847c6111"
+SRC_URI[archive.sha256sum] = "368e4cf5117febd998e6fc40d096b3af19a571adccc5ed49b9d16e482b3a8f8e"
+
+BBCLASSEXTEND = "native nativesdk"
+
+XORG_PN = "libXext"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxext_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.3.bb
new file mode 100644
index 0000000..f8d76b4
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.3.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 miscellaneous extension library"
+DEPENDS += "xproto virtual/libx11 xextproto libxau"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "1bf6fa1c26f9957d7cc0bd90b038dfa6"
+SRC_URI[archive.sha256sum] = "2d706baf206d1cb422c8e0ceb6c5a8546bc3f0587cf090eba51e75a295d9c3f0"
+
+BBCLASSEXTEND = "native nativesdk"
+
+XORG_PN = "libXext"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxext_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.4.bb
new file mode 100644
index 0000000..1317e5c
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.4.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 miscellaneous extension library"
+DEPENDS += "xproto virtual/libx11 xextproto libxau"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "a91f1f722ac80c597cf0b75dcb8b48c0"
+SRC_URI[archive.sha256sum] = "2dfd8eace1cafacc87b4055c57efeb771a740e24141d3f113de58c2a9eebd21f"
+
+BBCLASSEXTEND = "native nativesdk"
+
+XORG_PN = "libXext"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxext_1.0.5.bb b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.5.bb
new file mode 100644
index 0000000..40dbece
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.5.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 miscellaneous extension library"
+DEPENDS += "xproto virtual/libx11 xextproto libxau libxdmcp"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "aa11d859cc8e9a0bad3bb55e1666547b"
+SRC_URI[archive.sha256sum] = "1280af98466cb4484a89858ede3347ba9d7785baeb80b11f2066142dc2317d97"
+
+BBCLASSEXTEND = "native nativesdk"
+
+XORG_PN = "libXext"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxfixes_4.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxfixes_4.0.3.bb
new file mode 100644
index 0000000..d574764
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxfixes_4.0.3.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Fixes extension library."
+LICENSE = "BSD-X"
+DEPENDS += "virtual/libx11 xproto fixesproto xextproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "1990d19725a3c7f32290037f02d3737f"
+SRC_URI[archive.sha256sum] = "547e093c5037c4b85ce653ce26f5bd70a97b177f9b582f5351a626d8e0a829dd"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libXfixes"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont/builtinreaddirectory-no-side-effect.patch b/recipes/obsolete/xorg/xorg-lib/libxfont/builtinreaddirectory-no-side-effect.patch
new file mode 100644
index 0000000..dd30743
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxfont/builtinreaddirectory-no-side-effect.patch
@@ -0,0 +1,188 @@
+commit 7670d4a2720c61fbc7b989fed14c676f04ac3ad1
+Author: Dodji Seketeli <dodji at openedhand.com>
+Date:   Mon Jul 16 12:24:34 2007 +0200
+
+    Remove side effects from BuiltinReadDirectory()
+    
+    The first time BuiltinReadDirectory() is called,
+    save the content of builtin_dir and builtin_alias,
+    before calling FontFileAddFontFile(), because that fonction
+    will modify those.
+    
+    Then, in subsequent calls to BuiltinReadDirectory(), restore
+    builtin_dir and builtin_alias so that the side effect incurred
+    by the first call disappears.
+
+diff --git a/src/builtins/dir.c b/src/builtins/dir.c
+index c272449..97f1e1e 100644
+--- a/src/builtins/dir.c
++++ b/src/builtins/dir.c
+@@ -29,6 +29,133 @@
+ #endif
+ #include "builtin.h"
+ 
++BuiltinDirPtr
++BuiltinDirsDup (const BuiltinDirPtr a_dirs,
++                int a_dirs_len)
++{
++    BuiltinDirPtr dirs=NULL ;
++    int i=0 ;
++
++    if (!a_dirs)
++        return NULL ;
++
++    dirs = xcalloc (a_dirs_len, sizeof (BuiltinDirRec)) ;
++    if (!dirs)
++        return NULL ;
++
++    for (i=0; i < a_dirs_len; i++) {
++        int len = strlen (a_dirs[i].file_name) ;
++        dirs[i].file_name = xcalloc (1, len) ;
++        memmove (dirs[i].file_name, a_dirs[i].file_name, len);
++        len = strlen (a_dirs[i].font_name) ;
++        dirs[i].font_name = xcalloc (1, len) ;
++        memmove (dirs[i].font_name, a_dirs[i].font_name, len);
++    }
++    return dirs ;
++}
++
++/**
++ * Copy a_save back into a_cur
++ * @param a_cur the instance of BuiltinDir to restore
++ * @param a_saved the saved instance of BuiltinDir to copy into a_cur
++ * @return 0 if went okay, 1 otherwise.
++ */
++int
++BuiltinDirRestore (BuiltinDirPtr a_cur,
++                   const BuiltinDirPtr a_saved)
++{
++    if (!a_cur)
++        return 1 ;
++    if (!a_saved)
++        return 0 ;
++
++    if (a_saved->font_name)
++        memmove (a_cur->font_name, a_saved->font_name, strlen (a_saved->font_name)) ;
++    return 0 ;
++}
++
++
++int
++BuiltinDirsRestore (BuiltinDirPtr a_cur_tab,
++                    const BuiltinDirPtr a_saved_tab,
++                    int a_tab_len)
++{
++    int i=0 ;
++
++    if (!a_cur_tab)
++        return 1 ;
++    if (!a_saved_tab)
++        return 0 ;
++
++    for (i=0 ; i < a_tab_len; i++) {
++        if (BuiltinDirRestore (&a_cur_tab[i], &a_saved_tab[i]))
++            return 1 ;
++    }
++    return 0 ;
++}
++
++BuiltinAliasPtr
++BuiltinAliasesDup (const BuiltinAliasPtr a_aliases,
++                   int a_aliases_len)
++{
++    BuiltinAliasPtr aliases=NULL ;
++    int i=0 ;
++
++    if (!a_aliases)
++        return NULL ;
++
++    aliases = xcalloc (a_aliases_len, sizeof (BuiltinAliasRec)) ;
++    if (!aliases)
++        return NULL ;
++
++    for (i=0; i < a_aliases_len; i++) {
++        int len = strlen (a_aliases[i].font_name) ;
++        aliases[i].font_name = xcalloc (1, len) ;
++        memmove (aliases[i].font_name, a_aliases[i].font_name, len);
++    }
++    return aliases ;
++}
++
++/**
++ * Copy a_save back into a_cur
++ * @param a_cur the instance of BuiltinAlias to restore
++ * @param a_saved the saved instance of BuiltinAlias to copy into a_cur
++ * @return 0 if went okay, 1 otherwise.
++ */
++int
++BuiltinAliasRestore (BuiltinAliasPtr a_cur,
++                     const BuiltinAliasPtr a_save)
++{
++    if (!a_cur)
++        return 1 ;
++    if (!a_save)
++        return 0 ;
++    if (a_save->alias_name)
++        memmove (a_cur->alias_name, a_save->alias_name, strlen (a_save->alias_name)) ;
++    if (a_save->font_name)
++        memmove (a_cur->font_name, a_save->font_name, strlen (a_save->font_name)) ;
++    return 0 ;
++}
++
++int
++BuiltinAliasesRestore (BuiltinAliasPtr a_cur_tab,
++                       const BuiltinAliasPtr a_saved_tab,
++                       int a_tab_len)
++{
++    int i=0 ;
++
++    if (!a_cur_tab)
++        return 1 ;
++    if (!a_saved_tab)
++        return 0 ;
++
++    for (i=0 ; i < a_tab_len; i++) {
++        if (BuiltinAliasRestore (&a_cur_tab[i], &a_saved_tab[i]))
++            return 1 ;
++    }
++    return 0 ;
++}
++
+ int
+ BuiltinReadDirectory (char *directory, FontDirectoryPtr *pdir)
+ {
+@@ -36,6 +163,34 @@ BuiltinReadDirectory (char *directory, FontDirectoryPtr *pdir)
+     int			i;
+ 
+     dir = FontFileMakeDir ("", builtin_dir_count);
++    static BuiltinDirPtr saved_builtin_dir ;
++    static BuiltinAliasPtr saved_builtin_alias ;
++
++
++    if (saved_builtin_dir)
++    {
++        BuiltinDirsRestore ((BuiltinDirPtr) builtin_dir,
++                            saved_builtin_dir,
++                            builtin_dir_count) ;
++    }
++    else
++    {
++        saved_builtin_dir = BuiltinDirsDup ((const BuiltinDirPtr) builtin_dir,
++                                            builtin_dir_count) ;
++    }
++
++    if (saved_builtin_alias)
++    {
++        BuiltinAliasesRestore ((BuiltinAliasPtr) builtin_alias,
++                               saved_builtin_alias,
++                               builtin_alias_count) ;
++    }
++    else
++    {
++        saved_builtin_alias = BuiltinAliasesDup ((const BuiltinAliasPtr) builtin_alias,
++                                                 builtin_alias_count) ;
++    }
++
+     for (i = 0; i < builtin_dir_count; i++)
+     {
+ 	if (!FontFileAddFontFile (dir,
diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont/no-scalable-crash.patch b/recipes/obsolete/xorg/xorg-lib/libxfont/no-scalable-crash.patch
new file mode 100644
index 0000000..90bded6
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxfont/no-scalable-crash.patch
@@ -0,0 +1,22 @@
+--- /tmp/fontdir.c	2006-08-01 16:17:22.000000000 +0200
++++ libXfont-1.2.0/src/fontfile/fontdir.c	2006-08-01 16:20:37.248306000 +0200
+@@ -695,6 +695,11 @@
+      */
+     if (isscale)
+     {
++	/* If the fontname says it is scalable, make sure that the
++  	 * renderer supports OpenScalable and GetInfoScalable.
++	 */
++       if (renderer->OpenScalable && renderer->GetInfoScalable)
++       {
+ 	if (vals.values_supplied & SIZE_SPECIFY_MASK)
+ 	{
+ 	    bzero((char *)&zeroVals, sizeof(zeroVals));
+@@ -794,6 +799,7 @@
+                                            bitmap->name.name);
+             }
+ 	}
++       }
+     }
+     return TRUE;
+ }
diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont_1.2.7.bb b/recipes/obsolete/xorg/xorg-lib/libxfont_1.2.7.bb
new file mode 100644
index 0000000..b470c8b
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxfont_1.2.7.bb
@@ -0,0 +1,15 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X font library (used by the X server)."
+PRIORITY = "optional"
+LICENSE = "BSD-X"
+DEPENDS += " freetype fontcacheproto zlib xproto xtrans fontsproto libfontenc"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://no-scalable-crash.patch"
+SRC_URI[archive.md5sum] = "2f2085310f75900044d9dcd469637d26"
+SRC_URI[archive.sha256sum] = "2f8c004c0b914d460e6fd2b48d8b425cf4778d415467fc1f1d938b200462d18b"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libXfont"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont_1.2.8.bb b/recipes/obsolete/xorg/xorg-lib/libxfont_1.2.8.bb
new file mode 100644
index 0000000..3794cf2
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxfont_1.2.8.bb
@@ -0,0 +1,15 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X font library (used by the X server)."
+PRIORITY = "optional"
+LICENSE = "BSD-X"
+DEPENDS += " freetype fontcacheproto zlib xproto xtrans fontsproto libfontenc"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://no-scalable-crash.patch"
+SRC_URI[archive.md5sum] = "83b8e21f6ee22512a8f72ba51e2d74f6"
+SRC_URI[archive.sha256sum] = "374a2ca12f62a4d9f09a17a34765a5289cefa9db7f9f0913e1c3731b4088aad8"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libXfont"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.0.bb b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.0.bb
new file mode 100644
index 0000000..c3c9377
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.0.bb
@@ -0,0 +1,15 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 font rasterisation library"
+LICENSE = "BSD-X"
+DEPENDS += "freetype fontcacheproto xtrans fontsproto libfontenc"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://no-scalable-crash.patch \
+            file://builtinreaddirectory-no-side-effect.patch"
+SRC_URI[archive.md5sum] = "d1d3fa170d74b066f1f23ca8574e7c90"
+SRC_URI[archive.sha256sum] = "07567b9880f28d1a404389c024a185419bfe81136aef3d9eda52407f34c3d3dd"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libXfont"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.1.bb b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.1.bb
new file mode 100644
index 0000000..671fd58
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.1.bb
@@ -0,0 +1,14 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 font rasterisation library"
+LICENSE = "BSD-X"
+DEPENDS += "freetype fontcacheproto xtrans fontsproto libfontenc"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://no-scalable-crash.patch"
+SRC_URI[archive.md5sum] = "b2f396b62633819bbdd9748383876e21"
+SRC_URI[archive.sha256sum] = "dcfb7dc980a16ad98ac984b98321148864ea8b4637d3dd3773e483a14158a9b1"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libXfont"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.2.bb b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.2.bb
new file mode 100644
index 0000000..250433a
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.2.bb
@@ -0,0 +1,14 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 font rasterisation library"
+LICENSE = "BSD-X"
+DEPENDS += "freetype fontcacheproto xtrans fontsproto libfontenc"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://no-scalable-crash.patch"
+SRC_URI[archive.md5sum] = "64f510ebf9679f3a97a3d633cbee4f50"
+SRC_URI[archive.sha256sum] = "c167cfd529b7c67f496ee0bed3c0b43e0107de0f689d387c1c0e23ef7cf3d2f2"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libXfont"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.3.bb b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.3.bb
new file mode 100644
index 0000000..65b5415
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.3.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 font rasterisation library"
+LICENSE = "BSD-X"
+DEPENDS += "freetype fontcacheproto xtrans fontsproto libfontenc"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "4f174b9613f87cf00d731da428a1b194"
+SRC_URI[archive.sha256sum] = "6171e6bca4bd6333611bd9c63cccc8e8e412d876c72097f0dddc490a9df51d5a"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libXfont"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxfontcache_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxfontcache_1.0.4.bb
new file mode 100644
index 0000000..f4a079e
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxfontcache_1.0.4.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X-TrueType font cache extension client library"
+DEPENDS += "libxext fontcacheproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "1adca018aa7bf2d215f20a69c10828ad"
+SRC_URI[archive.sha256sum] = "ffe747cfbf81cdd862af1b05d021ad1ab83b623eab5b32b0a618efb4c0f3e01c"
+
+XORG_PN = "libXfontcache"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxft_2.1.12.bb b/recipes/obsolete/xorg/xorg-lib/libxft_2.1.12.bb
new file mode 100644
index 0000000..14beef39
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxft_2.1.12.bb
@@ -0,0 +1,21 @@
+require xorg-lib-common.inc
+DESCRIPTION = "FreeType-based font drawing library for X"
+DEPENDS += "libxrender freetype fontconfig"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "1309301e2d979bd475dc58325cb8c056"
+SRC_URI[archive.sha256sum] = "68b46f85caaf0b30c876bd983abe144c25755bee7532e8738ab7ebe29a428986"
+
+FILES_${PN} = "${libdir}/lib*${SOLIBS}"
+FILES_${PN}-dev = "${includedir} ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la \
+                ${libdir}/*.a ${libdir}/pkgconfig \
+                ${datadir}/aclocal ${bindir} ${sbindir}"
+
+python do_package() {
+        if bb.data.getVar('DEBIAN_NAMES', d, 1):
+            bb.data.setVar('PKG_${PN}', 'libxft2', d)
+        bb.build.exec_func('package_do_package', d)
+}
+
+XORG_PN = "libXft"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxft_2.1.13.bb b/recipes/obsolete/xorg/xorg-lib/libxft_2.1.13.bb
new file mode 100644
index 0000000..a2219c9
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxft_2.1.13.bb
@@ -0,0 +1,21 @@
+require xorg-lib-common.inc
+DESCRIPTION = "FreeType-based font drawing library for X"
+DEPENDS += "libxrender freetype fontconfig"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "bc8881851f3bd8dcc625fac37350a1c6"
+SRC_URI[archive.sha256sum] = "ce7688258af34c14af421bcfb306d4310245b727d2417ac968b7f6b2facfde8c"
+
+FILES_${PN} = "${libdir}/lib*${SOLIBS}"
+FILES_${PN}-dev = "${includedir} ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la \
+                ${libdir}/*.a ${libdir}/pkgconfig \
+                ${datadir}/aclocal ${bindir} ${sbindir}"
+
+python do_package() {
+        if bb.data.getVar('DEBIAN_NAMES', d, 1):
+            bb.data.setVar('PKG_${PN}', 'libxft2', d)
+        bb.build.exec_func('package_do_package', d)
+}
+
+XORG_PN = "libXft"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxi_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libxi_1.0.2.bb
new file mode 100644
index 0000000..12e49f0
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxi_1.0.2.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Input extension library."
+DEPENDS += " xproto virtual/libx11 xextproto libxext inputproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "4a5207a29a6b220e5462129854689844"
+SRC_URI[archive.sha256sum] = "7e6339539d3d0a4fc95cc23ca2b13ae67dd783e011b3cc5ca76040e376bff57f"
+
+XORG_PN = "libXi"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxi_1.1.0.bb b/recipes/obsolete/xorg/xorg-lib/libxi_1.1.0.bb
new file mode 100644
index 0000000..3ad5dfc
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxi_1.1.0.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Input extension library."
+DEPENDS += " xproto virtual/libx11 xextproto libxext inputproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "c25abbe604029855eb11a3a75fb1f386"
+SRC_URI[archive.sha256sum] = "0f90d7e27d8a7d6bccf9350b6283ffe122e5347fa51d4ea9055653b297339989"
+
+XORG_PN = "libXi"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxi_1.1.2.bb b/recipes/obsolete/xorg/xorg-lib/libxi_1.1.2.bb
new file mode 100644
index 0000000..bff8ba4
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxi_1.1.2.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Input extension library"
+DEPENDS += "libxext inputproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "9c4dd85f3e2a75bfb60bd288502bc288"
+SRC_URI[archive.sha256sum] = "4deda13613f03e4524d3cf0ac14b9e20be5044d415cb8478713ecbe47f4de862"
+
+XORG_PN = "libXi"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxi_1.1.3.bb b/recipes/obsolete/xorg/xorg-lib/libxi_1.1.3.bb
new file mode 100644
index 0000000..039bfc8
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxi_1.1.3.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Input extension library"
+DEPENDS += "libxext inputproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "7c510abb0cad8dc20493fb27ff7859d8"
+SRC_URI[archive.sha256sum] = "c77a5bbe97d0d0a6493adefcf1bd57aca91bc33279633b3f6cf1d2bb8812153f"
+
+XORG_PN = "libXi"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxi_1.2.0.bb b/recipes/obsolete/xorg/xorg-lib/libxi_1.2.0.bb
new file mode 100644
index 0000000..e6b3da7
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxi_1.2.0.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Input extension library"
+DEPENDS += "libxext inputproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "4b88e07d7dd77ca1e786f09066b58c02"
+SRC_URI[archive.sha256sum] = "7c0125ffb864e121ebfb5a20b1cfdff60562c2f2dfbb4e77c5eac81f36e15f3a"
+
+XORG_PN = "libXi"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxinerama_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libxinerama_1.0.2.bb
new file mode 100644
index 0000000..786c294
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxinerama_1.0.2.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Xinerama extension library"
+DEPENDS += "libxext xineramaproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "f6fb08eafd3c2909d515f1a07bfca8fd"
+SRC_URI[archive.sha256sum] = "d245d7ae4c766ecbc4e5cc2666e2e78198d8386dbaa06b35c3d1b1457ee5d03d"
+
+XORG_PN = "libXinerama"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxinerama_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxinerama_1.0.3.bb
new file mode 100644
index 0000000..4e7cc91
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxinerama_1.0.3.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Xinerama extension library"
+DEPENDS += "libxext xineramaproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "cd9f7c46439ac40e0517a302d2434d2c"
+SRC_URI[archive.sha256sum] = "07b3564cd56154c20580b56230b7a95d74fe6582c80cedf0550d8d7955181219"
+
+XORG_PN = "libXinerama"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.4.bb
new file mode 100644
index 0000000..d02cec5
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.4.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 keyboard file manipulation library"
+LICENSE = "GPL"
+DEPENDS += "virtual/libx11 kbproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "12b4ceb5d42b520228b5fb40a96ae6c5"
+SRC_URI[archive.sha256sum] = "468ade4eaa3951a7c34b6ae1c290ab1a1d364ee36c5c455ef0df15550825b8ae"
+
+BBCLASSEXTEND = "native"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.5.bb b/recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.5.bb
new file mode 100644
index 0000000..60d3a1b
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.5.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 keyboard file manipulation library"
+LICENSE = "GPL"
+DEPENDS += "virtual/libx11 kbproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "0726a845fe5a56551de2718c9f6b0e35"
+SRC_URI[archive.sha256sum] = "0ab628271fc9cb6d05f861d9823573088d81d510aca95b87ac0504b2e558965f"
+
+BBCLASSEXTEND = "native"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxmu_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxmu_1.0.3.bb
new file mode 100644
index 0000000..b5bc535
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxmu_1.0.3.bb
@@ -0,0 +1,17 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 miscellaneous utility library"
+DEPENDS += "libxt libxext"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "b926b95b811ece3e19cd590db85ee615"
+SRC_URI[archive.sha256sum] = "b56e308e36da8d9cb48433ddb81fd04e26b4f1c695586ac8106ac48a35466d66"
+
+PACKAGES =+ "libxmuu libxmuu-dev"
+
+FILES_libxmuu = "${libdir}/libXmuu.so.*"
+FILES_libxmuu-dev = "${libdir}/libXmuu.so"
+
+LEAD_SONAME = "libXmu"
+
+XORG_PN = "libXmu"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxmu_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxmu_1.0.4.bb
new file mode 100644
index 0000000..7ebe4c8
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxmu_1.0.4.bb
@@ -0,0 +1,17 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 miscellaneous utility library"
+DEPENDS += "libxt libxext"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "fb372a5f3ab42b5ba16d7af4d833a0cb"
+SRC_URI[archive.sha256sum] = "f83c00d6ed8f4c08effa9dcc2d7f1ff6f5a753f2b9fe1babda16618c2afa18f0"
+
+PACKAGES =+ "libxmuu libxmuu-dev"
+
+FILES_libxmuu = "${libdir}/libXmuu.so.*"
+FILES_libxmuu-dev = "${libdir}/libXmuu.so"
+
+LEAD_SONAME = "libXmu"
+
+XORG_PN = "libXmu"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxpm_3.5.6.bb b/recipes/obsolete/xorg/xorg-lib/libxpm_3.5.6.bb
new file mode 100644
index 0000000..977f015
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxpm_3.5.6.bb
@@ -0,0 +1,16 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Pixmap library"
+LICENSE = "X-BSD"
+DEPENDS += "libxext libsm libxt"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "37b7d1826c6a02107269632a93b8791f"
+SRC_URI[archive.sha256sum] = "2d5c5242b8417db6aa758e5be387de33385d9960ff21c801af7d6a4730b4fd0d"
+
+PACKAGES =+ "sxpm cxpm"
+
+FILES_cxpm = "${bindir}/cxpm"
+FILES_sxpm = "${bindir}/sxpm"
+
+XORG_PN = "libXpm"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxpm_3.5.7.bb b/recipes/obsolete/xorg/xorg-lib/libxpm_3.5.7.bb
new file mode 100644
index 0000000..b8ed813
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxpm_3.5.7.bb
@@ -0,0 +1,16 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Pixmap library"
+LICENSE = "X-BSD"
+DEPENDS += "libxext libsm libxt"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "cd15ee542d9f515538b4462a6f79d977"
+SRC_URI[archive.sha256sum] = "64701ae67ce5b0797307b75d8255bec3a0d371d0c50715ea618f5a68bcc92baa"
+
+PACKAGES =+ "sxpm cxpm"
+
+FILES_cxpm = "${bindir}/cxpm"
+FILES_sxpm = "${bindir}/sxpm"
+
+XORG_PN = "libXpm"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxrandr_1.1.2.bb b/recipes/obsolete/xorg/xorg-lib/libxrandr_1.1.2.bb
new file mode 100644
index 0000000..4fb614c
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxrandr_1.1.2.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Resize and Rotate extension library."
+LICENSE = "BSD-X"
+DEPENDS += " virtual/libx11 randrproto libxext xextproto libxrender renderproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "962946952a01650bb43206043a3c0e12"
+SRC_URI[archive.sha256sum] = "ba5adedc37da835a5c9e5a5d457dce13feead64fc364bc4719c41720ca0a3c50"
+
+BBCLASSEXTEND = "nativesdk"
+
+XORG_PN = "libXrandr"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.2.bb b/recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.2.bb
new file mode 100644
index 0000000..2038f8a
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.2.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Resize and Rotate extension library"
+LICENSE = "BSD-X"
+DEPENDS += "randrproto libxrender libxext"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "1b244b5d19f0ccab01d7083436cd3558"
+SRC_URI[archive.sha256sum] = "206f8dc850f12b1213fb73dbef09fafa1bb8fb8c3ddfe4d39721c1e2dec12a98"
+
+BBCLASSEXTEND = "nativesdk"
+
+XORG_PN = "libXrandr"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.3.bb b/recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.3.bb
new file mode 100644
index 0000000..22ab29d
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.3.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Resize and Rotate extension library"
+LICENSE = "BSD-X"
+DEPENDS += "randrproto libxrender libxext"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "5cd67cc02a50c9644ba0a1846ea3b08e"
+SRC_URI[archive.sha256sum] = "f8edfe26b8c4c3677a3a949f81a8b09a5fad62972020bfd230401e11cc0ed267"
+
+BBCLASSEXTEND = "nativesdk"
+
+XORG_PN = "libXrandr"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.2.bb b/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.2.bb
new file mode 100644
index 0000000..c67495a
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.2.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Rendering Extension client library"
+LICENSE = "BSD-X"
+DEPENDS += "virtual/libx11 renderproto xproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "2f1b2c6e8dcbcb6d760e59f445abd92c"
+SRC_URI[archive.sha256sum] = "0f749183ab1a0ece14d33c3299b3f70893122349c0bfa9d7bd0e66ce19d1802a"
+
+BBCLASSEXTEND = "native nativesdk"
+
+XORG_PN = "libXrender"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.3.bb b/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.3.bb
new file mode 100644
index 0000000..82b0143
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.3.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Rendering Extension client library"
+LICENSE = "BSD-X"
+DEPENDS += "virtual/libx11 renderproto xproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "307132fce2e551ad2c641bddf8480f16"
+SRC_URI[archive.sha256sum] = "9882ba2d74e9ca5cfd0c2231ac8eba14d8fc59d538c787fa639f8d77c996bbef"
+
+BBCLASSEXTEND = "native nativesdk"
+
+XORG_PN = "libXrender"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.4.bb b/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.4.bb
new file mode 100644
index 0000000..4543a9e
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.4.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Rendering Extension client library"
+LICENSE = "BSD-X"
+DEPENDS += "virtual/libx11 renderproto xproto libxdmcp"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "dc266e850c51368f964e0d67bf5fb5e6"
+SRC_URI[archive.sha256sum] = "5682d343dd4e7ef291a6577e956c331946ce5801d8fa076284a01b41de3017ec"
+
+BBCLASSEXTEND = "native nativesdk"
+
+XORG_PN = "libXrender"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxres_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxres_1.0.3.bb
new file mode 100644
index 0000000..9a1aa01
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxres_1.0.3.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Resource extension library"
+DEPENDS += "libxext resourceproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "de66ffb657aba64c9d6dbdeabb757f3e"
+SRC_URI[archive.sha256sum] = "a6d5ba7573f5ec0f091095f01b51d1e671dd0f14acb5b8559cdf366e398a0230"
+
+XORG_PN = "libXres"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxscrnsaver_1.1.2.bb b/recipes/obsolete/xorg/xorg-lib/libxscrnsaver_1.1.2.bb
new file mode 100644
index 0000000..db164d2
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxscrnsaver_1.1.2.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Screen Saver extension library"
+LICENSE = "GPL"
+DEPENDS += "libxext scrnsaverproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "ac2d697dd02f51e5c15f7104f4be5328"
+SRC_URI[archive.sha256sum] = "6c75debca746060e0c2408a6ca119613ae02d1054adebd4b26ff8beee79bcc67"
+
+RREPLACES_${PN} = "libxss"
+
+XORG_PN = "libXScrnSaver"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxscrnsaver_1.1.3.bb b/recipes/obsolete/xorg/xorg-lib/libxscrnsaver_1.1.3.bb
new file mode 100644
index 0000000..2cc2c81
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxscrnsaver_1.1.3.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Screen Saver extension library"
+LICENSE = "GPL"
+DEPENDS += "libxext scrnsaverproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "93f84b6797f2f29cae1ce23b0355d00d"
+SRC_URI[archive.sha256sum] = "4b90245093c15a24aaaf2fc6e09f075137aad994f72043e098597997d9b2c988"
+
+RREPLACES_${PN} = "libxss"
+
+XORG_PN = "libXScrnSaver"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxt/pr10970-header-fix.patch b/recipes/obsolete/xorg/xorg-lib/libxt/pr10970-header-fix.patch
new file mode 100644
index 0000000..2acafb8
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxt/pr10970-header-fix.patch
@@ -0,0 +1,512 @@
+diff --git a/include/X11/CallbackI.h b/include/X11/CallbackI.h
+index 4ae08ab..64e8152 100644
+--- a/include/X11/CallbackI.h
++++ b/include/X11/CallbackI.h
+@@ -58,6 +58,8 @@ typedef XrmResource **CallbackTable;
+ #define _XtCBCalling 1
+ #define _XtCBFreeAfterCalling 2
+ 
++_XFUNCPROTOBEGIN
++
+ typedef struct internalCallbackRec {
+     unsigned short count;
+     char	   is_padded;	/* contains NULL padding for external form */
+@@ -115,3 +117,5 @@ extern void _XtCallConditionalCallbackList(
+     XtPointer			/* call_data */,
+     _XtConditionProc		/* cond_proc */
+ );
++
++_XFUNCPROTOEND
+diff --git a/include/X11/CompositeP.h b/include/X11/CompositeP.h
+index ed055b2..e93275a 100644
+--- a/include/X11/CompositeP.h
++++ b/include/X11/CompositeP.h
+@@ -52,6 +52,8 @@ SOFTWARE.
+ 
+ #include <X11/Composite.h>
+ 
++_XFUNCPROTOBEGIN
++
+ /************************************************************************
+  *
+  * Additional instance fields for widgets of (sub)class 'Composite' 
+@@ -101,6 +103,8 @@ typedef struct _CompositeClassRec {
+ 
+ externalref CompositeClassRec compositeClassRec;
+ 
++_XFUNCPROTOEND
++
+ #define XtCompositeExtensionVersion 2L
+ #define XtInheritGeometryManager ((XtGeometryHandler) _XtInherit)
+ #define XtInheritChangeManaged ((XtWidgetProc) _XtInherit)
+diff --git a/include/X11/ConstrainP.h b/include/X11/ConstrainP.h
+index a90d19a..7030a34 100644
+--- a/include/X11/ConstrainP.h
++++ b/include/X11/ConstrainP.h
+@@ -52,6 +52,8 @@ SOFTWARE.
+ 
+ #include <X11/Constraint.h>
+ 
++_XFUNCPROTOBEGIN
++
+ typedef struct _ConstraintPart {
+     XtPointer   mumble;		/* No new fields, keep C compiler happy */
+ } ConstraintPart;
+@@ -88,6 +90,8 @@ typedef struct _ConstraintClassRec {
+ 
+ externalref ConstraintClassRec constraintClassRec;
+ 
++_XFUNCPROTOEND
++
+ #define XtConstraintExtensionVersion 1L
+ 
+ #endif /* _XtConstraintP_h */
+diff --git a/include/X11/Constraint.h b/include/X11/Constraint.h
+index 9bb962e..b8bd902 100644
+--- a/include/X11/Constraint.h
++++ b/include/X11/Constraint.h
+@@ -50,11 +50,15 @@ SOFTWARE.
+ #ifndef _XtConstraint_h
+ #define _XtConstraint_h
+ 
++_XFUNCPROTOBEGIN
++
+ typedef struct _ConstraintClassRec *ConstraintWidgetClass;
+ 
+ #ifndef CONSTRAINT
+ externalref WidgetClass constraintWidgetClass;
+ #endif
+ 
++_XFUNCPROTOEND
++
+ #endif /* _XtConstraint_h */
+ /* DON'T ADD STUFF AFTER THIS #endif */
+diff --git a/include/X11/ConvertI.h b/include/X11/ConvertI.h
+index 02c0e5c..f3f7fb0 100644
+--- a/include/X11/ConvertI.h
++++ b/include/X11/ConvertI.h
+@@ -48,6 +48,8 @@ SOFTWARE.
+ ******************************************************************/
+ /* $XFree86: xc/lib/Xt/ConvertI.h,v 1.3 2001/12/14 19:56:09 dawes Exp $ */
+ 
++_XFUNCPROTOBEGIN
++
+ /* Representation types */
+ 
+ extern	XrmQuark  _XtQString;
+@@ -94,3 +96,4 @@ extern Boolean _XtConvert(
+ 
+ void _XtConvertInitialize(void);
+ 
++_XFUNCPROTOEND
+diff --git a/include/X11/Core.h b/include/X11/Core.h
+index ff6cb75..e1a7c28 100644
+--- a/include/X11/Core.h
++++ b/include/X11/Core.h
+@@ -53,6 +53,8 @@ SOFTWARE.
+ #ifndef _XtCore_h
+ #define _XtCore_h
+ 
++_XFUNCPROTOBEGIN
++
+ typedef struct _WidgetClassRec *CoreWidgetClass;
+ typedef struct _WidgetRec *CoreWidget;
+ externalref WidgetClass coreWidgetClass;
+@@ -62,5 +64,7 @@ externalref WidgetClass widgetClass;
+ 
+ #endif
+ 
++_XFUNCPROTOEND
++
+ #endif /* _XtCore_h */
+ /* DON'T ADD STUFF AFTER THIS #endif */
+diff --git a/include/X11/CoreP.h b/include/X11/CoreP.h
+index e07f085..57836e6 100644
+--- a/include/X11/CoreP.h
++++ b/include/X11/CoreP.h
+@@ -55,6 +55,8 @@ SOFTWARE.
+ 
+ #include <X11/Core.h>
+ 
++_XFUNCPROTOBEGIN
++
+ externalref int _XtInheritTranslations;
+ 
+ #define XtInheritTranslations  ((String) &_XtInheritTranslations)
+@@ -167,5 +169,7 @@ typedef struct _WidgetClassRec {
+ externalref WidgetClassRec widgetClassRec;
+ #define coreClassRec widgetClassRec
+ 
++_XFUNCPROTOEND
++
+ #endif /* _XtCoreP_h */
+ /* DON'T ADD STUFF AFTER THIS #endif */
+diff --git a/include/X11/CreateI.h b/include/X11/CreateI.h
+index 87abb1d..e0ca9a3 100644
+--- a/include/X11/CreateI.h
++++ b/include/X11/CreateI.h
+@@ -3,6 +3,8 @@
+ #ifndef _XtcreateI_h
+ #define _XtcreateI_h
+ 
++_XFUNCPROTOBEGIN
++
+ extern Widget _XtCreateWidget(String name, WidgetClass widget_class,
+ 			      Widget parent, ArgList args, Cardinal num_args,
+ 			      XtTypedArgList typed_args,
+@@ -18,9 +20,12 @@ extern Widget _XtAppCreateShell(String name, String class,
+ 				Cardinal num_typed_args);
+ extern Widget _XtCreateHookObj(Screen *screen);
+ 
++_XFUNCPROTOEND
+ 
+ #include <stdarg.h>
+ 
++_XFUNCPROTOBEGIN
++
+ /* VarCreate.c */
+ extern Widget _XtVaOpenApplication(XtAppContext *app_context_return,
+ 			_Xconst char* application_class,
+@@ -34,4 +39,6 @@ extern Widget _XtVaAppInitialize(XtAppContext *app_context_return,
+ 			int *argc_in_out, String *argv_in_out,
+ 			String *fallback_resources, va_list var_args);
+ 
++_XFUNCPROTOEND
++
+ #endif /* _XtcreateI_h */
+diff --git a/include/X11/EventI.h b/include/X11/EventI.h
+index 00858e7..d2d1d0f 100644
+--- a/include/X11/EventI.h
++++ b/include/X11/EventI.h
+@@ -65,6 +65,8 @@ typedef struct _XtGrabRec  *XtGrabList;
+ 
+ #include "PassivGraI.h"
+ 
++_XFUNCPROTOBEGIN
++
+ extern void _XtEventInitialize(
+     void
+ );
+@@ -131,4 +133,6 @@ extern void _XtFillAncestorList(Widget **listPtr, int *maxElemsPtr,
+ /* NextEvent.c */
+ extern Boolean XtAppPeekEvent_SkipTimer;
+ 
++_XFUNCPROTOEND
++
+ #endif /* _Event_h_ */
+diff --git a/include/X11/HookObjI.h b/include/X11/HookObjI.h
+index c9a22a2..c0858c2 100644
+--- a/include/X11/HookObjI.h
++++ b/include/X11/HookObjI.h
+@@ -29,6 +29,8 @@ in this Software without prior written authorization from The Open Group.
+ #ifndef _XtHookObjI_h
+ #define _XtHookObjI_h
+ 
++_XFUNCPROTOBEGIN
++
+ /* This object is implementation-dependent and private to the library. */
+ 
+ typedef struct _HookObjRec *HookObject;
+@@ -66,6 +68,8 @@ typedef struct _HookObjClassRec {
+ 
+ externalref HookObjClassRec hookObjClassRec;
+ 
++_XFUNCPROTOEND
++
+ #endif /* ifndef _Xt_HookObjI_h */
+ 
+ 
+diff --git a/include/X11/InitialI.h b/include/X11/InitialI.h
+index c2fe47c..2ae9b74 100644
+--- a/include/X11/InitialI.h
++++ b/include/X11/InitialI.h
+@@ -84,6 +84,8 @@ SOFTWARE.
+ #include <X11/Xos.h>
+ #include <X11/Xpoll.h>
+ 
++_XFUNCPROTOBEGIN
++
+ typedef struct _TimerEventRec {
+         struct timeval        te_timer_value;
+ 	struct _TimerEventRec *te_next;
+@@ -426,4 +428,6 @@ extern XrmDatabase _XtPreparseCommandLine(XrmOptionDescRec *urlist,
+ 			String *applName, String *displayName,
+ 			String *language);
+ 
++_XFUNCPROTOEND
++
+ #endif /* _XtinitialI_h */
+diff --git a/include/X11/IntrinsicI.h b/include/X11/IntrinsicI.h
+index d749867..d88166f 100644
+--- a/include/X11/IntrinsicI.h
++++ b/include/X11/IntrinsicI.h
+@@ -194,6 +194,8 @@ SOFTWARE.
+ #define ERRORDB "/usr/lib/X11/XtErrorDB"
+ #endif
+ 
++_XFUNCPROTOBEGIN
++
+ extern String XtCXtToolkitError;
+ 
+ extern void _XtAllocError(
+@@ -257,5 +259,7 @@ extern char* __XtCalloc (
+ #define __XtCalloc XtCalloc
+ #endif
+ 
++_XFUNCPROTOEND
++
+ #endif /* _XtintrinsicI_h */
+ /* DON'T ADD STUFF AFTER THIS #endif */
+diff --git a/include/X11/Object.h b/include/X11/Object.h
+index 96723b1..2c84aaf 100644
+--- a/include/X11/Object.h
++++ b/include/X11/Object.h
+@@ -50,11 +50,16 @@ SOFTWARE.
+ #ifndef _XtObject_h
+ #define _XtObject_h
+ 
++_XFUNCPROTOBEGIN
++
+ typedef struct _ObjectRec *Object;
+ typedef struct _ObjectClassRec *ObjectClass;
+ 
+ #ifndef OBJECT
+ externalref WidgetClass objectClass;
+ #endif
++
++_XFUNCPROTOEND
++
+ #endif /* _XtObject_h */
+ /* DON'T ADD STUFF AFTER THIS #endif */
+diff --git a/include/X11/ObjectP.h b/include/X11/ObjectP.h
+index a24564e..0f484d2 100644
+--- a/include/X11/ObjectP.h
++++ b/include/X11/ObjectP.h
+@@ -52,6 +52,8 @@ SOFTWARE.
+ 
+ #include <X11/Object.h>
+ 
++_XFUNCPROTOBEGIN
++
+ /**********************************************************
+  * Object Instance Data Structures
+  *
+@@ -132,6 +134,8 @@ typedef struct _ObjectClassRec {
+ 
+ externalref ObjectClassRec objectClassRec;
+ 
++_XFUNCPROTOEND
++
+ #define XtObjectExtensionVersion 1L
+ #define XtInheritAllocate ((XtAllocateProc) _XtInherit)
+ #define XtInheritDeallocate ((XtDeallocateProc) _XtInherit)
+diff --git a/include/X11/PassivGraI.h b/include/X11/PassivGraI.h
+index 02e2964..10591ac 100644
+--- a/include/X11/PassivGraI.h
++++ b/include/X11/PassivGraI.h
+@@ -60,6 +60,8 @@ in this Software without prior written authorization from The Open Group.
+ #define KEYBOARD TRUE
+ #define POINTER  FALSE
+ 
++_XFUNCPROTOBEGIN
++
+ typedef enum {
+     XtNoServerGrab, 
+     XtPassiveServerGrab,
+@@ -183,4 +185,6 @@ extern void _XtClearAncestorCache(
+     Widget		/* widget */
+ );
+ 
++_XFUNCPROTOEND
++
+ #endif /* _PDI_h_ */
+diff --git a/include/X11/RectObj.h b/include/X11/RectObj.h
+index 07615fa..dced5c3 100644
+--- a/include/X11/RectObj.h
++++ b/include/X11/RectObj.h
+@@ -50,11 +50,16 @@ SOFTWARE.
+ #ifndef _XtRect_h
+ #define _XtRect_h
+ 
++_XFUNCPROTOBEGIN
++
+ typedef struct _RectObjRec *RectObj;
+ typedef struct _RectObjClassRec *RectObjClass;
+ 
+ #ifndef RECTOBJ
+ externalref WidgetClass rectObjClass;
+ #endif
++
++_XFUNCPROTOEND
++
+ #endif /* _XtRect_h */
+ /* DON'T ADD STUFF AFTER THIS #endif */
+diff --git a/include/X11/RectObjP.h b/include/X11/RectObjP.h
+index ca3b8ad..d6ffb78 100644
+--- a/include/X11/RectObjP.h
++++ b/include/X11/RectObjP.h
+@@ -53,6 +53,8 @@ SOFTWARE.
+ #include <X11/RectObj.h>
+ #include <X11/ObjectP.h>
+ 
++_XFUNCPROTOBEGIN
++
+ /**********************************************************
+  * Rectangle Object Instance Data Structures
+  *
+@@ -126,4 +128,6 @@ typedef struct _RectObjClassRec {
+ 
+ externalref RectObjClassRec rectObjClassRec;
+ 
++_XFUNCPROTOEND
++
+ #endif /*_Xt_RectObjP_h_*/
+diff --git a/include/X11/ResourceI.h b/include/X11/ResourceI.h
+index d6ed1df..3db97f8 100644
+--- a/include/X11/ResourceI.h
++++ b/include/X11/ResourceI.h
+@@ -61,6 +61,8 @@ SOFTWARE.
+ #define StringToName(string) XrmStringToName(string)
+ #define StringToClass(string) XrmStringToClass(string)
+ 
++_XFUNCPROTOBEGIN
++
+ extern void _XtDependencies(
+     XtResourceList  * /* class_resp */,
+     Cardinal	    * /* class_num_resp */,
+@@ -96,5 +98,6 @@ extern XrmResourceList* _XtCreateIndirectionTable(XtResourceList resources,
+ 						  Cardinal num_resources);
+ extern void _XtResourceListInitialize(void);
+ 
++_XFUNCPROTOEND
+ 
+ #endif /* _XtresourceI_h */
+diff --git a/include/X11/ShellP.h b/include/X11/ShellP.h
+index 2b08c3f..7297d33 100644
+--- a/include/X11/ShellP.h
++++ b/include/X11/ShellP.h
+@@ -67,6 +67,8 @@ SOFTWARE.
+  * *****
+  */
+ 
++_XFUNCPROTOBEGIN
++
+ /***********************************************************************
+  *
+  * Shell Widget Private Data
+@@ -214,8 +216,12 @@ typedef  struct {
+ 	WMShellPart	wm;
+ } WMShellRec, *WMShellWidget;
+ 
++_XFUNCPROTOEND
++
+ #include <X11/VendorP.h>
+ 
++_XFUNCPROTOBEGIN
++
+ /***********************************************************************
+  *
+  * TransientShell Widget Private Data
+@@ -425,4 +431,6 @@ typedef  struct {
+ 	SessionShellPart session;
+ } SessionShellRec, *SessionShellWidget;
+ 
++_XFUNCPROTOEND
++
+ #endif /* _XtShellPrivate_h */
+diff --git a/include/X11/ThreadsI.h b/include/X11/ThreadsI.h
+index 1492d77..28cbc98 100644
+--- a/include/X11/ThreadsI.h
++++ b/include/X11/ThreadsI.h
+@@ -81,6 +81,8 @@ typedef void (*ThreadAppRestoreLockProc)(
+     Boolean* /* pushed_thread */
+ );
+ 
++_XFUNCPROTOBEGIN
++
+ extern void (*_XtProcessLock)(
+     void
+ );
+@@ -93,6 +95,8 @@ extern void (*_XtInitAppLock)(
+     XtAppContext /* app */
+ );
+ 
++_XFUNCPROTOEND
++
+ #define INIT_APP_LOCK(app) if(_XtInitAppLock) (*_XtInitAppLock)(app)
+ #define FREE_APP_LOCK(app) if(app && app->free_lock)(*app->free_lock)(app)
+ 
+diff --git a/include/X11/TranslateI.h b/include/X11/TranslateI.h
+index 1224875..6cc3099 100644
+--- a/include/X11/TranslateI.h
++++ b/include/X11/TranslateI.h
+@@ -342,6 +342,8 @@ typedef struct _TMGlobalRec{
+ #endif /* TRACE_TM */
+ }TMGlobalRec;
+ 
++_XFUNCPROTOBEGIN
++
+ extern TMGlobalRec _XtGlobalTM;
+ 
+ #define TM_MOD_SEGMENT_SIZE 	16
+@@ -604,3 +606,4 @@ extern void _XtUnmergeTranslations(
+ /* TMKey.c */
+ extern void _XtAllocTMContext(XtPerDisplay pd);
+ 
++_XFUNCPROTOEND
+diff --git a/include/X11/VarargsI.h b/include/X11/VarargsI.h
+index e15404a..76ce9bc 100644
+--- a/include/X11/VarargsI.h
++++ b/include/X11/VarargsI.h
+@@ -34,6 +34,8 @@ in this Software without prior written authorization from The Open Group.
+  
+ /* private routines */
+ 
++_XFUNCPROTOBEGIN
++
+ extern void _XtCountVaList(
+     va_list /*var*/, int* /*total_count*/, int* /*typed_count*/
+ );
+@@ -62,4 +64,6 @@ extern void _XtGetSubresources(
+     Widget /*w*/, XtPointer /*base*/, const char* /*name*/, const char* /*class*/, XtResourceList /*resources*/, Cardinal /*num_resources*/, ArgList /*args*/, Cardinal /*num_args*/, XtTypedArgList /*typed_args*/, Cardinal /*num_typed_args*/
+ );
+ 
++_XFUNCPROTOEND
++
+ #endif /* _VarargsI_h_ */
+diff --git a/include/X11/Vendor.h b/include/X11/Vendor.h
+index 65e7c38..633d17a 100644
+--- a/include/X11/Vendor.h
++++ b/include/X11/Vendor.h
+@@ -65,7 +65,11 @@ SOFTWARE.
+ 
+ typedef struct _VendorShellClassRec *VendorShellWidgetClass;
+ 
++_XFUNCPROTOBEGIN
++
+ externalref WidgetClass vendorShellWidgetClass;
+ 
++_XFUNCPROTOEND
++
+ #endif /* _XtVendor_h */
+ /* DON'T ADD STUFF AFTER THIS #endif */
+diff --git a/include/X11/VendorP.h b/include/X11/VendorP.h
+index 08bf689..e60857d 100644
+--- a/include/X11/VendorP.h
++++ b/include/X11/VendorP.h
+@@ -72,6 +72,8 @@ SOFTWARE.
+ 
+ /* New fields for the VendorShell widget class record */
+ 
++_XFUNCPROTOBEGIN
++
+ typedef struct {
+     XtPointer       extension;          /* pointer to extension record      */
+ } VendorShellClassPart;
+@@ -100,4 +102,6 @@ typedef  struct {
+ 	VendorShellPart	vendor;
+ } VendorShellRec, *VendorShellWidget;
+ 
++_XFUNCPROTOEND
++
+ #endif  /* _XtVendorPrivate_h */
diff --git a/recipes/obsolete/xorg/xorg-lib/libxt_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxt_1.0.4.bb
new file mode 100644
index 0000000..7dd9863
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxt_1.0.4.bb
@@ -0,0 +1,24 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Toolkit Intrinsics"
+PRIORITY = "optional"
+DEPENDS += " libsm virtual/libx11 xproto kbproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://pr10970-header-fix.patch"
+SRC_URI[archive.md5sum] = "937735f342c046db239852fec0413f6c"
+SRC_URI[archive.sha256sum] = "ec7088b2ffe8f56c177525283601fb048decaf6f175d9ee5db01e12810a4d345"
+
+EXTRA_OECONF = "--enable-malloc0returnsnull --disable-install-makestrs --disable-xkb"
+
+do_compile() {
+        (
+                unset CC LD CXX CCLD
+                oe_runmake -C util 'XT_CFLAGS=' 'CC=${BUILD_CC}' 'LD=${BUILD_LD}' 'CXX=${BUILD_CXX}' 'CCLD=${BUILD_CCLD}' 'CFLAGS=-D_GNU_SOURCE ${BUILD_CFLAGS}' 'LDFLAGS=${BUILD_LDFLAGS}' 'CXXFLAGS=${BUILD_CXXFLAGS}' 'CPPFLAGS=${BUILD_CPPFLAGS}' makestrs
+        ) || exit 1
+        oe_runmake
+}
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libXt"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxt_1.0.5.bb b/recipes/obsolete/xorg/xorg-lib/libxt_1.0.5.bb
new file mode 100644
index 0000000..7bdf252
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxt_1.0.5.bb
@@ -0,0 +1,23 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 toolkit intrinsics library"
+DEPENDS += "libsm virtual/libx11 kbproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://pr10970-header-fix.patch"
+SRC_URI[archive.md5sum] = "f3bdd67785ace8cd0b23249e9d8c9975"
+SRC_URI[archive.sha256sum] = "43c472ada59a04428a463225cd4cd42cb81bc43eb687cc1890f2f1c81a3e9cf4"
+
+EXTRA_OECONF += "--disable-install-makestrs --disable-xkb"
+
+do_compile() {
+        (
+                unset CC LD CXX CCLD
+                oe_runmake -C util 'XT_CFLAGS=' 'CC=${BUILD_CC}' 'LD=${BUILD_LD}' 'CXX=${BUILD_CXX}' 'CCLD=${BUILD_CCLD}' 'CFLAGS=-D_GNU_SOURCE -I${STAGING_INCDIR_NATIVE} ${BUILD_CFLAGS}' 'LDFLAGS=${BUILD_LDFLAGS}' 'CXXFLAGS=${BUILD_CXXFLAGS}' 'CPPFLAGS=${BUILD_CPPFLAGS}' makestrs
+        ) || exit 1
+        oe_runmake
+}
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libXt"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxtst_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libxtst_1.0.2.bb
new file mode 100644
index 0000000..ff87f7c
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxtst_1.0.2.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Test Extension: client side library"
+DEPENDS += "libxext recordproto inputproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "032d5c1d3914fc0224837328c88aef96"
+SRC_URI[archive.sha256sum] = "eef98ad3d35254384c3714cd63826fc2009f9b394f2b489718aba9be7be0a10b"
+
+XORG_PN = "libXtst"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxtst_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxtst_1.0.3.bb
new file mode 100644
index 0000000..56dfae5
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxtst_1.0.3.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Test Extension: client side library"
+DEPENDS += "libxext recordproto inputproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "090c1ad04e34982eada5cf3b1a0792fd"
+SRC_URI[archive.sha256sum] = "b4a8dd3d9ceb04cd7322c1f7e5d2320d6ccf85ba8c81d736fd6d6c83c658c905"
+
+XORG_PN = "libXtst"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxv_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxv_1.0.3.bb
new file mode 100644
index 0000000..4f19126
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxv_1.0.3.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Video extension library"
+LICENSE = "GPL"
+DEPENDS += "libxext videoproto"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "f1c4109fa804aeaf7188b66c5cdd9f57"
+SRC_URI[archive.sha256sum] = "f87ae65be39a3c26dc3c87159d9126daf2af1b8c5e7f2ffc38b9f72b9236261b"
+
+XORG_PN = "libXv"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxv_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxv_1.0.4.bb
new file mode 100644
index 0000000..be5a50c
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxv_1.0.4.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Video extension library"
+LICENSE = "GPL"
+DEPENDS += "libxext videoproto"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "723a0275227165383e967a1ca8899b52"
+SRC_URI[archive.sha256sum] = "4d3cc49b6f4da6d396196054eca23a91df1a41001c736dcfd22fec5a5c7428c8"
+
+XORG_PN = "libXv"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxvmc/drm.patch b/recipes/obsolete/xorg/xorg-lib/libxvmc/drm.patch
new file mode 100644
index 0000000..d48cdb3
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxvmc/drm.patch
@@ -0,0 +1,9 @@
+--- XvMC/hw/via/Makefile.am.old	2005-03-06 11:25:11.000000000 +0000
++++ XvMC/hw/via/Makefile.am	2005-03-06 11:25:22.000000000 +0000
+@@ -1,5 +1,5 @@
+ AM_CFLAGS = $(XVMC_CFLAGS)
+-libviaXvMC_la_LIBADD = $(XVMC_LIBS) -lxf86drm
++libviaXvMC_la_LIBADD = $(XVMC_LIBS) -ldrm
+ 
+ lib_LTLIBRARIES = libviaXvMC.la
+ 
diff --git a/recipes/obsolete/xorg/xorg-lib/libxvmc/true.patch b/recipes/obsolete/xorg/xorg-lib/libxvmc/true.patch
new file mode 100644
index 0000000..7059295
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxvmc/true.patch
@@ -0,0 +1,11 @@
+--- XvMC/hw/via/viaXvMC.c.old	2004-10-18 20:54:49.000000000 +0100
++++ XvMC/hw/via/viaXvMC.c	2004-10-18 20:55:03.000000000 +0100
+@@ -43,6 +43,8 @@
+ #include <xf86drm.h>
+ #include <pthread.h>
+ #include "vldXvMC.h"
++
++#define TRUE 1
+     
+ #define SAREAPTR(ctx) ((ViaXvMCSAreaPriv *) \
+ 		       (((CARD8 *)(ctx)->sAreaAddress) +	\
diff --git a/recipes/obsolete/xorg/xorg-lib/libxvmc/via.patch b/recipes/obsolete/xorg/xorg-lib/libxvmc/via.patch
new file mode 100644
index 0000000..21cdfbd
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxvmc/via.patch
@@ -0,0 +1,23 @@
+--- XvMC/configure.ac.old	2004-09-18 13:16:31.000000000 +0100
++++ XvMC/configure.ac	2004-09-18 13:16:32.000000000 +0100
+@@ -14,4 +14,5 @@
+ AC_OUTPUT([Makefile
+            hw/Makefile
+ 	   hw/i810/Makefile
++	   hw/via/Makefile
+            xvmc.pc])
+--- /dev/null	2004-06-13 02:32:19.000000000 +0100
++++ XvMC/hw/via/Makefile.am	2004-09-18 13:16:01.000000000 +0100
+@@ -0,0 +1,7 @@
++AM_CFLAGS = $(XVMC_CFLAGS)
++libviaXvMC_la_LIBADD = $(XVMC_LIBS) -lxf86drm
++
++lib_LTLIBRARIES = libviaXvMC.la
++
++libviaXvMC_la_SOURCES = viaXvMC.c viaXvMC.h viaLowLevel.c viaLowLevel.h \
++		viaXvMCPriv.h
+--- XvMC/hw/Makefile.am.old	2004-10-17 22:34:27.000000000 +0100
++++ XvMC/hw/Makefile.am	2004-10-17 22:34:31.000000000 +0100
+@@ -1 +1 @@
+-SUBDIRS = i810
++SUBDIRS = i810 via
diff --git a/recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.4.bb
new file mode 100644
index 0000000..003c5be
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.4.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Video Motion Compensation extension library"
+DEPENDS += "libxext libxv videoproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "b54600573daf9d1a29b952e8d35b389e"
+SRC_URI[archive.sha256sum] = "1217825ba8d66198466ee8306d0d6d237d2dd80d0f0783c98701296791833abb"
+
+XORG_PN = "libXvMC"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.5.bb b/recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.5.bb
new file mode 100644
index 0000000..cdd965a
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.5.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Video Motion Compensation extension library"
+DEPENDS += "libxext libxv videoproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "16c3a11add14979beb7510e44623cac6"
+SRC_URI[archive.sha256sum] = "0644c768d28343af0efe0cb09fc9e0220b8ad755642bb498a3038cee328fde7f"
+
+XORG_PN = "libXvMC"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxxf86dga_1.0.1.bb b/recipes/obsolete/xorg/xorg-lib/libxxf86dga_1.0.1.bb
new file mode 100644
index 0000000..6d51967
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxxf86dga_1.0.1.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Direct Graphics Access extension library"
+DEPENDS += "libxext xf86dgaproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "5b0e752c71a23e9d1290cad44a7c7c75"
+SRC_URI[archive.sha256sum] = "8c68f429942b1258cff0fb27505645a463690374ecf318ae660ff4cde7a03db9"
+
+XORG_PN = "libXxf86dga"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxxf86dga_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libxxf86dga_1.0.2.bb
new file mode 100644
index 0000000..b311537
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxxf86dga_1.0.2.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Direct Graphics Access extension library"
+DEPENDS += "libxext xf86dgaproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "6f5f621804ee652b6cc6f2025c517c78"
+SRC_URI[archive.sha256sum] = "59175230a00a1fb359148f36eadb50fc6cb080849379ccb0e43c6cbb97309a25"
+
+XORG_PN = "libXxf86dga"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxxf86misc_1.0.1.bb b/recipes/obsolete/xorg/xorg-lib/libxxf86misc_1.0.1.bb
new file mode 100644
index 0000000..91a7123
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxxf86misc_1.0.1.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 XFree86 miscellaneous extension library"
+DEPENDS += "libxext xf86miscproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "7cee0df63903cef7f7a3fb68cdd99eef"
+SRC_URI[archive.sha256sum] = "2122d67d49aaa06eeaeb3db173ea8a7048f3b52665e5135874bc5cadada91289"
+
+XORG_PN = "libXxf86misc"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.1.bb b/recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.1.bb
new file mode 100644
index 0000000..b13707c
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.1.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 XFree86 video mode extension library"
+DEPENDS += "libxext xf86vidmodeproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "8de1ca6c55aaad7d8cae19b4f0b3da32"
+SRC_URI[archive.sha256sum] = "e08fc2c1611c422f751ed02810491b45bf7faa4207d762a11f11815263c9285a"
+
+XORG_PN = "libXxf86vm"
diff --git a/recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.2.bb
new file mode 100644
index 0000000..e693362
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.2.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 XFree86 video mode extension library"
+DEPENDS += "libxext xf86vidmodeproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "304d37bd0a10d9b58aa9b64469ad73e5"
+SRC_URI[archive.sha256sum] = "3cb3c3c6552a4fbc686ba6c2dbeb6e4ba2a27103279908831d56363de73951de"
+
+XORG_PN = "libXxf86vm"
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
new file mode 100644
index 0000000..25ce7ee
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
@@ -0,0 +1,114 @@
+From c29c9fa826b7112156fd6150b5f1564227935c05 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Thu, 22 Oct 2009 05:27:33 +0300
+Subject: [PATCH 3/6] Generic C implementation of pixman_blt with overlapping support
+
+Uses memcpy/memmove functions to copy pixels, can handle the
+case when both source and destination areas are in the same
+image (this is useful for scrolling).
+
+It is assumed that copying direction is only important when
+using the same image for both source and destination (and
+src_stride == dst_stride). Copying direction is undefined
+for the images with different source and destination stride
+which happen to be in the overlapped areas (but this is an
+unrealistic case anyway).
+---
+ pixman/pixman-general.c |   21 ++++++++++++++++++---
+ pixman/pixman-private.h |   43 +++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 61 insertions(+), 3 deletions(-)
+
+diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c
+index c96a3f9..d71a299 100644
+--- a/pixman/pixman-general.c
++++ b/pixman/pixman-general.c
+@@ -300,9 +300,24 @@ general_blt (pixman_implementation_t *imp,
+              int                      width,
+              int                      height)
+ {
+-    /* We can't blit unless we have sse2 or mmx */
+-
+-    return FALSE;
++    uint8_t *dst_bytes = (uint8_t *)dst_bits;
++    uint8_t *src_bytes = (uint8_t *)src_bits;
++    int bpp;
++
++    if (src_bpp != dst_bpp || src_bpp & 7)
++	return FALSE;
++
++    bpp = src_bpp >> 3;
++    width *= bpp;
++    src_stride *= 4;
++    dst_stride *= 4;
++    pixman_blt_helper (src_bytes + src_y * src_stride + src_x * bpp,
++                       dst_bytes + dst_y * dst_stride + dst_x * bpp,
++                       src_stride,
++                       dst_stride,
++                       width,
++                       height);
++    return TRUE;
+ }
+ 
+ static pixman_bool_t
+diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
+index 5000f91..8c5d4fd 100644
+--- a/pixman/pixman-private.h
++++ b/pixman/pixman-private.h
+@@ -10,6 +10,7 @@
+ 
+ #include "pixman.h"
+ #include <time.h>
++#include <string.h>
+ #include <assert.h>
+ 
+ #include "pixman-compiler.h"
+@@ -794,4 +795,46 @@ void pixman_timer_register (pixman_timer_t *timer);
+ 
+ #endif /* PIXMAN_TIMERS */
+ 
++/* a helper function, can blit 8-bit images with src/dst overlapping support */
++static inline void
++pixman_blt_helper (uint8_t *src_bytes,
++                   uint8_t *dst_bytes,
++                   int      src_stride,
++                   int      dst_stride,
++                   int      width,
++                   int      height)
++{
++    /*
++     * The second part of this check is not strictly needed, but it prevents
++     * unnecessary upside-down processing of areas which belong to different
++     * images. Upside-down processing can be slower with fixed-distance-ahead
++     * prefetch and perceived as having more tearing.
++     */
++    if (src_bytes < dst_bytes + width &&
++	src_bytes + src_stride * height > dst_bytes)
++    {
++	src_bytes += src_stride * height - src_stride;
++	dst_bytes += dst_stride * height - dst_stride;
++	dst_stride = -dst_stride;
++	src_stride = -src_stride;
++	/* Horizontal scrolling to the left needs memmove */
++	if (src_bytes + width > dst_bytes)
++	{
++	    while (--height >= 0)
++	    {
++		memmove (dst_bytes, src_bytes, width);
++		dst_bytes += dst_stride;
++		src_bytes += src_stride;
++	    }
++	    return;
++	}
++    }
++    while (--height >= 0)
++    {
++	memcpy (dst_bytes, src_bytes, width);
++	dst_bytes += dst_stride;
++	src_bytes += src_stride;
++    }
++}
++
+ #endif /* PIXMAN_PRIVATE_H */
+-- 
+1.6.2.4
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
new file mode 100644
index 0000000..74c7b45
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
@@ -0,0 +1,91 @@
+From 7ca32542c957ff308a6ca7e3715e6552a65ae395 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Thu, 22 Oct 2009 05:45:47 +0300
+Subject: [PATCH 4/6] Support of overlapping src/dst for pixman_blt_mmx
+
+---
+ pixman/pixman-mmx.c |   55 +++++++++++++++++++++++++++++---------------------
+ 1 files changed, 32 insertions(+), 23 deletions(-)
+
+diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
+index 819e3a0..dcccadb 100644
+--- a/pixman/pixman-mmx.c
++++ b/pixman/pixman-mmx.c
+@@ -3002,34 +3002,43 @@ pixman_blt_mmx (uint32_t *src_bits,
+ {
+     uint8_t *   src_bytes;
+     uint8_t *   dst_bytes;
+-    int byte_width;
++    int         bpp;
+ 
+-    if (src_bpp != dst_bpp)
++    if (src_bpp != dst_bpp || src_bpp & 7)
+ 	return FALSE;
+ 
+-    if (src_bpp == 16)
+-    {
+-	src_stride = src_stride * (int) sizeof (uint32_t) / 2;
+-	dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
+-	src_bytes = (uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
+-	dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+-	byte_width = 2 * width;
+-	src_stride *= 2;
+-	dst_stride *= 2;
+-    }
+-    else if (src_bpp == 32)
++    bpp = src_bpp >> 3;
++    width *= bpp;
++    src_stride *= 4;
++    dst_stride *= 4;
++    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++    if (src_bpp != 16 && src_bpp != 32)
+     {
+-	src_stride = src_stride * (int) sizeof (uint32_t) / 4;
+-	dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
+-	src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
+-	dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+-	byte_width = 4 * width;
+-	src_stride *= 4;
+-	dst_stride *= 4;
++	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++	                   width, height);
++	return TRUE;
+     }
+-    else
++
++    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
+     {
+-	return FALSE;
++	src_bytes += src_stride * height - src_stride;
++	dst_bytes += dst_stride * height - dst_stride;
++	dst_stride = -dst_stride;
++	src_stride = -src_stride;
++
++	if (src_bytes + width > dst_bytes)
++	{
++	    /* TODO: reverse scanline copy using MMX */
++	    while (--height >= 0)
++	    {
++		memmove (dst_bytes, src_bytes, width);
++		dst_bytes += dst_stride;
++		src_bytes += src_stride;
++	    }
++	    return TRUE;
++	}
+     }
+ 
+     while (height--)
+@@ -3039,7 +3048,7 @@ pixman_blt_mmx (uint32_t *src_bits,
+ 	uint8_t *d = dst_bytes;
+ 	src_bytes += src_stride;
+ 	dst_bytes += dst_stride;
+-	w = byte_width;
++	w = width;
+ 
+ 	while (w >= 2 && ((unsigned long)d & 3))
+ 	{
+-- 
+1.6.2.4
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
new file mode 100644
index 0000000..3704fbf
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
@@ -0,0 +1,91 @@
+From edc80b41c6480b7c80ec5f7c835c92b2debb3774 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Thu, 22 Oct 2009 05:45:54 +0300
+Subject: [PATCH 5/6] Support of overlapping src/dst for pixman_blt_sse2
+
+---
+ pixman/pixman-sse2.c |   55 +++++++++++++++++++++++++++++--------------------
+ 1 files changed, 32 insertions(+), 23 deletions(-)
+
+diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
+index 78b0ad1..b84636b 100644
+--- a/pixman/pixman-sse2.c
++++ b/pixman/pixman-sse2.c
+@@ -5300,34 +5300,43 @@ pixman_blt_sse2 (uint32_t *src_bits,
+ {
+     uint8_t *   src_bytes;
+     uint8_t *   dst_bytes;
+-    int byte_width;
++    int         bpp;
+ 
+-    if (src_bpp != dst_bpp)
++    if (src_bpp != dst_bpp || src_bpp & 7)
+ 	return FALSE;
+ 
+-    if (src_bpp == 16)
+-    {
+-	src_stride = src_stride * (int) sizeof (uint32_t) / 2;
+-	dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
+-	src_bytes =(uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
+-	dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+-	byte_width = 2 * width;
+-	src_stride *= 2;
+-	dst_stride *= 2;
+-    }
+-    else if (src_bpp == 32)
++    bpp = src_bpp >> 3;
++    width *= bpp;
++    src_stride *= 4;
++    dst_stride *= 4;
++    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++    if (src_bpp != 16 && src_bpp != 32)
+     {
+-	src_stride = src_stride * (int) sizeof (uint32_t) / 4;
+-	dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
+-	src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
+-	dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+-	byte_width = 4 * width;
+-	src_stride *= 4;
+-	dst_stride *= 4;
++	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++	                   width, height);
++	return TRUE;
+     }
+-    else
++
++    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
+     {
+-	return FALSE;
++	src_bytes += src_stride * height - src_stride;
++	dst_bytes += dst_stride * height - dst_stride;
++	dst_stride = -dst_stride;
++	src_stride = -src_stride;
++
++	if (src_bytes + width > dst_bytes)
++	{
++	    /* TODO: reverse scanline copy using SSE2 */
++	    while (--height >= 0)
++	    {
++		memmove (dst_bytes, src_bytes, width);
++		dst_bytes += dst_stride;
++		src_bytes += src_stride;
++	    }
++	    return TRUE;
++	}
+     }
+ 
+     cache_prefetch ((__m128i*)src_bytes);
+@@ -5340,7 +5349,7 @@ pixman_blt_sse2 (uint32_t *src_bits,
+ 	uint8_t *d = dst_bytes;
+ 	src_bytes += src_stride;
+ 	dst_bytes += dst_stride;
+-	w = byte_width;
++	w = width;
+ 
+ 	cache_prefetch_next ((__m128i*)s);
+ 	cache_prefetch_next ((__m128i*)d);
+-- 
+1.6.2.4
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
new file mode 100644
index 0000000..7c22483
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
@@ -0,0 +1,94 @@
+From 86870ff530b5e435034bd80207e5758466d96cff Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Wed, 18 Nov 2009 06:08:48 +0200
+Subject: [PATCH 6/6] Support of overlapping src/dst for pixman_blt_neon
+
+---
+ pixman/pixman-arm-neon.c |   63 ++++++++++++++++++++++++++++++++++++++-------
+ 1 files changed, 53 insertions(+), 10 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 495fda4..c632ff5 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -357,26 +357,66 @@
+                  int       width,
+                  int       height)
+ {
+-    if (src_bpp != dst_bpp)
++    uint8_t *   src_bytes;
++    uint8_t *   dst_bytes;
++    int         bpp;
++
++    if (src_bpp != dst_bpp || src_bpp & 7)
+ 	return FALSE;
+ 
++    bpp = src_bpp >> 3;
++    width *= bpp;
++    src_stride *= 4;
++    dst_stride *= 4;
++    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++    if (src_bpp != 16 && src_bpp != 32)
++    {
++	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++	                   width, height);
++	return TRUE;
++    }
++
++    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
++    {
++	src_bytes += src_stride * height - src_stride;
++	dst_bytes += dst_stride * height - dst_stride;
++	dst_stride = -dst_stride;
++	src_stride = -src_stride;
++
++	if (src_bytes + width > dst_bytes)
++	{
++	    /* TODO: reverse scanline copy using NEON */
++	    while (--height >= 0)
++	    {
++		memmove (dst_bytes, src_bytes, width);
++		dst_bytes += dst_stride;
++		src_bytes += src_stride;
++	    }
++	    return TRUE;
++	}
++    }
++
+     switch (src_bpp)
+     {
+     case 16:
+ 	pixman_composite_src_0565_0565_asm_neon (
+-		width, height,
+-		(uint16_t *)(((char *) dst_bits) +
+-		dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2,
+-		(uint16_t *)(((char *) src_bits) +
+-		src_y * src_stride * 4 + src_x * 2), src_stride * 2);
++		width >> 1,
++		height,
++		(uint16_t *) dst_bytes,
++		dst_stride >> 1,
++		(uint16_t *) src_bytes,
++		src_stride >> 1);
+ 	return TRUE;
+     case 32:
+ 	pixman_composite_src_8888_8888_asm_neon (
+-		width, height,
+-		(uint32_t *)(((char *) dst_bits) +
+-		dst_y * dst_stride * 4 + dst_x * 4), dst_stride,
+-		(uint32_t *)(((char *) src_bits) +
+-		src_y * src_stride * 4 + src_x * 4), src_stride);
++		width >> 2,
++		height,
++		(uint32_t *) dst_bytes,
++		dst_stride >> 2,
++		(uint32_t *) src_bytes,
++		src_stride >> 2);
+ 	return TRUE;
+     default:
+ 	return FALSE;
+-- 
+1.6.2.4
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/1-composite.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/1-composite.patch
new file mode 100644
index 0000000..31bfa39
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/1-composite.patch
@@ -0,0 +1,161 @@
+From 78652135f48c6a304fc2e75bc0e440b8b2034a4d Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Tue, 23 Feb 2010 23:44:00 +0000
+Subject: ARM: added 'neon_composite_over_n_8888_8888_ca' fast path
+
+This fast path function improves performance of 'firefox-talos-gfx'
+cairo-perf trace.
+
+Benchmark from ARM Cortex-A8 @720MHz
+
+before:
+
+[ # ]  backend                         test   min(s) median(s) stddev. count
+[  0]    image            firefox-talos-gfx  139.969  141.176   0.35%    6/6
+
+after:
+
+[ # ]  backend                         test   min(s) median(s) stddev. count
+[  0]    image            firefox-talos-gfx  111.810  112.196   0.23%    6/6
+---
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index 2986884..e90d662 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -1026,6 +1026,111 @@ generate_composite_function \
+ 
+ /******************************************************************************/
+ 
++.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_head
++    /*
++     * 'combine_mask_ca' replacement
++     *
++     * input:  solid src (n) in {d8,  d9,  d10, d11}
++     *         dest in          {d4,  d5,  d6,  d7 }
++     *         mask in          {d24, d25, d26, d27}
++     * output: updated src in   {d0,  d1,  d2,  d3 }
++     *         updated mask in  {d24, d25, d26, d3 }
++     */
++    vmull.u8    q0,  d24, d8
++    vmull.u8    q1,  d25, d9
++    vmull.u8    q6,  d26, d10
++    vmull.u8    q7,  d27, d11
++    vmull.u8    q9,  d11, d25
++    vmull.u8    q12, d11, d24
++    vmull.u8    q13, d11, d26
++    vrshr.u16   q8,  q0,  #8
++    vrshr.u16   q10, q1,  #8
++    vrshr.u16   q11, q6,  #8
++    vraddhn.u16 d0,  q0,  q8
++    vraddhn.u16 d1,  q1,  q10
++    vraddhn.u16 d2,  q6,  q11
++    vrshr.u16   q11, q12, #8
++    vrshr.u16   q8,  q9,  #8
++    vrshr.u16   q6,  q13, #8
++    vrshr.u16   q10, q7,  #8
++    vraddhn.u16 d24, q12, q11
++    vraddhn.u16 d25, q9,  q8
++    vraddhn.u16 d26, q13, q6
++    vraddhn.u16 d3,  q7,  q10
++    /*
++     * 'combine_over_ca' replacement
++     *
++     * output: updated dest in {d28, d29, d30, d31}
++     */
++    vmvn.8      d24, d24
++    vmvn.8      d25, d25
++    vmull.u8    q8,  d24, d4
++    vmull.u8    q9,  d25, d5
++    vmvn.8      d26, d26
++    vmvn.8      d27, d3
++    vmull.u8    q10, d26, d6
++    vmull.u8    q11, d27, d7
++.endm
++
++.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail
++    /* ... continue 'combine_over_ca' replacement */
++    vrshr.u16   q14, q8,  #8
++    vrshr.u16   q15, q9,  #8
++    vrshr.u16   q6,  q10, #8
++    vrshr.u16   q7,  q11, #8
++    vraddhn.u16 d28, q14, q8
++    vraddhn.u16 d29, q15, q9
++    vraddhn.u16 d30, q6,  q10
++    vraddhn.u16 d31, q7,  q11
++    vqadd.u8    q14, q0,  q14
++    vqadd.u8    q15, q1,  q15
++.endm
++
++.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head
++        vrshr.u16   q14, q8, #8
++        vrshr.u16   q15, q9, #8
++    vld4.8      {d4, d5, d6, d7}, [DST_R, :128]!
++        vrshr.u16   q6, q10, #8
++        vrshr.u16   q7, q11, #8
++        vraddhn.u16 d28, q14, q8
++        vraddhn.u16 d29, q15, q9
++        vraddhn.u16 d30, q6, q10
++        vraddhn.u16 d31, q7, q11
++    vld4.8      {d24, d25, d26, d27}, [MASK]!
++        vqadd.u8    q14, q0, q14
++        vqadd.u8    q15, q1, q15
++    cache_preload 8, 8
++    pixman_composite_over_n_8888_8888_ca_process_pixblock_head
++    vst4.8      {d28, d29, d30, d31}, [DST_W, :128]!
++.endm
++
++.macro pixman_composite_over_n_8888_8888_ca_init
++    add         DUMMY, sp, #ARGS_STACK_OFFSET
++    vpush       {d8-d15}
++    vld1.32     {d11[0]}, [DUMMY]
++    vdup.8      d8, d11[0]
++    vdup.8      d9, d11[1]
++    vdup.8      d10, d11[2]
++    vdup.8      d11, d11[3]
++.endm
++
++.macro pixman_composite_over_n_8888_8888_ca_cleanup
++    vpop        {d8-d15}
++.endm
++
++generate_composite_function \
++    pixman_composite_over_n_8888_8888_ca_asm_neon, 0, 32, 32, \
++    FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
++    8, /* number of pixels, processed in a single block */ \
++    5, /* prefetch distance */ \
++    pixman_composite_over_n_8888_8888_ca_init, \
++    pixman_composite_over_n_8888_8888_ca_cleanup, \
++    pixman_composite_over_n_8888_8888_ca_process_pixblock_head, \
++    pixman_composite_over_n_8888_8888_ca_process_pixblock_tail, \
++    pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head
++
++/******************************************************************************/
++
+ .macro pixman_composite_add_n_8_8_process_pixblock_head
+     /* expecting source data in {d8, d9, d10, d11} */
+     /* d8 - blue, d9 - green, d10 - red, d11 - alpha */
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 557301e..3f0e18e 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -269,6 +269,7 @@ BIND_SRC_NULL_DST(over_8888_8888, uint32_t, 1, uint32_t, 1)
+ 
+ BIND_N_MASK_DST(over_n_8_0565, uint8_t, 1, uint16_t, 1)
+ BIND_N_MASK_DST(over_n_8_8888, uint8_t, 1, uint32_t, 1)
++BIND_N_MASK_DST(over_n_8888_8888_ca, uint32_t, 1, uint32_t, 1)
+ BIND_N_MASK_DST(add_n_8_8, uint8_t, 1, uint8_t, 1)
+ 
+ BIND_SRC_N_DST(over_8888_n_8888, uint32_t, 1, uint32_t, 1)
+@@ -412,6 +413,10 @@ static const pixman_fast_path_t arm_neon_fast_paths[] =
+     PIXMAN_STD_FAST_PATH (OVER, solid,    null,     r5g6b5,   neon_composite_over_n_0565),
+     PIXMAN_STD_FAST_PATH (OVER, solid,    null,     a8r8g8b8, neon_composite_over_n_8888),
+     PIXMAN_STD_FAST_PATH (OVER, solid,    null,     x8r8g8b8, neon_composite_over_n_8888),
++    PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, a8r8g8b8, neon_composite_over_n_8888_8888_ca),
++    PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, x8r8g8b8, neon_composite_over_n_8888_8888_ca),
++    PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, a8b8g8r8, neon_composite_over_n_8888_8888_ca),
++    PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, x8b8g8r8, neon_composite_over_n_8888_8888_ca),
+     PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid,    a8r8g8b8, neon_composite_over_8888_n_8888),
+     PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid,    x8r8g8b8, neon_composite_over_8888_n_8888),
+     PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8,       a8r8g8b8, neon_composite_over_8888_8_8888),
+--
+cgit v0.8.3-6-g21f6
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/2-composite.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/2-composite.patch
new file mode 100644
index 0000000..84d4d9c
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/2-composite.patch
@@ -0,0 +1,102 @@
+From 6e0df74dbfca26f92a18d968e1bf410bae134c8a Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Wed, 24 Feb 2010 00:26:57 +0000
+Subject: ARM: added 'neon_composite_src_x888_8888' fast path
+
+This fast path function improves performance of 'gnome-system-monitor'
+cairo-perf trace.
+
+Benchmark from ARM Cortex-A8 @720MHz
+
+before:
+
+[ # ]  backend                         test   min(s) median(s) stddev. count
+[  0]    image         gnome-system-monitor   68.838   68.899   0.05%    5/6
+
+after:
+
+[ # ]  backend                         test   min(s) median(s) stddev. count
+[  0]    image         gnome-system-monitor   53.336   53.384   0.09%    6/6
+---
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index e90d662..f2643de 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -947,6 +947,44 @@ generate_composite_function \
+ 
+ /******************************************************************************/
+ 
++.macro pixman_composite_src_x888_8888_process_pixblock_head
++    vorr     q0, q0, q2
++    vorr     q1, q1, q2
++.endm
++
++.macro pixman_composite_src_x888_8888_process_pixblock_tail
++.endm
++
++.macro pixman_composite_src_x888_8888_process_pixblock_tail_head
++    vst1.32 {d0, d1, d2, d3}, [DST_W, :128]!
++    vld1.32 {d0, d1, d2, d3}, [SRC]!
++    vorr     q0, q0, q2
++    vorr     q1, q1, q2
++    cache_preload 8, 8
++.endm
++
++.macro pixman_composite_src_x888_8888_init
++    vmov.u8  q2, #0xFF
++    vshl.u32 q2, q2, #24
++.endm
++
++generate_composite_function \
++    pixman_composite_src_x888_8888_asm_neon, 32, 0, 32, \
++    FLAG_DST_WRITEONLY, \
++    8, /* number of pixels, processed in a single block */ \
++    10, /* prefetch distance */ \
++    pixman_composite_src_x888_8888_init, \
++    default_cleanup, \
++    pixman_composite_src_x888_8888_process_pixblock_head, \
++    pixman_composite_src_x888_8888_process_pixblock_tail, \
++    pixman_composite_src_x888_8888_process_pixblock_tail_head, \
++    0, /* dst_w_basereg */ \
++    0, /* dst_r_basereg */ \
++    0, /* src_basereg   */ \
++    0  /* mask_basereg  */
++
++/******************************************************************************/
++
+ .macro pixman_composite_over_n_8_8888_process_pixblock_head
+     /* expecting deinterleaved source data in {d8, d9, d10, d11} */
+     /* d8 - blue, d9 - green, d10 - red, d11 - alpha */
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 3f0e18e..0a7ac31 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -251,6 +251,7 @@ neon_composite_##name (pixman_implementation_t *imp,                    \
+ 
+ 
+ BIND_SRC_NULL_DST(src_8888_8888, uint32_t, 1, uint32_t, 1)
++BIND_SRC_NULL_DST(src_x888_8888, uint32_t, 1, uint32_t, 1)
+ BIND_SRC_NULL_DST(src_0565_0565, uint16_t, 1, uint16_t, 1)
+ BIND_SRC_NULL_DST(src_0888_0888, uint8_t, 3, uint8_t, 3)
+ BIND_SRC_NULL_DST(src_8888_0565, uint32_t, 1, uint16_t, 1)
+@@ -400,6 +401,10 @@ static const pixman_fast_path_t arm_neon_fast_paths[] =
+     PIXMAN_STD_FAST_PATH (SRC,  x8r8g8b8, null,     x8r8g8b8, neon_composite_src_8888_8888),
+     PIXMAN_STD_FAST_PATH (SRC,  a8b8g8r8, null,     x8b8g8r8, neon_composite_src_8888_8888),
+     PIXMAN_STD_FAST_PATH (SRC,  x8b8g8r8, null,     x8b8g8r8, neon_composite_src_8888_8888),
++    PIXMAN_STD_FAST_PATH (SRC,  a8r8g8b8, null,     a8r8g8b8, neon_composite_src_8888_8888),
++    PIXMAN_STD_FAST_PATH (SRC,  a8b8g8r8, null,     a8b8g8r8, neon_composite_src_8888_8888),
++    PIXMAN_STD_FAST_PATH (SRC,  x8r8g8b8, null,     a8r8g8b8, neon_composite_src_x888_8888),
++    PIXMAN_STD_FAST_PATH (SRC,  x8b8g8r8, null,     a8b8g8r8, neon_composite_src_x888_8888),
+     PIXMAN_STD_FAST_PATH (SRC,  r8g8b8,   null,     r8g8b8,   neon_composite_src_0888_0888),
+     PIXMAN_STD_FAST_PATH (SRC,  b8g8r8,   null,     x8r8g8b8, neon_composite_src_0888_8888_rev),
+     PIXMAN_STD_FAST_PATH (SRC,  b8g8r8,   null,     r5g6b5,   neon_composite_src_0888_0565_rev),
+@@ -430,6 +435,7 @@ static const pixman_fast_path_t arm_neon_fast_paths[] =
+     PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null,     x8r8g8b8, neon_composite_over_8888_8888),
+     PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null,     a8b8g8r8, neon_composite_over_8888_8888),
+     PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null,     x8b8g8r8, neon_composite_over_8888_8888),
++    PIXMAN_STD_FAST_PATH (OVER, x8r8g8b8, null,     a8r8g8b8, neon_composite_src_x888_8888),
+     PIXMAN_STD_FAST_PATH (ADD,  solid,    a8,       a8,       neon_composite_add_n_8_8),
+     PIXMAN_STD_FAST_PATH (ADD,  a8,       a8,       a8,       neon_composite_add_8_8_8),
+     PIXMAN_STD_FAST_PATH (ADD,  a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_add_8888_8888_8888),
+--
+cgit v0.8.3-6-g21f6
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/3-composite.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/3-composite.patch
new file mode 100644
index 0000000..06e40fe
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/3-composite.patch
@@ -0,0 +1,108 @@
+From 19fc0c4c8d28796f0fbc2c8f47edc130851ae3a5 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Wed, 24 Feb 2010 02:14:45 +0000
+Subject: ARM: added 'neon_composite_over_reverse_n_8888' fast path
+
+This fast path function improves performance of 'poppler' cairo-perf trace.
+
+Benchmark from ARM Cortex-A8 @720MHz
+
+before:
+
+[ # ]  backend                         test   min(s) median(s) stddev. count
+[  0]    image                      poppler   38.986   39.158   0.23%    6/6
+
+after:
+
+[ # ]  backend                         test   min(s) median(s) stddev. count
+[  0]    image                      poppler   24.981   25.136   0.28%    6/6
+---
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index f2643de..eb8cc4c 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -680,6 +680,61 @@ generate_composite_function \
+ 
+ /******************************************************************************/
+ 
++.macro pixman_composite_over_reverse_n_8888_process_pixblock_tail_head
++        vrshr.u16   q14, q8, #8
++                                    PF add PF_X, PF_X, #8
++                                    PF tst PF_CTL, #0xF
++        vrshr.u16   q15, q9, #8
++        vrshr.u16   q12, q10, #8
++        vrshr.u16   q13, q11, #8
++                                    PF addne PF_X, PF_X, #8
++                                    PF subne PF_CTL, PF_CTL, #1
++        vraddhn.u16 d28, q14, q8
++        vraddhn.u16 d29, q15, q9
++                                    PF cmp PF_X, ORIG_W
++        vraddhn.u16 d30, q12, q10
++        vraddhn.u16 d31, q13, q11
++        vqadd.u8    q14, q0, q14
++        vqadd.u8    q15, q1, q15
++    vld4.8      {d0, d1, d2, d3}, [DST_R, :128]!
++    vmvn.8      d22, d3
++                                    PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
++        vst4.8      {d28, d29, d30, d31}, [DST_W, :128]!
++                                    PF subge PF_X, PF_X, ORIG_W
++    vmull.u8    q8, d22, d4
++                                    PF subges PF_CTL, PF_CTL, #0x10
++    vmull.u8    q9, d22, d5
++    vmull.u8    q10, d22, d6
++                                    PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
++    vmull.u8    q11, d22, d7
++.endm
++
++.macro pixman_composite_over_reverse_n_8888_init
++    add         DUMMY, sp, #ARGS_STACK_OFFSET
++    vld1.32     {d7[0]}, [DUMMY]
++    vdup.8      d4, d7[0]
++    vdup.8      d5, d7[1]
++    vdup.8      d6, d7[2]
++    vdup.8      d7, d7[3]
++.endm
++
++generate_composite_function \
++    pixman_composite_over_reverse_n_8888_asm_neon, 0, 0, 32, \
++    FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
++    8, /* number of pixels, processed in a single block */ \
++    5, /* prefetch distance */ \
++    pixman_composite_over_reverse_n_8888_init, \
++    default_cleanup, \
++    pixman_composite_over_8888_8888_process_pixblock_head, \
++    pixman_composite_over_8888_8888_process_pixblock_tail, \
++    pixman_composite_over_reverse_n_8888_process_pixblock_tail_head, \
++    28, /* dst_w_basereg */ \
++    0,  /* dst_r_basereg */ \
++    4,  /* src_basereg   */ \
++    24  /* mask_basereg  */
++
++/******************************************************************************/
++
+ .macro pixman_composite_over_n_8_0565_process_pixblock_head
+     /* in */
+     vmull.u8    q0, d24, d8
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 0a7ac31..30c5056 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -264,6 +264,7 @@ BIND_SRC_NULL_DST(add_8888_8888, uint32_t, 1, uint32_t, 1)
+ 
+ BIND_N_NULL_DST(over_n_0565, uint16_t, 1)
+ BIND_N_NULL_DST(over_n_8888, uint32_t, 1)
++BIND_N_NULL_DST(over_reverse_n_8888, uint32_t, 1)
+ 
+ BIND_SRC_NULL_DST(over_8888_0565, uint32_t, 1, uint16_t, 1)
+ BIND_SRC_NULL_DST(over_8888_8888, uint32_t, 1, uint32_t, 1)
+@@ -442,6 +443,8 @@ static const pixman_fast_path_t arm_neon_fast_paths[] =
+     PIXMAN_STD_FAST_PATH (ADD,  a8,       null,     a8,       neon_composite_add_8000_8000),
+     PIXMAN_STD_FAST_PATH (ADD,  a8r8g8b8, null,     a8r8g8b8, neon_composite_add_8888_8888),
+     PIXMAN_STD_FAST_PATH (ADD,  a8b8g8r8, null,     a8b8g8r8, neon_composite_add_8888_8888),
++    PIXMAN_STD_FAST_PATH (OVER_REVERSE, solid, null, a8r8g8b8, neon_composite_over_reverse_n_8888),
++    PIXMAN_STD_FAST_PATH (OVER_REVERSE, solid, null, a8b8g8r8, neon_composite_over_reverse_n_8888),
+ 
+     { PIXMAN_OP_NONE },
+ };
+--
+cgit v0.8.3-6-g21f6
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
new file mode 100644
index 0000000..06b07a3
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
@@ -0,0 +1,114 @@
+From 5234e3c2c161ed5fc92caa336ae78f89112c7d77 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Tue, 16 Mar 2010 16:55:28 +0100
+Subject: [PATCH 1/5] Generic C implementation of pixman_blt with overlapping support
+
+Uses memcpy/memmove functions to copy pixels, can handle the
+case when both source and destination areas are in the same
+image (this is useful for scrolling).
+
+It is assumed that copying direction is only important when
+using the same image for both source and destination (and
+src_stride == dst_stride). Copying direction is undefined
+for the images with different source and destination stride
+which happen to be in the overlapped areas (but this is an
+unrealistic case anyway).
+---
+ pixman/pixman-general.c |   21 ++++++++++++++++++---
+ pixman/pixman-private.h |   43 +++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 61 insertions(+), 3 deletions(-)
+
+diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c
+index bddf79a..f525744 100644
+--- a/pixman/pixman-general.c
++++ b/pixman/pixman-general.c
+@@ -285,9 +285,24 @@ general_blt (pixman_implementation_t *imp,
+              int                      width,
+              int                      height)
+ {
+-    /* We can't blit unless we have sse2 or mmx */
+-
+-    return FALSE;
++    uint8_t *dst_bytes = (uint8_t *)dst_bits;
++    uint8_t *src_bytes = (uint8_t *)src_bits;
++    int bpp;
++
++    if (src_bpp != dst_bpp || src_bpp & 7)
++	return FALSE;
++
++    bpp = src_bpp >> 3;
++    width *= bpp;
++    src_stride *= 4;
++    dst_stride *= 4;
++    pixman_blt_helper (src_bytes + src_y * src_stride + src_x * bpp,
++                       dst_bytes + dst_y * dst_stride + dst_x * bpp,
++                       src_stride,
++                       dst_stride,
++                       width,
++                       height);
++    return TRUE;
+ }
+ 
+ static pixman_bool_t
+diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
+index d5767af..eeb677d 100644
+--- a/pixman/pixman-private.h
++++ b/pixman/pixman-private.h
+@@ -10,6 +10,7 @@
+ 
+ #include "pixman.h"
+ #include <time.h>
++#include <string.h>
+ #include <assert.h>
+ #include <stdio.h>
+ #include <string.h>
+@@ -867,4 +868,46 @@ void pixman_timer_register (pixman_timer_t *timer);
+ 
+ #endif /* PIXMAN_TIMERS */
+ 
++/* a helper function, can blit 8-bit images with src/dst overlapping support */
++static inline void
++pixman_blt_helper (uint8_t *src_bytes,
++                   uint8_t *dst_bytes,
++                   int      src_stride,
++                   int      dst_stride,
++                   int      width,
++                   int      height)
++{
++    /*
++     * The second part of this check is not strictly needed, but it prevents
++     * unnecessary upside-down processing of areas which belong to different
++     * images. Upside-down processing can be slower with fixed-distance-ahead
++     * prefetch and perceived as having more tearing.
++     */
++    if (src_bytes < dst_bytes + width &&
++	src_bytes + src_stride * height > dst_bytes)
++    {
++	src_bytes += src_stride * height - src_stride;
++	dst_bytes += dst_stride * height - dst_stride;
++	dst_stride = -dst_stride;
++	src_stride = -src_stride;
++	/* Horizontal scrolling to the left needs memmove */
++	if (src_bytes + width > dst_bytes)
++	{
++	    while (--height >= 0)
++	    {
++		memmove (dst_bytes, src_bytes, width);
++		dst_bytes += dst_stride;
++		src_bytes += src_stride;
++	    }
++	    return;
++	}
++    }
++    while (--height >= 0)
++    {
++	memcpy (dst_bytes, src_bytes, width);
++	dst_bytes += dst_stride;
++	src_bytes += src_stride;
++    }
++}
++
+ #endif /* PIXMAN_PRIVATE_H */
+-- 
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
new file mode 100644
index 0000000..bf6e58c
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
@@ -0,0 +1,91 @@
+From f607cd0250d398077b0c51201258775e372cb3c3 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Thu, 22 Oct 2009 05:45:47 +0300
+Subject: [PATCH 2/5] Support of overlapping src/dst for pixman_blt_mmx
+
+---
+ pixman/pixman-mmx.c |   55 +++++++++++++++++++++++++++++---------------------
+ 1 files changed, 32 insertions(+), 23 deletions(-)
+
+diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
+index e084e7f..6212b31 100644
+--- a/pixman/pixman-mmx.c
++++ b/pixman/pixman-mmx.c
+@@ -2994,34 +2994,43 @@ pixman_blt_mmx (uint32_t *src_bits,
+ {
+     uint8_t *   src_bytes;
+     uint8_t *   dst_bytes;
+-    int byte_width;
++    int         bpp;
+ 
+-    if (src_bpp != dst_bpp)
++    if (src_bpp != dst_bpp || src_bpp & 7)
+ 	return FALSE;
+ 
+-    if (src_bpp == 16)
+-    {
+-	src_stride = src_stride * (int) sizeof (uint32_t) / 2;
+-	dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
+-	src_bytes = (uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
+-	dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+-	byte_width = 2 * width;
+-	src_stride *= 2;
+-	dst_stride *= 2;
+-    }
+-    else if (src_bpp == 32)
++    bpp = src_bpp >> 3;
++    width *= bpp;
++    src_stride *= 4;
++    dst_stride *= 4;
++    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++    if (src_bpp != 16 && src_bpp != 32)
+     {
+-	src_stride = src_stride * (int) sizeof (uint32_t) / 4;
+-	dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
+-	src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
+-	dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+-	byte_width = 4 * width;
+-	src_stride *= 4;
+-	dst_stride *= 4;
++	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++	                   width, height);
++	return TRUE;
+     }
+-    else
++
++    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
+     {
+-	return FALSE;
++	src_bytes += src_stride * height - src_stride;
++	dst_bytes += dst_stride * height - dst_stride;
++	dst_stride = -dst_stride;
++	src_stride = -src_stride;
++
++	if (src_bytes + width > dst_bytes)
++	{
++	    /* TODO: reverse scanline copy using MMX */
++	    while (--height >= 0)
++	    {
++		memmove (dst_bytes, src_bytes, width);
++		dst_bytes += dst_stride;
++		src_bytes += src_stride;
++	    }
++	    return TRUE;
++	}
+     }
+ 
+     while (height--)
+@@ -3031,7 +3040,7 @@ pixman_blt_mmx (uint32_t *src_bits,
+ 	uint8_t *d = dst_bytes;
+ 	src_bytes += src_stride;
+ 	dst_bytes += dst_stride;
+-	w = byte_width;
++	w = width;
+ 
+ 	while (w >= 2 && ((unsigned long)d & 3))
+ 	{
+-- 
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
new file mode 100644
index 0000000..c1f3b2e
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
@@ -0,0 +1,91 @@
+From 45a9a537f94a7feab47bd82171c7d620f0d34e3f Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Thu, 22 Oct 2009 05:45:54 +0300
+Subject: [PATCH 3/5] Support of overlapping src/dst for pixman_blt_sse2
+
+---
+ pixman/pixman-sse2.c |   55 +++++++++++++++++++++++++++++--------------------
+ 1 files changed, 32 insertions(+), 23 deletions(-)
+
+diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
+index 946e7ba..66053ae 100644
+--- a/pixman/pixman-sse2.c
++++ b/pixman/pixman-sse2.c
+@@ -5299,34 +5299,43 @@ pixman_blt_sse2 (uint32_t *src_bits,
+ {
+     uint8_t *   src_bytes;
+     uint8_t *   dst_bytes;
+-    int byte_width;
++    int         bpp;
+ 
+-    if (src_bpp != dst_bpp)
++    if (src_bpp != dst_bpp || src_bpp & 7)
+ 	return FALSE;
+ 
+-    if (src_bpp == 16)
+-    {
+-	src_stride = src_stride * (int) sizeof (uint32_t) / 2;
+-	dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
+-	src_bytes =(uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
+-	dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+-	byte_width = 2 * width;
+-	src_stride *= 2;
+-	dst_stride *= 2;
+-    }
+-    else if (src_bpp == 32)
++    bpp = src_bpp >> 3;
++    width *= bpp;
++    src_stride *= 4;
++    dst_stride *= 4;
++    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++    if (src_bpp != 16 && src_bpp != 32)
+     {
+-	src_stride = src_stride * (int) sizeof (uint32_t) / 4;
+-	dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
+-	src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
+-	dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+-	byte_width = 4 * width;
+-	src_stride *= 4;
+-	dst_stride *= 4;
++	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++	                   width, height);
++	return TRUE;
+     }
+-    else
++
++    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
+     {
+-	return FALSE;
++	src_bytes += src_stride * height - src_stride;
++	dst_bytes += dst_stride * height - dst_stride;
++	dst_stride = -dst_stride;
++	src_stride = -src_stride;
++
++	if (src_bytes + width > dst_bytes)
++	{
++	    /* TODO: reverse scanline copy using SSE2 */
++	    while (--height >= 0)
++	    {
++		memmove (dst_bytes, src_bytes, width);
++		dst_bytes += dst_stride;
++		src_bytes += src_stride;
++	    }
++	    return TRUE;
++	}
+     }
+ 
+     cache_prefetch ((__m128i*)src_bytes);
+@@ -5339,7 +5348,7 @@ pixman_blt_sse2 (uint32_t *src_bits,
+ 	uint8_t *d = dst_bytes;
+ 	src_bytes += src_stride;
+ 	dst_bytes += dst_stride;
+-	w = byte_width;
++	w = width;
+ 
+ 	cache_prefetch_next ((__m128i*)s);
+ 	cache_prefetch_next ((__m128i*)d);
+-- 
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
new file mode 100644
index 0000000..c37673e
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
@@ -0,0 +1,94 @@
+From 4cf5bfc72a724fb653c48338b93e91dccea238af Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Wed, 18 Nov 2009 06:08:48 +0200
+Subject: [PATCH 4/5] Support of overlapping src/dst for pixman_blt_neon
+
+---
+ pixman/pixman-arm-neon.c |   62 +++++++++++++++++++++++++++++++++++++--------
+ 1 files changed, 51 insertions(+), 11 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 6808b36..7feee1d 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -168,26 +168,66 @@ pixman_blt_neon (uint32_t *src_bits,
+                  int       width,
+                  int       height)
+ {
+-    if (src_bpp != dst_bpp)
++    uint8_t *   src_bytes;
++    uint8_t *   dst_bytes;
++    int         bpp;
++
++    if (src_bpp != dst_bpp || src_bpp & 7)
+ 	return FALSE;
+ 
++    bpp = src_bpp >> 3;
++    width *= bpp;
++    src_stride *= 4;
++    dst_stride *= 4;
++    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++    if (src_bpp != 16 && src_bpp != 32)
++    {
++	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++	                   width, height);
++	return TRUE;
++    }
++
++    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
++    {
++	src_bytes += src_stride * height - src_stride;
++	dst_bytes += dst_stride * height - dst_stride;
++	dst_stride = -dst_stride;
++	src_stride = -src_stride;
++
++	if (src_bytes + width > dst_bytes)
++	{
++	    /* TODO: reverse scanline copy using NEON */
++	    while (--height >= 0)
++	    {
++		memmove (dst_bytes, src_bytes, width);
++		dst_bytes += dst_stride;
++		src_bytes += src_stride;
++	    }
++	    return TRUE;
++	}
++    }
++
+     switch (src_bpp)
+     {
+     case 16:
+ 	pixman_composite_src_0565_0565_asm_neon (
+-		width, height,
+-		(uint16_t *)(((char *) dst_bits) +
+-		dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2,
+-		(uint16_t *)(((char *) src_bits) +
+-		src_y * src_stride * 4 + src_x * 2), src_stride * 2);
++		width >> 1,
++		height,
++		(uint16_t *) dst_bytes,
++		dst_stride >> 1,
++		(uint16_t *) src_bytes,
++		src_stride >> 1);
+ 	return TRUE;
+     case 32:
+ 	pixman_composite_src_8888_8888_asm_neon (
+-		width, height,
+-		(uint32_t *)(((char *) dst_bits) +
+-		dst_y * dst_stride * 4 + dst_x * 4), dst_stride,
+-		(uint32_t *)(((char *) src_bits) +
+-		src_y * src_stride * 4 + src_x * 4), src_stride);
++		width >> 2,
++		height,
++		(uint32_t *) dst_bytes,
++		dst_stride >> 2,
++		(uint32_t *) src_bytes,
++		src_stride >> 2);
+ 	return TRUE;
+     default:
+ 	return FALSE;
+-- 
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
new file mode 100644
index 0000000..d776574
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
@@ -0,0 +1,169 @@
+From d1410558827fce8aac354274a7150fa915881c50 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Thu, 10 Dec 2009 00:51:50 +0200
+Subject: [PATCH 5/5] ARM: added NEON optimizations for fetch/store r5g6b5 scanline
+
+---
+ pixman/pixman-access.c       |   23 ++++++++++++++++++++++-
+ pixman/pixman-arm-neon-asm.S |   20 ++++++++++++++++++++
+ pixman/pixman-arm-neon.c     |   41 +++++++++++++++++++++++++++++++++++++++++
+ pixman/pixman-private.h      |    5 +++++
+ 4 files changed, 88 insertions(+), 1 deletions(-)
+
+diff --git a/pixman/pixman-access.c b/pixman/pixman-access.c
+index fa0a267..5bb3e09 100644
+--- a/pixman/pixman-access.c
++++ b/pixman/pixman-access.c
+@@ -2748,7 +2748,7 @@ typedef struct
+ 	    store_scanline_ ## format, store_scanline_generic_64	\
+     }
+ 
+-static const format_info_t accessors[] =
++static format_info_t accessors[] =
+ {
+ /* 32 bpp formats */
+     FORMAT_INFO (a8r8g8b8),
+@@ -2891,6 +2891,27 @@ _pixman_bits_image_setup_raw_accessors (bits_image_t *image)
+ 	setup_accessors (image);
+ }
+ 
++void
++_pixman_bits_override_accessors (pixman_format_code_t format,
++                                 fetch_scanline_t     fetch_func,
++                                 store_scanline_t     store_func)
++{
++    format_info_t *info = accessors;
++
++    while (info->format != PIXMAN_null)
++    {
++	if (info->format == format)
++	{
++	    if (fetch_func)
++		info->fetch_scanline_raw_32 = fetch_func;
++	    if (store_func)
++		info->store_scanline_raw_32 = store_func;
++	    return;
++	}
++	info++;
++    }
++}
++
+ #else
+ 
+ void
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index 51bc347..f30869e 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -458,6 +458,16 @@ generate_composite_function \
+     pixman_composite_src_8888_0565_process_pixblock_tail, \
+     pixman_composite_src_8888_0565_process_pixblock_tail_head
+ 
++generate_composite_function_single_scanline \
++    pixman_store_scanline_r5g6b5_asm_neon, 32, 0, 16, \
++    FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
++    8, /* number of pixels, processed in a single block */ \
++    default_init, \
++    default_cleanup, \
++    pixman_composite_src_8888_0565_process_pixblock_head, \
++    pixman_composite_src_8888_0565_process_pixblock_tail, \
++    pixman_composite_src_8888_0565_process_pixblock_tail_head
++
+ /******************************************************************************/
+ 
+ .macro pixman_composite_src_0565_8888_process_pixblock_head
+@@ -493,6 +503,16 @@ generate_composite_function \
+     pixman_composite_src_0565_8888_process_pixblock_tail, \
+     pixman_composite_src_0565_8888_process_pixblock_tail_head
+ 
++generate_composite_function_single_scanline \
++    pixman_fetch_scanline_r5g6b5_asm_neon, 16, 0, 32, \
++    FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
++    8, /* number of pixels, processed in a single block */ \
++    default_init, \
++    default_cleanup, \
++    pixman_composite_src_0565_8888_process_pixblock_head, \
++    pixman_composite_src_0565_8888_process_pixblock_tail, \
++    pixman_composite_src_0565_8888_process_pixblock_tail_head
++
+ /******************************************************************************/
+ 
+ .macro pixman_composite_add_8000_8000_process_pixblock_head
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 7feee1d..fda7a09 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -375,6 +375,43 @@ neon_combine_##name##_u (pixman_implementation_t *imp,                   \
+ BIND_COMBINE_U (over)
+ BIND_COMBINE_U (add)
+ 
++void
++pixman_fetch_scanline_r5g6b5_asm_neon (int             width,
++                                       uint32_t       *buffer,
++                                       const uint16_t *pixel);
++void
++pixman_store_scanline_r5g6b5_asm_neon (int             width,
++                                       uint16_t       *pixel,
++                                       const uint32_t *values);
++
++static void
++neon_fetch_scanline_r5g6b5 (pixman_image_t *image,
++                            int             x,
++                            int             y,
++                            int             width,
++                            uint32_t *      buffer,
++                            const uint32_t *mask,
++                            uint32_t        mask_bits)
++{
++    const uint32_t *bits = image->bits.bits + y * image->bits.rowstride;
++    const uint16_t *pixel = (const uint16_t *)bits + x;
++
++    pixman_fetch_scanline_r5g6b5_asm_neon (width, buffer, pixel);
++}
++
++static void
++neon_store_scanline_r5g6b5 (bits_image_t *  image,
++                            int             x,
++                            int             y,
++                            int             width,
++                            const uint32_t *values)
++{
++    uint32_t *bits = image->bits + image->rowstride * y;
++    uint16_t *pixel = ((uint16_t *) bits) + x;
++
++    pixman_store_scanline_r5g6b5_asm_neon (width, pixel, values);
++}
++
+ pixman_implementation_t *
+ _pixman_implementation_create_arm_neon (void)
+ {
+@@ -385,6 +422,10 @@ _pixman_implementation_create_arm_neon (void)
+     imp->combine_32[PIXMAN_OP_OVER] = neon_combine_over_u;
+     imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u;
+ 
++    _pixman_bits_override_accessors (PIXMAN_r5g6b5,
++                                     neon_fetch_scanline_r5g6b5,
++                                     neon_store_scanline_r5g6b5);
++
+     imp->blt = arm_neon_blt;
+     imp->fill = arm_neon_fill;
+ 
+diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
+index eeb677d..ba2d401 100644
+--- a/pixman/pixman-private.h
++++ b/pixman/pixman-private.h
+@@ -220,6 +220,11 @@ void
+ _pixman_bits_image_setup_raw_accessors (bits_image_t *image);
+ 
+ void
++_pixman_bits_override_accessors (pixman_format_code_t format,
++                                 fetch_scanline_t     fetch_func,
++                                 store_scanline_t     store_func);
++
++void
+ _pixman_image_get_scanline_generic_64  (pixman_image_t *image,
+                                         int             x,
+                                         int             y,
+-- 
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/565-scanline.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/565-scanline.patch
new file mode 100644
index 0000000..8461a46
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/565-scanline.patch
@@ -0,0 +1,257 @@
+From deef1daf5896062f47fa61b94e1e77c7c0041820 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Fri, 04 Dec 2009 16:49:19 +0000
+Subject: A copy-paste version of 16bpp bilinear scanline fetcher
+
+---
+diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c
+index 3d78ff0..1656975 100644
+--- a/pixman/pixman-bits-image.c
++++ b/pixman/pixman-bits-image.c
+@@ -535,6 +535,212 @@ bits_image_fetch_bilinear_no_repeat_8888 (pixman_image_t * ima,
+ 	*buffer++ = 0;
+ }
+ 
++static void
++bits_image_fetch_bilinear_no_repeat_0565 (pixman_image_t * ima,
++					  int              offset,
++					  int              line,
++					  int              width,
++					  uint32_t *       buffer,
++					  const uint32_t * mask,
++					  uint32_t         mask_bits)
++{
++    bits_image_t *bits = &ima->bits;
++    pixman_fixed_t x_top, x_bottom, x;
++    pixman_fixed_t ux_top, ux_bottom, ux;
++    pixman_vector_t v;
++    uint32_t top_mask, bottom_mask;
++    uint16_t *top_row;
++    uint16_t *bottom_row;
++    uint32_t *end;
++    uint16_t zero[2] = { 0, 0 };
++    int y, y1, y2;
++    int disty;
++    int mask_inc;
++    int w;
++
++    /* reference point is the center of the pixel */
++    v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2;
++    v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2;
++    v.vector[2] = pixman_fixed_1;
++
++    if (!pixman_transform_point_3d (bits->common.transform, &v))
++	return;
++
++    ux = ux_top = ux_bottom = bits->common.transform->matrix[0][0];
++    x = x_top = x_bottom = v.vector[0] - pixman_fixed_1/2;
++
++    y = v.vector[1] - pixman_fixed_1/2;
++    disty = (y >> 8) & 0xff;
++
++    /* Load the pointers to the first and second lines from the source
++     * image that bilinear code must read.
++     *
++     * The main trick in this code is about the check if any line are
++     * outside of the image;
++     *
++     * When I realize that a line (any one) is outside, I change
++     * the pointer to a dummy area with zeros. Once I change this, I
++     * must be sure the pointer will not change, so I set the
++     * variables to each pointer increments inside the loop.
++     */
++    y1 = pixman_fixed_to_int (y);
++    y2 = y1 + 1;
++
++    if (y1 < 0 || y1 >= bits->height)
++    {
++	top_row = zero;
++	x_top = 0;
++	ux_top = 0;
++    }
++    else
++    {
++	top_row = bits->bits + y1 * bits->rowstride;
++	x_top = x;
++	ux_top = ux;
++    }
++
++    if (y2 < 0 || y2 >= bits->height)
++    {
++	bottom_row = zero;
++	x_bottom = 0;
++	ux_bottom = 0;
++    }
++    else
++    {
++	bottom_row = bits->bits + y2 * bits->rowstride;
++	x_bottom = x;
++	ux_bottom = ux;
++    }
++
++    /* Instead of checking whether the operation uses the mast in
++     * each loop iteration, verify this only once and prepare the
++     * variables to make the code smaller inside the loop.
++     */
++    if (!mask)
++    {
++        mask_inc = 0;
++        mask_bits = 1;
++        mask = &mask_bits;
++    }
++    else
++    {
++        /* If have a mask, prepare the variables to check it */
++        mask_inc = 1;
++    }
++
++    /* If both are zero, then the whole thing is zero */
++    if (top_row == zero && bottom_row == zero)
++    {
++	memset (buffer, 0, width * sizeof (uint32_t));
++	return;
++    }
++    else
++    {
++	if (top_row == zero)
++	{
++	    top_mask = 0;
++	    bottom_mask = 0xff000000;
++	}
++	else if (bottom_row == zero)
++	{
++	    top_mask = 0xff000000;
++	    bottom_mask = 0;
++	}
++	else
++	{
++	    top_mask = 0xff000000;
++	    bottom_mask = 0xff000000;
++	}
++    }
++
++    end = buffer + width;
++
++    /* Zero fill to the left of the image */
++    while (buffer < end && x < pixman_fixed_minus_1)
++    {
++	*buffer++ = 0;
++	x += ux;
++	x_top += ux_top;
++	x_bottom += ux_bottom;
++	mask += mask_inc;
++    }
++
++    /* Left edge
++     */
++    while (buffer < end && x < 0)
++    {
++	uint32_t tr, br;
++	int32_t distx;
++
++	tr = CONVERT_0565_TO_0888 (top_row[pixman_fixed_to_int (x_top) + 1]) | top_mask;
++	br = CONVERT_0565_TO_0888 (bottom_row[pixman_fixed_to_int (x_bottom) + 1]) | bottom_mask;
++
++	distx = (x >> 8) & 0xff;
++
++	*buffer++ = bilinear_interpolation (0, tr, 0, br, distx, disty);
++
++	x += ux;
++	x_top += ux_top;
++	x_bottom += ux_bottom;
++	mask += mask_inc;
++    }
++
++    /* Main part */
++    w = pixman_int_to_fixed (bits->width - 1);
++
++    while (buffer < end  &&  x < w)
++    {
++	if (*mask)
++	{
++	    uint32_t tl, tr, bl, br;
++	    int32_t distx;
++
++	    tl = CONVERT_0565_TO_0888 (top_row [pixman_fixed_to_int (x_top)]) | top_mask;
++	    tr = CONVERT_0565_TO_0888 (top_row [pixman_fixed_to_int (x_top) + 1]) | top_mask;
++	    bl = CONVERT_0565_TO_0888 (bottom_row [pixman_fixed_to_int (x_bottom)]) | bottom_mask;
++	    br = CONVERT_0565_TO_0888 (bottom_row [pixman_fixed_to_int (x_bottom) + 1]) | bottom_mask;
++
++	    distx = (x >> 8) & 0xff;
++
++	    *buffer = bilinear_interpolation (tl, tr, bl, br, distx, disty);
++	}
++
++	buffer++;
++	x += ux;
++	x_top += ux_top;
++	x_bottom += ux_bottom;
++	mask += mask_inc;
++    }
++
++    /* Right Edge */
++    w = pixman_int_to_fixed (bits->width);
++    while (buffer < end  &&  x < w)
++    {
++	if (*mask)
++	{
++	    uint32_t tl, bl;
++	    int32_t distx;
++
++	    tl = CONVERT_0565_TO_0888 (top_row [pixman_fixed_to_int (x_top)]) | top_mask;
++	    bl = CONVERT_0565_TO_0888 (bottom_row [pixman_fixed_to_int (x_bottom)]) | bottom_mask;
++
++	    distx = (x >> 8) & 0xff;
++
++	    *buffer = bilinear_interpolation (tl, 0, bl, 0, distx, disty);
++	}
++
++	buffer++;
++	x += ux;
++	x_top += ux_top;
++	x_bottom += ux_bottom;
++	mask += mask_inc;
++    }
++
++    /* Zero fill to the left of the image */
++    while (buffer < end)
++	*buffer++ = 0;
++}
++
+ static force_inline uint32_t
+ bits_image_fetch_pixel_convolution (bits_image_t   *image,
+ 				    pixman_fixed_t  x,
+@@ -917,14 +1123,26 @@ bits_image_property_changed (pixman_image_t *image)
+ 	     (bits->common.filter == PIXMAN_FILTER_BILINEAR ||
+ 	      bits->common.filter == PIXMAN_FILTER_GOOD	    ||
+ 	      bits->common.filter == PIXMAN_FILTER_BEST)		&&
+-	     bits->common.repeat == PIXMAN_REPEAT_NONE			&&
+-	     (bits->format == PIXMAN_a8r8g8b8	||
+-	      bits->format == PIXMAN_x8r8g8b8))
++	     bits->common.repeat == PIXMAN_REPEAT_NONE)
+     {
+ 	image->common.get_scanline_64 =
+ 	    _pixman_image_get_scanline_generic_64;
+-	image->common.get_scanline_32 =
+-	    bits_image_fetch_bilinear_no_repeat_8888;
++
++	if (bits->format == PIXMAN_a8r8g8b8 || bits->format == PIXMAN_x8r8g8b8)
++	{
++	    image->common.get_scanline_32 =
++		bits_image_fetch_bilinear_no_repeat_8888;
++	}
++	else if (bits->format == PIXMAN_r5g6b5)
++	{
++	    image->common.get_scanline_32 =
++		bits_image_fetch_bilinear_no_repeat_0565;
++	}
++	else
++	{
++	    image->common.get_scanline_32 =
++		bits_image_fetch_transformed;
++	}
+     }
+     else
+     {
+--
+cgit v0.8.3-6-g21f6
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/missing-cache-preload.diff b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/missing-cache-preload.diff
new file mode 100644
index 0000000..475bb35
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/missing-cache-preload.diff
@@ -0,0 +1,28 @@
+From 4f45c7688e6b767a5f7b7f5cced51b4797a3c288 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Fri, 21 May 2010 13:31:03 +0000
+Subject: ARM: added missing cache preload
+
+---
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index 51bc347..a99555a 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -388,6 +388,7 @@ generate_composite_function \
+     vld1.16     {d4, d5}, [DST_R, :128]!
+     vst1.16     {d28, d29}, [DST_W, :128]!
+     pixman_composite_over_n_0565_process_pixblock_head
++    cache_preload 8, 8
+ .endm
+ 
+ .macro pixman_composite_over_n_0565_init
+@@ -660,6 +661,7 @@ generate_composite_function_single_scanline \
+     vld4.8      {d4, d5, d6, d7}, [DST_R, :128]!
+     vst4.8      {d28, d29, d30, d31}, [DST_W, :128]!
+     pixman_composite_over_8888_8888_process_pixblock_head
++    cache_preload 8, 8
+ .endm
+ 
+ .macro pixman_composite_over_n_8888_init
+--
+cgit v0.8.3-6-g21f6
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.9.5/dont-copy-unused-bits-to-alpha-channel.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.9.5/dont-copy-unused-bits-to-alpha-channel.patch
new file mode 100644
index 0000000..05fe829
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.9.5/dont-copy-unused-bits-to-alpha-channel.patch
@@ -0,0 +1,29 @@
+From: Carl Worth <cworth at cworth.org>
+
+Don't copy unused bits to an alpha channel
+
+This bug was identified by cairo's rgb24-ignore-alpha test which
+blends RGB24 over ARGB32 and notices that "alpha" values are
+making it from the source to the destination.
+
+Index: a/pixman/pixman-pict.c
+===================================================================
+--- a/pixman/pixman-pict.c b8b7b767b3ed1fc57ba177c38187e1eb3daf4de8
++++ b/pixman/pixman-pict.c c7d73fc532c2da313041906ac0f48dba1b10d3bc
+@@ -1778,7 +1778,6 @@ pixman_image_composite (pixman_op_t     
+ 		    break;
+ 		case PIXMAN_x8r8g8b8:
+ 		    switch (pDst->bits.format) {
+-		    case PIXMAN_a8r8g8b8:
+ 		    case PIXMAN_x8r8g8b8:
+ #ifdef USE_MMX
+ 			if (pixman_have_mmx())
+@@ -1790,7 +1789,6 @@ pixman_image_composite (pixman_op_t     
+ 		    }
+ 		case PIXMAN_x8b8g8r8:
+ 		    switch (pDst->bits.format) {
+-		    case PIXMAN_a8b8g8r8:
+ 		    case PIXMAN_x8b8g8r8:
+ #ifdef USE_MMX
+ 			if (pixman_have_mmx())
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/recipes/obsolete/xorg/xorg-lib/pixman/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
new file mode 100644
index 0000000..a2cda24
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
@@ -0,0 +1,114 @@
+From 8ea1a333de202018a862a7b04b94479d3109274b Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Tue, 16 Mar 2010 16:55:28 +0100
+Subject: [PATCH 1/5] Generic C implementation of pixman_blt with overlapping support
+
+Uses memcpy/memmove functions to copy pixels, can handle the
+case when both source and destination areas are in the same
+image (this is useful for scrolling).
+
+It is assumed that copying direction is only important when
+using the same image for both source and destination (and
+src_stride == dst_stride). Copying direction is undefined
+for the images with different source and destination stride
+which happen to be in the overlapped areas (but this is an
+unrealistic case anyway).
+---
+ pixman/pixman-general.c |   21 ++++++++++++++++++---
+ pixman/pixman-private.h |   43 +++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 61 insertions(+), 3 deletions(-)
+
+diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c
+index bddf79a..f525744 100644
+--- a/pixman/pixman-general.c
++++ b/pixman/pixman-general.c
+@@ -285,9 +285,24 @@ general_blt (pixman_implementation_t *imp,
+              int                      width,
+              int                      height)
+ {
+-    /* We can't blit unless we have sse2 or mmx */
+-
+-    return FALSE;
++    uint8_t *dst_bytes = (uint8_t *)dst_bits;
++    uint8_t *src_bytes = (uint8_t *)src_bits;
++    int bpp;
++
++    if (src_bpp != dst_bpp || src_bpp & 7)
++	return FALSE;
++
++    bpp = src_bpp >> 3;
++    width *= bpp;
++    src_stride *= 4;
++    dst_stride *= 4;
++    pixman_blt_helper (src_bytes + src_y * src_stride + src_x * bpp,
++                       dst_bytes + dst_y * dst_stride + dst_x * bpp,
++                       src_stride,
++                       dst_stride,
++                       width,
++                       height);
++    return TRUE;
+ }
+ 
+ static pixman_bool_t
+diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
+index d5767af..eeb677d 100644
+--- a/pixman/pixman-private.h
++++ b/pixman/pixman-private.h
+@@ -10,6 +10,7 @@
+ 
+ #include "pixman.h"
+ #include <time.h>
++#include <string.h>
+ #include <assert.h>
+ #include <stdio.h>
+ #include <string.h>
+@@ -867,4 +868,46 @@ void pixman_timer_register (pixman_timer_t *timer);
+ 
+ #endif /* PIXMAN_TIMERS */
+ 
++/* a helper function, can blit 8-bit images with src/dst overlapping support */
++static inline void
++pixman_blt_helper (uint8_t *src_bytes,
++                   uint8_t *dst_bytes,
++                   int      src_stride,
++                   int      dst_stride,
++                   int      width,
++                   int      height)
++{
++    /*
++     * The second part of this check is not strictly needed, but it prevents
++     * unnecessary upside-down processing of areas which belong to different
++     * images. Upside-down processing can be slower with fixed-distance-ahead
++     * prefetch and perceived as having more tearing.
++     */
++    if (src_bytes < dst_bytes + width &&
++	src_bytes + src_stride * height > dst_bytes)
++    {
++	src_bytes += src_stride * height - src_stride;
++	dst_bytes += dst_stride * height - dst_stride;
++	dst_stride = -dst_stride;
++	src_stride = -src_stride;
++	/* Horizontal scrolling to the left needs memmove */
++	if (src_bytes + width > dst_bytes)
++	{
++	    while (--height >= 0)
++	    {
++		memmove (dst_bytes, src_bytes, width);
++		dst_bytes += dst_stride;
++		src_bytes += src_stride;
++	    }
++	    return;
++	}
++    }
++    while (--height >= 0)
++    {
++	memcpy (dst_bytes, src_bytes, width);
++	dst_bytes += dst_stride;
++	src_bytes += src_stride;
++    }
++}
++
+ #endif /* PIXMAN_PRIVATE_H */
+-- 
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/recipes/obsolete/xorg/xorg-lib/pixman/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
new file mode 100644
index 0000000..003337f
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
@@ -0,0 +1,91 @@
+From 3170d9f5e927681a2516bcec52b317d1d4785e25 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Thu, 22 Oct 2009 05:45:47 +0300
+Subject: [PATCH 2/5] Support of overlapping src/dst for pixman_blt_mmx
+
+---
+ pixman/pixman-mmx.c |   55 +++++++++++++++++++++++++++++---------------------
+ 1 files changed, 32 insertions(+), 23 deletions(-)
+
+diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
+index e084e7f..6212b31 100644
+--- a/pixman/pixman-mmx.c
++++ b/pixman/pixman-mmx.c
+@@ -2994,34 +2994,43 @@ pixman_blt_mmx (uint32_t *src_bits,
+ {
+     uint8_t *   src_bytes;
+     uint8_t *   dst_bytes;
+-    int byte_width;
++    int         bpp;
+ 
+-    if (src_bpp != dst_bpp)
++    if (src_bpp != dst_bpp || src_bpp & 7)
+ 	return FALSE;
+ 
+-    if (src_bpp == 16)
+-    {
+-	src_stride = src_stride * (int) sizeof (uint32_t) / 2;
+-	dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
+-	src_bytes = (uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
+-	dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+-	byte_width = 2 * width;
+-	src_stride *= 2;
+-	dst_stride *= 2;
+-    }
+-    else if (src_bpp == 32)
++    bpp = src_bpp >> 3;
++    width *= bpp;
++    src_stride *= 4;
++    dst_stride *= 4;
++    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++    if (src_bpp != 16 && src_bpp != 32)
+     {
+-	src_stride = src_stride * (int) sizeof (uint32_t) / 4;
+-	dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
+-	src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
+-	dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+-	byte_width = 4 * width;
+-	src_stride *= 4;
+-	dst_stride *= 4;
++	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++	                   width, height);
++	return TRUE;
+     }
+-    else
++
++    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
+     {
+-	return FALSE;
++	src_bytes += src_stride * height - src_stride;
++	dst_bytes += dst_stride * height - dst_stride;
++	dst_stride = -dst_stride;
++	src_stride = -src_stride;
++
++	if (src_bytes + width > dst_bytes)
++	{
++	    /* TODO: reverse scanline copy using MMX */
++	    while (--height >= 0)
++	    {
++		memmove (dst_bytes, src_bytes, width);
++		dst_bytes += dst_stride;
++		src_bytes += src_stride;
++	    }
++	    return TRUE;
++	}
+     }
+ 
+     while (height--)
+@@ -3031,7 +3040,7 @@ pixman_blt_mmx (uint32_t *src_bits,
+ 	uint8_t *d = dst_bytes;
+ 	src_bytes += src_stride;
+ 	dst_bytes += dst_stride;
+-	w = byte_width;
++	w = width;
+ 
+ 	while (w >= 2 && ((unsigned long)d & 3))
+ 	{
+-- 
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/recipes/obsolete/xorg/xorg-lib/pixman/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
new file mode 100644
index 0000000..7e8f34f
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
@@ -0,0 +1,91 @@
+From f07cd58c643b490dcb1ef7be2642926cfeca1e69 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Thu, 22 Oct 2009 05:45:54 +0300
+Subject: [PATCH 3/5] Support of overlapping src/dst for pixman_blt_sse2
+
+---
+ pixman/pixman-sse2.c |   55 +++++++++++++++++++++++++++++--------------------
+ 1 files changed, 32 insertions(+), 23 deletions(-)
+
+diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
+index 946e7ba..66053ae 100644
+--- a/pixman/pixman-sse2.c
++++ b/pixman/pixman-sse2.c
+@@ -5299,34 +5299,43 @@ pixman_blt_sse2 (uint32_t *src_bits,
+ {
+     uint8_t *   src_bytes;
+     uint8_t *   dst_bytes;
+-    int byte_width;
++    int         bpp;
+ 
+-    if (src_bpp != dst_bpp)
++    if (src_bpp != dst_bpp || src_bpp & 7)
+ 	return FALSE;
+ 
+-    if (src_bpp == 16)
+-    {
+-	src_stride = src_stride * (int) sizeof (uint32_t) / 2;
+-	dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
+-	src_bytes =(uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
+-	dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+-	byte_width = 2 * width;
+-	src_stride *= 2;
+-	dst_stride *= 2;
+-    }
+-    else if (src_bpp == 32)
++    bpp = src_bpp >> 3;
++    width *= bpp;
++    src_stride *= 4;
++    dst_stride *= 4;
++    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++    if (src_bpp != 16 && src_bpp != 32)
+     {
+-	src_stride = src_stride * (int) sizeof (uint32_t) / 4;
+-	dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
+-	src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
+-	dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+-	byte_width = 4 * width;
+-	src_stride *= 4;
+-	dst_stride *= 4;
++	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++	                   width, height);
++	return TRUE;
+     }
+-    else
++
++    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
+     {
+-	return FALSE;
++	src_bytes += src_stride * height - src_stride;
++	dst_bytes += dst_stride * height - dst_stride;
++	dst_stride = -dst_stride;
++	src_stride = -src_stride;
++
++	if (src_bytes + width > dst_bytes)
++	{
++	    /* TODO: reverse scanline copy using SSE2 */
++	    while (--height >= 0)
++	    {
++		memmove (dst_bytes, src_bytes, width);
++		dst_bytes += dst_stride;
++		src_bytes += src_stride;
++	    }
++	    return TRUE;
++	}
+     }
+ 
+     cache_prefetch ((__m128i*)src_bytes);
+@@ -5339,7 +5348,7 @@ pixman_blt_sse2 (uint32_t *src_bits,
+ 	uint8_t *d = dst_bytes;
+ 	src_bytes += src_stride;
+ 	dst_bytes += dst_stride;
+-	w = byte_width;
++	w = width;
+ 
+ 	cache_prefetch_next ((__m128i*)s);
+ 	cache_prefetch_next ((__m128i*)d);
+-- 
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/recipes/obsolete/xorg/xorg-lib/pixman/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
new file mode 100644
index 0000000..0ba5b84
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
@@ -0,0 +1,94 @@
+From e0542866c466ad512d69292df098d4b880e35e52 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Wed, 18 Nov 2009 06:08:48 +0200
+Subject: [PATCH 4/5] Support of overlapping src/dst for pixman_blt_neon
+
+---
+ pixman/pixman-arm-neon.c |   62 +++++++++++++++++++++++++++++++++++++--------
+ 1 files changed, 51 insertions(+), 11 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 24ceeeb..134493d 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -360,26 +360,66 @@ pixman_blt_neon (uint32_t *src_bits,
+                  int       width,
+                  int       height)
+ {
+-    if (src_bpp != dst_bpp)
++    uint8_t *   src_bytes;
++    uint8_t *   dst_bytes;
++    int         bpp;
++
++    if (src_bpp != dst_bpp || src_bpp & 7)
+ 	return FALSE;
+ 
++    bpp = src_bpp >> 3;
++    width *= bpp;
++    src_stride *= 4;
++    dst_stride *= 4;
++    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++    if (src_bpp != 16 && src_bpp != 32)
++    {
++	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++	                   width, height);
++	return TRUE;
++    }
++
++    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
++    {
++	src_bytes += src_stride * height - src_stride;
++	dst_bytes += dst_stride * height - dst_stride;
++	dst_stride = -dst_stride;
++	src_stride = -src_stride;
++
++	if (src_bytes + width > dst_bytes)
++	{
++	    /* TODO: reverse scanline copy using NEON */
++	    while (--height >= 0)
++	    {
++		memmove (dst_bytes, src_bytes, width);
++		dst_bytes += dst_stride;
++		src_bytes += src_stride;
++	    }
++	    return TRUE;
++	}
++    }
++
+     switch (src_bpp)
+     {
+     case 16:
+ 	pixman_composite_src_0565_0565_asm_neon (
+-		width, height,
+-		(uint16_t *)(((char *) dst_bits) +
+-		dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2,
+-		(uint16_t *)(((char *) src_bits) +
+-		src_y * src_stride * 4 + src_x * 2), src_stride * 2);
++		width >> 1,
++		height,
++		(uint16_t *) dst_bytes,
++		dst_stride >> 1,
++		(uint16_t *) src_bytes,
++		src_stride >> 1);
+ 	return TRUE;
+     case 32:
+ 	pixman_composite_src_8888_8888_asm_neon (
+-		width, height,
+-		(uint32_t *)(((char *) dst_bits) +
+-		dst_y * dst_stride * 4 + dst_x * 4), dst_stride,
+-		(uint32_t *)(((char *) src_bits) +
+-		src_y * src_stride * 4 + src_x * 4), src_stride);
++		width >> 2,
++		height,
++		(uint32_t *) dst_bytes,
++		dst_stride >> 2,
++		(uint32_t *) src_bytes,
++		src_stride >> 2);
+ 	return TRUE;
+     default:
+ 	return FALSE;
+-- 
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch b/recipes/obsolete/xorg/xorg-lib/pixman/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
new file mode 100644
index 0000000..769ed2e
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
@@ -0,0 +1,169 @@
+From d51b10a2750d99543a0c92ca44802aa7a4d70e54 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Thu, 10 Dec 2009 00:51:50 +0200
+Subject: [PATCH 5/5] ARM: added NEON optimizations for fetch/store r5g6b5 scanline
+
+---
+ pixman/pixman-access.c       |   23 ++++++++++++++++++++++-
+ pixman/pixman-arm-neon-asm.S |   20 ++++++++++++++++++++
+ pixman/pixman-arm-neon.c     |   41 +++++++++++++++++++++++++++++++++++++++++
+ pixman/pixman-private.h      |    5 +++++
+ 4 files changed, 88 insertions(+), 1 deletions(-)
+
+diff --git a/pixman/pixman-access.c b/pixman/pixman-access.c
+index fa0a267..5bb3e09 100644
+--- a/pixman/pixman-access.c
++++ b/pixman/pixman-access.c
+@@ -2748,7 +2748,7 @@ typedef struct
+ 	    store_scanline_ ## format, store_scanline_generic_64	\
+     }
+ 
+-static const format_info_t accessors[] =
++static format_info_t accessors[] =
+ {
+ /* 32 bpp formats */
+     FORMAT_INFO (a8r8g8b8),
+@@ -2891,6 +2891,27 @@ _pixman_bits_image_setup_raw_accessors (bits_image_t *image)
+ 	setup_accessors (image);
+ }
+ 
++void
++_pixman_bits_override_accessors (pixman_format_code_t format,
++                                 fetch_scanline_t     fetch_func,
++                                 store_scanline_t     store_func)
++{
++    format_info_t *info = accessors;
++
++    while (info->format != PIXMAN_null)
++    {
++	if (info->format == format)
++	{
++	    if (fetch_func)
++		info->fetch_scanline_raw_32 = fetch_func;
++	    if (store_func)
++		info->store_scanline_raw_32 = store_func;
++	    return;
++	}
++	info++;
++    }
++}
++
+ #else
+ 
+ void
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index eb8cc4c..6ab3301 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -454,6 +454,16 @@ generate_composite_function \
+     pixman_composite_src_8888_0565_process_pixblock_tail, \
+     pixman_composite_src_8888_0565_process_pixblock_tail_head
+ 
++generate_composite_function_single_scanline \
++    pixman_store_scanline_r5g6b5_asm_neon, 32, 0, 16, \
++    FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
++    8, /* number of pixels, processed in a single block */ \
++    default_init, \
++    default_cleanup, \
++    pixman_composite_src_8888_0565_process_pixblock_head, \
++    pixman_composite_src_8888_0565_process_pixblock_tail, \
++    pixman_composite_src_8888_0565_process_pixblock_tail_head
++
+ /******************************************************************************/
+ 
+ .macro pixman_composite_src_0565_8888_process_pixblock_head
+@@ -489,6 +499,16 @@ generate_composite_function \
+     pixman_composite_src_0565_8888_process_pixblock_tail, \
+     pixman_composite_src_0565_8888_process_pixblock_tail_head
+ 
++generate_composite_function_single_scanline \
++    pixman_fetch_scanline_r5g6b5_asm_neon, 16, 0, 32, \
++    FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
++    8, /* number of pixels, processed in a single block */ \
++    default_init, \
++    default_cleanup, \
++    pixman_composite_src_0565_8888_process_pixblock_head, \
++    pixman_composite_src_0565_8888_process_pixblock_tail, \
++    pixman_composite_src_0565_8888_process_pixblock_tail_head
++
+ /******************************************************************************/
+ 
+ .macro pixman_composite_add_8000_8000_process_pixblock_head
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 134493d..2245b52 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -567,6 +567,43 @@ neon_combine_##name##_u (pixman_implementation_t *imp,                   \
+ BIND_COMBINE_U (over)
+ BIND_COMBINE_U (add)
+ 
++void
++pixman_fetch_scanline_r5g6b5_asm_neon (int             width,
++                                       uint32_t       *buffer,
++                                       const uint16_t *pixel);
++void
++pixman_store_scanline_r5g6b5_asm_neon (int             width,
++                                       uint16_t       *pixel,
++                                       const uint32_t *values);
++
++static void
++neon_fetch_scanline_r5g6b5 (pixman_image_t *image,
++                            int             x,
++                            int             y,
++                            int             width,
++                            uint32_t *      buffer,
++                            const uint32_t *mask,
++                            uint32_t        mask_bits)
++{
++    const uint32_t *bits = image->bits.bits + y * image->bits.rowstride;
++    const uint16_t *pixel = (const uint16_t *)bits + x;
++
++    pixman_fetch_scanline_r5g6b5_asm_neon (width, buffer, pixel);
++}
++
++static void
++neon_store_scanline_r5g6b5 (bits_image_t *  image,
++                            int             x,
++                            int             y,
++                            int             width,
++                            const uint32_t *values)
++{
++    uint32_t *bits = image->bits + image->rowstride * y;
++    uint16_t *pixel = ((uint16_t *) bits) + x;
++
++    pixman_store_scanline_r5g6b5_asm_neon (width, pixel, values);
++}
++
+ pixman_implementation_t *
+ _pixman_implementation_create_arm_neon (void)
+ {
+@@ -577,6 +614,10 @@ _pixman_implementation_create_arm_neon (void)
+     imp->combine_32[PIXMAN_OP_OVER] = neon_combine_over_u;
+     imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u;
+ 
++    _pixman_bits_override_accessors (PIXMAN_r5g6b5,
++                                     neon_fetch_scanline_r5g6b5,
++                                     neon_store_scanline_r5g6b5);
++
+     imp->blt = arm_neon_blt;
+     imp->fill = arm_neon_fill;
+ 
+diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
+index eeb677d..ba2d401 100644
+--- a/pixman/pixman-private.h
++++ b/pixman/pixman-private.h
+@@ -220,6 +220,11 @@ void
+ _pixman_bits_image_setup_raw_accessors (bits_image_t *image);
+ 
+ void
++_pixman_bits_override_accessors (pixman_format_code_t format,
++                                 fetch_scanline_t     fetch_func,
++                                 store_scanline_t     store_func);
++
++void
+ _pixman_image_get_scanline_generic_64  (pixman_image_t *image,
+                                         int             x,
+                                         int             y,
+-- 
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/0006-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch b/recipes/obsolete/xorg/xorg-lib/pixman/0006-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch
new file mode 100644
index 0000000..3d8d4e8
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman/0006-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch
@@ -0,0 +1,53 @@
+From 7f0adaef68c5b0bb1c5eb9f5db5792b71b8b8beb Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen at dominion.thruhere.net>
+Date: Fri, 19 Mar 2010 10:44:09 +0100
+Subject: [PATCH 6/6] Revert "ARM: SIMD: Try without any CFLAGS before forcing -mcpu="
+
+This forces -marm that results in runtime SIGILL on thumb userspace
+
+This reverts commit 18f0de452dc7e12e4cb544d761a626d5c6031663.
+---
+ configure.ac |   20 +++++---------------
+ 1 files changed, 5 insertions(+), 15 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index fc3ee24..f84a4dc 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -363,28 +363,18 @@ AM_CONDITIONAL(USE_VMX, test $have_vmx_intrinsics = yes)
+ 
+ dnl ===========================================================================
+ dnl Check for ARM SIMD instructions
+-ARM_SIMD_CFLAGS=""
++ARM_SIMD_CFLAGS="-mcpu=arm1136j-s"
+ 
+ have_arm_simd=no
+ AC_MSG_CHECKING(whether to use ARM SIMD assembler)
+-# check with default CFLAGS in case the toolchain turns on a sufficiently recent -mcpu=
++xserver_save_CFLAGS=$CFLAGS
++CFLAGS="$ARM_SIMD_CFLAGS $CFLAGS"
+ AC_COMPILE_IFELSE([
+ int main () {
+     asm("uqadd8 r1, r1, r2");
+     return 0;
+-}], have_arm_simd=yes,
+-    # check again with an explicit -mcpu= in case the toolchain defaults to an
+-    # older one; note that uqadd8 isn't available in Thumb mode on arm1136j-s
+-    # so we force ARM mode
+-    ARM_SIMD_CFLAGS="-mcpu=arm1136j-s -marm"
+-    xserver_save_CFLAGS=$CFLAGS
+-    CFLAGS="$ARM_SIMD_CFLAGS $CFLAGS"
+-    AC_COMPILE_IFELSE([
+-    int main () {
+-        asm("uqadd8 r1, r1, r2");
+-        return 0;
+-    }], have_arm_simd=yes)
+-    CFLAGS=$xserver_save_CFLAGS)
++}], have_arm_simd=yes)
++CFLAGS=$xserver_save_CFLAGS
+ 
+ AC_ARG_ENABLE(arm-simd,
+    [AC_HELP_STRING([--disable-arm-simd],
+-- 
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/calloc.patch b/recipes/obsolete/xorg/xorg-lib/pixman/calloc.patch
new file mode 100644
index 0000000..4a60d7e
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman/calloc.patch
@@ -0,0 +1,23 @@
+From 634ba33b5b1fcfd5a0e7910f9991b4ed4f674549 Mon Sep 17 00:00:00 2001
+From: Søren Sandmann Pedersen <ssp at redhat.com>
+Date: Wed, 07 Apr 2010 05:39:14 +0000
+Subject: Fix uninitialized cache when pthreads are used
+
+The thread local cache is allocated with malloc(), but we rely on it
+being initialized to zero, so allocate it with calloc() instead.
+---
+diff --git a/pixman/pixman-compiler.h b/pixman/pixman-compiler.h
+index a4e3f88..cdac0d8 100644
+--- a/pixman/pixman-compiler.h
++++ b/pixman/pixman-compiler.h
+@@ -101,7 +101,7 @@
+     static type *							\
+     tls_ ## name ## _alloc (key)					\
+     {									\
+-	type *value = malloc (sizeof (type));				\
++	type *value = calloc (1, sizeof (type));			\
+ 	if (value)							\
+ 	    pthread_setspecific (key, value);				\
+ 	return value;							\
+--
+cgit v0.8.3-6-g21f6
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/nearest-neighbour.patch b/recipes/obsolete/xorg/xorg-lib/pixman/nearest-neighbour.patch
new file mode 100644
index 0000000..29b140f
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman/nearest-neighbour.patch
@@ -0,0 +1,1040 @@
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Fri, 17 Jul 2009 10:22:23 +0000 (+0300)
+Subject: Fastpath for nearest neighbour scaled compositing operations.
+X-Git-Url: http://siarhei.siamashka.name/gitweb/?p=pixman.git;a=commitdiff_plain;h=247531c6978725a88fd3706129b9d3e339026f54
+
+Fastpath for nearest neighbour scaled compositing operations.
+
+OVER 8888x8888, OVER 8888x0565, SRC 8888x8888, SRC 8888x0565
+and SRC 0565x0565 cases are supported.
+---
+
+diff --git a/pixman/pixman-fast-path.c b/pixman/pixman-fast-path.c
+index 7f80578..7f3a6ad 100644
+--- a/pixman/pixman-fast-path.c
++++ b/pixman/pixman-fast-path.c
+@@ -1261,6 +1261,993 @@ fast_composite_src_scale_nearest (pixman_implementation_t *imp,
+     }
+ }
+ 
++/*
++ * Functions, which implement the core inner loops for the nearest neighbour
++ * scaled fastpath compositing operations. The do not need to do clipping
++ * checks, also the loops are unrolled to process two pixels per iteration
++ * for better performance on most CPU architectures (superscalar processors
++ * can issue several operations simultaneously, other processors can hide
++ * instructions latencies by pipelining operations). Unrolling more
++ * does not make much sense because the compiler will start running out
++ * of spare registers soon.
++ */
++
++#undef READ
++#undef WRITE
++#define READ(img,x) (*(x))
++#define WRITE(img,ptr,v) ((*(ptr)) = (v))
++
++#define UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(x, a, y) do {                     \
++        UN8x4_MUL_UN8_ADD_UN8x4(x, a, y);                                      \
++        x = CONVERT_8888_TO_0565(x);                                       \
++    } while (0)
++
++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipOver_8888x0565 (
++    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
++    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
++{
++    uint16_t *dstLine;
++    uint32_t *srcFirstLine;
++    uint32_t  d;
++    uint32_t  s1, s2;
++    uint8_t   a1, a2;
++    int       w;
++    int       x1, x2, y;
++    int32_t   orig_vx = vx;
++
++    uint32_t *src;
++    uint16_t *dst;
++    int       srcStride, dstStride;
++    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
++    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
++     * transformed from destination space to source space */
++    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
++
++    while (--height >= 0)
++    {
++        dst = dstLine;
++        dstLine += dstStride;
++
++        y = vy >> 16;
++        vy += unit_y;
++
++        if ((y < 0) || (y >= pSrc->bits.height)) {
++            continue;
++        }
++
++        src = srcFirstLine + srcStride * y;
++
++        w = width;
++        vx = orig_vx;
++        while ((w -= 2) >= 0)
++        {
++            x1 = vx >> 16;
++            vx += unit_x;
++            s1 = READ(pSrc, src + x1);
++
++            x2 = vx >> 16;
++            vx += unit_x;
++            s2 = READ(pSrc, src + x2);
++
++            a1 = s1 >> 24;
++            a2 = s2 >> 24;
++
++            if (a1 == 0xff)
++                WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
++            else if (s1) {
++                d = CONVERT_0565_TO_0888(READ(pDst, dst));
++                a1 ^= 0xff;
++                UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a1, s1);
++                WRITE(pDst, dst, d);
++            }
++            dst++;
++
++            if (a2 == 0xff)
++                WRITE(pDst, dst, CONVERT_8888_TO_0565(s2));
++            else if (s2) {
++                d = CONVERT_0565_TO_0888(READ(pDst, dst));
++                a2 ^= 0xff;
++                UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a2, s2);
++                WRITE(pDst, dst, d);
++            }
++            dst++;
++        }
++        if (w & 1) {
++            x1 = vx >> 16;
++            vx += unit_x;
++            s1 = READ(pSrc, src + x1);
++
++            a1 = s1 >> 24;
++            if (a1 == 0xff)
++                WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
++            else if (s1) {
++                d = CONVERT_0565_TO_0888(READ(pDst, dst));
++                a1 ^= 0xff;
++                UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a1, s1);
++                WRITE(pDst, dst, d);
++            }
++            dst++;
++        }
++    }
++}
++
++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatOver_8888x0565 (
++    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
++    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
++{
++    uint16_t *dstLine;
++    uint32_t *srcFirstLine;
++    uint32_t  d;
++    uint32_t  s1, s2;
++    uint8_t   a1, a2;
++    int       w;
++    int       x1, x2, y;
++    int32_t   orig_vx = vx;
++    int32_t   max_vx, max_vy;
++
++    uint32_t *src;
++    uint16_t *dst;
++    int       srcStride, dstStride;
++    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
++    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
++     * transformed from destination space to source space */
++    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
++
++    max_vx = pSrc->bits.width << 16;
++    max_vy = pSrc->bits.height << 16;
++
++    while (orig_vx < 0) orig_vx += max_vx;
++    while (vy < 0) vy += max_vy;
++    while (orig_vx >= max_vx) orig_vx -= max_vx;
++    while (vy >= max_vy) vy -= max_vy;
++
++    while (--height >= 0)
++    {
++        dst = dstLine;
++        dstLine += dstStride;
++
++        y = vy >> 16;
++        vy += unit_y;
++        while (vy >= max_vy) vy -= max_vy;
++
++        src = srcFirstLine + srcStride * y;
++
++        w = width;
++        vx = orig_vx;
++        while ((w -= 2) >= 0)
++        {
++            x1 = vx >> 16;
++            vx += unit_x;
++            while (vx >= max_vx) vx -= max_vx;
++            s1 = READ(pSrc, src + x1);
++
++            x2 = vx >> 16;
++            vx += unit_x;
++            while (vx >= max_vx) vx -= max_vx;
++            s2 = READ(pSrc, src + x2);
++
++            a1 = s1 >> 24;
++            a2 = s2 >> 24;
++
++            if (a1 == 0xff)
++                WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
++            else if (s1) {
++                d = CONVERT_0565_TO_0888(READ(pDst, dst));
++                a1 ^= 0xff;
++                UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a1, s1);
++                WRITE(pDst, dst, d);
++            }
++            dst++;
++
++            if (a2 == 0xff)
++                WRITE(pDst, dst, CONVERT_8888_TO_0565(s2));
++            else if (s2) {
++                d = CONVERT_0565_TO_0888(READ(pDst, dst));
++                a2 ^= 0xff;
++                UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a2, s2);
++                WRITE(pDst, dst, d);
++            }
++            dst++;
++        }
++        if (w & 1) {
++            x1 = vx >> 16;
++            vx += unit_x;
++            while (vx >= max_vx) vx -= max_vx;
++            s1 = READ(pSrc, src + x1);
++
++            a1 = s1 >> 24;
++            if (a1 == 0xff)
++                WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
++            else if (s1) {
++                d = CONVERT_0565_TO_0888(READ(pDst, dst));
++                a1 ^= 0xff;
++                UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a1, s1);
++                WRITE(pDst, dst, d);
++            }
++            dst++;
++        }
++    }
++}
++
++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipOver_8888x8888 (
++    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
++    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
++{
++    uint32_t *dstLine;
++    uint32_t *srcFirstLine;
++    uint32_t  d;
++    uint32_t  s1, s2;
++    uint8_t   a1, a2;
++    int       w;
++    int       x1, x2, y;
++    int32_t   orig_vx = vx;
++
++    uint32_t *src, *dst;
++    int       srcStride, dstStride;
++    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
++    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
++     * transformed from destination space to source space */
++    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
++
++    while (--height >= 0)
++    {
++        dst = dstLine;
++        dstLine += dstStride;
++
++        y = vy >> 16;
++        vy += unit_y;
++
++        if ((y < 0) || (y >= pSrc->bits.height)) {
++            continue;
++        }
++
++        src = srcFirstLine + srcStride * y;
++
++        w = width;
++        vx = orig_vx;
++        while ((w -= 2) >= 0)
++        {
++            x1 = vx >> 16;
++            vx += unit_x;
++            s1 = READ(pSrc, src + x1);
++
++            x2 = vx >> 16;
++            vx += unit_x;
++            s2 = READ(pSrc, src + x2);
++
++            a1 = s1 >> 24;
++            a2 = s2 >> 24;
++
++            if (a1 == 0xff)
++                WRITE(pDst, dst, s1);
++            else if (s1) {
++                d = READ(pDst, dst);
++                a1 ^= 0xff;
++                UN8x4_MUL_UN8_ADD_UN8x4(d, a1, s1);
++                WRITE(pDst, dst, d);
++            }
++            dst++;
++
++            if (a2 == 0xff)
++                WRITE(pDst, dst, s2);
++            else if (s2) {
++                d = READ(pDst, dst);
++                a2 ^= 0xff;
++                UN8x4_MUL_UN8_ADD_UN8x4(d, a2, s2);
++                WRITE(pDst, dst, d);
++            }
++            dst++;
++        }
++        if (w & 1) {
++            x1 = vx >> 16;
++            vx += unit_x;
++            s1 = READ(pSrc, src + x1);
++
++            a1 = s1 >> 24;
++            if (a1 == 0xff)
++                WRITE(pDst, dst, s1);
++            else if (s1) {
++                d = READ(pDst, dst);
++                a1 ^= 0xff;
++                UN8x4_MUL_UN8_ADD_UN8x4(d, a1, s1);
++                WRITE(pDst, dst, d);
++            }
++            dst++;
++        }
++    }
++}
++
++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatOver_8888x8888 (
++    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
++    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
++{
++    uint32_t *dstLine;
++    uint32_t *srcFirstLine;
++    uint32_t  d;
++    uint32_t  s1, s2;
++    uint8_t   a1, a2;
++    int       w;
++    int       x1, x2, y;
++    int32_t   orig_vx = vx;
++    int32_t   max_vx, max_vy;
++
++    uint32_t *src, *dst;
++    int       srcStride, dstStride;
++    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
++    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
++     * transformed from destination space to source space */
++    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
++
++    max_vx = pSrc->bits.width << 16;
++    max_vy = pSrc->bits.height << 16;
++
++    while (orig_vx < 0) orig_vx += max_vx;
++    while (vy < 0) vy += max_vy;
++    while (orig_vx >= max_vx) orig_vx -= max_vx;
++    while (vy >= max_vy) vy -= max_vy;
++
++    while (--height >= 0)
++    {
++        dst = dstLine;
++        dstLine += dstStride;
++
++        y = vy >> 16;
++        vy += unit_y;
++        while (vy >= max_vy) vy -= max_vy;
++
++        src = srcFirstLine + srcStride * y;
++
++        w = width;
++        vx = orig_vx;
++        while ((w -= 2) >= 0)
++        {
++            x1 = vx >> 16;
++            vx += unit_x;
++            while (vx >= max_vx) vx -= max_vx;
++            s1 = READ(pSrc, src + x1);
++
++            x2 = vx >> 16;
++            vx += unit_x;
++            while (vx >= max_vx) vx -= max_vx;
++            s2 = READ(pSrc, src + x2);
++
++            a1 = s1 >> 24;
++            a2 = s2 >> 24;
++
++            if (a1 == 0xff)
++                WRITE(pDst, dst, s1);
++            else if (s1) {
++                d = READ(pDst, dst);
++                a1 ^= 0xff;
++                UN8x4_MUL_UN8_ADD_UN8x4(d, a1, s1);
++                WRITE(pDst, dst, d);
++            }
++            dst++;
++
++            if (a2 == 0xff)
++                WRITE(pDst, dst, s2);
++            else if (s2) {
++                d = READ(pDst, dst);
++                a2 ^= 0xff;
++                UN8x4_MUL_UN8_ADD_UN8x4(d, a2, s2);
++                WRITE(pDst, dst, d);
++            }
++            dst++;
++        }
++        if (w & 1) {
++            x1 = vx >> 16;
++            vx += unit_x;
++            while (vx >= max_vx) vx -= max_vx;
++            s1 = READ(pSrc, src + x1);
++
++            a1 = s1 >> 24;
++            if (a1 == 0xff)
++                WRITE(pDst, dst, s1);
++            else if (s1) {
++                d = READ(pDst, dst);
++                a1 ^= 0xff;
++                UN8x4_MUL_UN8_ADD_UN8x4(d, a1, s1);
++                WRITE(pDst, dst, d);
++            }
++            dst++;
++        }
++    }
++}
++
++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_8888x8888 (
++    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
++    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
++{
++    uint32_t *dstLine;
++    uint32_t *srcFirstLine;
++    uint32_t  s1, s2;
++    int       w;
++    int       x1, x2, y;
++    int32_t   orig_vx = vx;
++
++    uint32_t *src, *dst;
++    int       srcStride, dstStride;
++    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
++    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
++     * transformed from destination space to source space */
++    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
++
++    while (--height >= 0)
++    {
++        dst = dstLine;
++        dstLine += dstStride;
++
++        y = vy >> 16;
++        vy += unit_y;
++
++        if ((y < 0) || (y >= pSrc->bits.height)) {
++            memset(dst, 0, width * sizeof(*dst));
++            continue;
++        }
++
++        src = srcFirstLine + srcStride * y;
++
++        w = width;
++        vx = orig_vx;
++        while ((w -= 2) >= 0)
++        {
++            x1 = vx >> 16;
++            vx += unit_x;
++            s1 = READ(pSrc, src + x1);
++
++            x2 = vx >> 16;
++            vx += unit_x;
++            s2 = READ(pSrc, src + x2);
++
++            WRITE(pDst, dst, s1);
++            dst++;
++            WRITE(pDst, dst, s2);
++            dst++;
++        }
++        if (w & 1) {
++            x1 = vx >> 16;
++            vx += unit_x;
++            s1 = READ(pSrc, src + x1);
++            WRITE(pDst, dst, s1);
++            dst++;
++        }
++    }
++}
++
++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_8888x8888 (
++    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
++    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
++{
++    uint32_t *dstLine;
++    uint32_t *srcFirstLine;
++    uint32_t  s1, s2;
++    int       w;
++    int       x1, x2, y;
++    int32_t   orig_vx = vx;
++    int32_t   max_vx, max_vy;
++
++    uint32_t *src, *dst;
++    int       srcStride, dstStride;
++    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
++    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
++     * transformed from destination space to source space */
++    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
++
++    max_vx = pSrc->bits.width << 16;
++    max_vy = pSrc->bits.height << 16;
++
++    while (orig_vx < 0) orig_vx += max_vx;
++    while (vy < 0) vy += max_vy;
++    while (orig_vx >= max_vx) orig_vx -= max_vx;
++    while (vy >= max_vy) vy -= max_vy;
++
++    while (--height >= 0)
++    {
++        dst = dstLine;
++        dstLine += dstStride;
++
++        y = vy >> 16;
++        vy += unit_y;
++        while (vy >= max_vy) vy -= max_vy;
++
++        src = srcFirstLine + srcStride * y;
++
++        w = width;
++        vx = orig_vx;
++        while ((w -= 2) >= 0)
++        {
++            x1 = vx >> 16;
++            vx += unit_x;
++            while (vx >= max_vx) vx -= max_vx;
++            s1 = READ(pSrc, src + x1);
++
++            x2 = vx >> 16;
++            vx += unit_x;
++            while (vx >= max_vx) vx -= max_vx;
++            s2 = READ(pSrc, src + x2);
++
++            WRITE(pDst, dst, s1);
++            dst++;
++            WRITE(pDst, dst, s2);
++            dst++;
++        }
++        if (w & 1) {
++            x1 = vx >> 16;
++            vx += unit_x;
++            while (vx >= max_vx) vx -= max_vx;
++            s1 = READ(pSrc, src + x1);
++
++            WRITE(pDst, dst, s1);
++            dst++;
++        }
++    }
++}
++
++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_0565x0565 (
++    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
++    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
++{
++    uint16_t *dstLine;
++    uint16_t *srcFirstLine;
++    uint16_t  s1, s2;
++    int       w;
++    int       x1, x2, y;
++    int32_t   orig_vx = vx;
++
++    uint16_t *src, *dst;
++    int       srcStride, dstStride;
++    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
++    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
++     * transformed from destination space to source space */
++    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint16_t, srcStride, srcFirstLine, 1);
++
++    while (--height >= 0)
++    {
++        dst = dstLine;
++        dstLine += dstStride;
++
++        y = vy >> 16;
++        vy += unit_y;
++
++        if ((y < 0) || (y >= pSrc->bits.height)) {
++            memset(dst, 0, width * sizeof(*dst));
++            continue;
++        }
++
++        src = srcFirstLine + srcStride * y;
++
++        w = width;
++        vx = orig_vx;
++        while ((w -= 2) >= 0)
++        {
++            x1 = vx >> 16;
++            vx += unit_x;
++            s1 = READ(pSrc, src + x1);
++
++            x2 = vx >> 16;
++            vx += unit_x;
++            s2 = READ(pSrc, src + x2);
++
++            WRITE(pDst, dst, s1);
++            dst++;
++            WRITE(pDst, dst, s2);
++            dst++;
++        }
++        if (w & 1) {
++            x1 = vx >> 16;
++            vx += unit_x;
++            s1 = READ(pSrc, src + x1);
++            WRITE(pDst, dst, s1);
++            dst++;
++        }
++    }
++}
++
++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_0565x0565 (
++    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
++    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
++{
++    uint16_t *dstLine;
++    uint16_t *srcFirstLine;
++    uint16_t  s1, s2;
++    int       w;
++    int       x1, x2, y;
++    int32_t   orig_vx = vx;
++    int32_t   max_vx, max_vy;
++
++    uint16_t *src, *dst;
++    int       srcStride, dstStride;
++    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
++    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
++     * transformed from destination space to source space */
++    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint16_t, srcStride, srcFirstLine, 1);
++
++    max_vx = pSrc->bits.width << 16;
++    max_vy = pSrc->bits.height << 16;
++
++    while (orig_vx < 0) orig_vx += max_vx;
++    while (vy < 0) vy += max_vy;
++    while (orig_vx >= max_vx) orig_vx -= max_vx;
++    while (vy >= max_vy) vy -= max_vy;
++
++    while (--height >= 0)
++    {
++        dst = dstLine;
++        dstLine += dstStride;
++
++        y = vy >> 16;
++        vy += unit_y;
++        while (vy >= max_vy) vy -= max_vy;
++
++        src = srcFirstLine + srcStride * y;
++
++        w = width;
++        vx = orig_vx;
++        while ((w -= 2) >= 0)
++        {
++            x1 = vx >> 16;
++            vx += unit_x;
++            while (vx >= max_vx) vx -= max_vx;
++            s1 = READ(pSrc, src + x1);
++
++            x2 = vx >> 16;
++            vx += unit_x;
++            while (vx >= max_vx) vx -= max_vx;
++            s2 = READ(pSrc, src + x2);
++
++            WRITE(pDst, dst, s1);
++            dst++;
++            WRITE(pDst, dst, s2);
++            dst++;
++        }
++        if (w & 1) {
++            x1 = vx >> 16;
++            vx += unit_x;
++            while (vx >= max_vx) vx -= max_vx;
++            s1 = READ(pSrc, src + x1);
++
++            WRITE(pDst, dst, s1);
++            dst++;
++        }
++    }
++}
++
++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_8888x0565 (
++    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
++    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
++{
++    uint16_t *dstLine;
++    uint32_t *srcFirstLine;
++    uint32_t  s1, s2;
++    int       w;
++    int       x1, x2, y;
++    int32_t   orig_vx = vx;
++
++    uint32_t *src;
++    uint16_t *dst;
++    int       srcStride, dstStride;
++    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
++    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
++     * transformed from destination space to source space */
++    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
++
++    while (--height >= 0)
++    {
++        dst = dstLine;
++        dstLine += dstStride;
++
++        y = vy >> 16;
++        vy += unit_y;
++
++        if ((y < 0) || (y >= pSrc->bits.height)) {
++            memset(dst, 0, width * sizeof(*dst));
++            continue;
++        }
++
++        src = srcFirstLine + srcStride * y;
++
++        w = width;
++        vx = orig_vx;
++        while ((w -= 2) >= 0)
++        {
++            x1 = vx >> 16;
++            vx += unit_x;
++            s1 = READ(pSrc, src + x1);
++
++            x2 = vx >> 16;
++            vx += unit_x;
++            s2 = READ(pSrc, src + x2);
++
++            WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
++            dst++;
++            WRITE(pDst, dst, CONVERT_8888_TO_0565(s2));
++            dst++;
++        }
++        if (w & 1) {
++            x1 = vx >> 16;
++            vx += unit_x;
++            s1 = READ(pSrc, src + x1);
++            WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
++            dst++;
++        }
++    }
++}
++
++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_8888x0565 (
++    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
++    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
++{
++    uint16_t *dstLine;
++    uint32_t *srcFirstLine;
++    uint32_t  s1, s2;
++    int       w;
++    int       x1, x2, y;
++    int32_t   orig_vx = vx;
++    int32_t   max_vx, max_vy;
++
++    uint32_t *src;
++    uint16_t *dst;
++    int       srcStride, dstStride;
++    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
++    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
++     * transformed from destination space to source space */
++    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
++
++    max_vx = pSrc->bits.width << 16;
++    max_vy = pSrc->bits.height << 16;
++
++    while (orig_vx < 0) orig_vx += max_vx;
++    while (vy < 0) vy += max_vy;
++    while (orig_vx >= max_vx) orig_vx -= max_vx;
++    while (vy >= max_vy) vy -= max_vy;
++
++    while (--height >= 0)
++    {
++        dst = dstLine;
++        dstLine += dstStride;
++
++        y = vy >> 16;
++        vy += unit_y;
++        while (vy >= max_vy) vy -= max_vy;
++
++        src = srcFirstLine + srcStride * y;
++
++        w = width;
++        vx = orig_vx;
++        while ((w -= 2) >= 0)
++        {
++            x1 = vx >> 16;
++            vx += unit_x;
++            while (vx >= max_vx) vx -= max_vx;
++            s1 = READ(pSrc, src + x1);
++
++            x2 = vx >> 16;
++            vx += unit_x;
++            while (vx >= max_vx) vx -= max_vx;
++            s2 = READ(pSrc, src + x2);
++
++            WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
++            dst++;
++            WRITE(pDst, dst, CONVERT_8888_TO_0565(s2));
++            dst++;
++        }
++        if (w & 1) {
++            x1 = vx >> 16;
++            vx += unit_x;
++            while (vx >= max_vx) vx -= max_vx;
++            s1 = READ(pSrc, src + x1);
++
++            WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
++            dst++;
++        }
++    }
++}
++
++/*
++ * Check if the clipping boundary is crossed on horizontal scaling
++ */
++static inline pixman_bool_t
++fbTransformVerifyHorizontalClipping(pixman_image_t *pict, int width, int32_t vx, int32_t unit_x)
++{
++    while (--width >= 0) {
++        int x = vx >> 16;
++        if ((x < 0) || (x >= pict->bits.width)) return 1;
++        vx += unit_x;
++    }
++    return 0;
++}
++
++/*
++ * Check if the clipping boundary is crossed on vertical scaling
++ */
++static inline pixman_bool_t
++fbTransformVerifyVerticalClipping(pixman_image_t *pict, int height, int32_t vy, int32_t unit_y)
++{
++    while (--height >= 0) {
++        int y = vy >> 16;
++        if ((y < 0) || (y >= pict->bits.height)) return 1;
++        vy += unit_y;
++    }
++    return 0;
++}
++
++/*
++ * Easy case of transform without rotation or complex clipping
++ * Returns 1 in the case if it was able to handle this operation and 0 otherwise
++ */
++static pixman_bool_t
++fbCompositeTransformNonrotatedAffineTrivialclip (
++			    pixman_op_t     op,
++			    pixman_image_t *pSrc,
++			    pixman_image_t *pMask,
++			    pixman_image_t *pDst,
++			    int16_t         xSrc,
++			    int16_t         ySrc,
++			    int16_t         xMask,
++			    int16_t         yMask,
++			    int16_t         xDst,
++			    int16_t         yDst,
++			    uint16_t        width,
++			    uint16_t        height)
++{
++    pixman_vector_t v, unit;
++    int skipdst_x = 0, skipdst_y = 0;
++
++    /* Handle destination clipping */
++    if (xDst < pDst->common.clip_region.extents.x1) {
++        skipdst_x = pDst->common.clip_region.extents.x1 - xDst;
++        if (skipdst_x >= (int)width)
++            return 1;
++        xDst = pDst->common.clip_region.extents.x1;
++        width -= skipdst_x;
++    }
++
++    if (yDst < pDst->common.clip_region.extents.y1) {
++        skipdst_y = pDst->common.clip_region.extents.y1 - yDst;
++        if (skipdst_y >= (int)height)
++            return 1;
++        yDst = pDst->common.clip_region.extents.y1;
++        height -= skipdst_y;
++    }
++
++    if (xDst >= pDst->common.clip_region.extents.x2 ||
++        yDst >= pDst->common.clip_region.extents.y2)
++    {
++        return 1;
++    }
++
++    if (xDst + width > pDst->common.clip_region.extents.x2)
++        width = pDst->common.clip_region.extents.x2 - xDst;
++    if (yDst + height > pDst->common.clip_region.extents.y2)
++        height = pDst->common.clip_region.extents.y2 - yDst;
++
++    /* reference point is the center of the pixel */
++    v.vector[0] = pixman_int_to_fixed(xSrc) + pixman_fixed_1 / 2;
++    v.vector[1] = pixman_int_to_fixed(ySrc) + pixman_fixed_1 / 2;
++    v.vector[2] = pixman_fixed_1;
++
++    if (!pixman_transform_point_3d (pSrc->common.transform, &v))
++        return 0;
++
++    /* Round down to closest integer, ensuring that 0.5 rounds to 0, not 1 */
++    v.vector[0] -= pixman_fixed_e;
++    v.vector[1] -= pixman_fixed_e;
++
++    unit.vector[0] = pSrc->common.transform->matrix[0][0];
++    unit.vector[1] = pSrc->common.transform->matrix[1][1];
++
++    v.vector[0] += unit.vector[0] * skipdst_x;
++    v.vector[1] += unit.vector[1] * skipdst_y;
++
++    /* Check for possible fixed point arithmetics problems/overflows */
++    if (unit.vector[0] <= 0 || unit.vector[1] <= 0)
++        return 0;
++    if (width == 0 || height == 0)
++        return 0;
++    if ((uint32_t)width + (unit.vector[0] >> 16) >= 0x7FFF)
++        return 0;
++    if ((uint32_t)height + (unit.vector[1] >> 16) >= 0x7FFF)
++        return 0;
++
++    /* Horizontal source clipping is only supported for NORMAL repeat */
++    if (pSrc->common.repeat != PIXMAN_REPEAT_NORMAL
++        && fbTransformVerifyHorizontalClipping(pSrc, width, v.vector[0], unit.vector[0])) {
++        return 0;
++    }
++
++    /* Vertical source clipping is only supported for NONE and NORMAL repeat */
++    if (pSrc->common.repeat != PIXMAN_REPEAT_NONE && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL
++        && fbTransformVerifyVerticalClipping(pSrc, height, v.vector[1], unit.vector[1])) {
++        return 0;
++    }
++
++    if (op == PIXMAN_OP_OVER && pSrc->bits.format == PIXMAN_a8r8g8b8
++            && (pDst->bits.format == PIXMAN_x8r8g8b8 || pDst->bits.format == PIXMAN_a8r8g8b8))
++    {
++        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL) {
++            fbCompositeTransformNearestNonrotatedAffineTrivialclipOver_8888x8888(
++                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
++                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
++            return 1;
++        }
++        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL) {
++            fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatOver_8888x8888(
++                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
++                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
++            return 1;
++        }
++    }
++
++    if (op == PIXMAN_OP_SRC && (pSrc->bits.format == PIXMAN_x8r8g8b8 || pSrc->bits.format == PIXMAN_a8r8g8b8)
++            && (pDst->bits.format == PIXMAN_x8r8g8b8 || pDst->bits.format == pSrc->bits.format))
++    {
++        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL) {
++            fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_8888x8888(
++                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
++                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
++            return 1;
++        }
++        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL) {
++            fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_8888x8888(
++                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
++                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
++            return 1;
++        }
++    }
++
++    if (op == PIXMAN_OP_OVER && pSrc->bits.format == PIXMAN_a8r8g8b8 && pDst->bits.format == PIXMAN_r5g6b5)
++    {
++        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL) {
++            fbCompositeTransformNearestNonrotatedAffineTrivialclipOver_8888x0565(
++                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
++                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
++            return 1;
++        }
++        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL) {
++            fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatOver_8888x0565(
++                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
++                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
++            return 1;
++        }
++    }
++
++    if (op == PIXMAN_OP_SRC && pSrc->bits.format == PIXMAN_r5g6b5 && pDst->bits.format == PIXMAN_r5g6b5)
++    {
++        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL) {
++            fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_0565x0565(
++                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
++                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
++            return 1;
++        }
++        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL) {
++            fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_0565x0565(
++                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
++                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
++            return 1;
++        }
++    }
++
++    if (op == PIXMAN_OP_SRC && (pSrc->bits.format == PIXMAN_x8r8g8b8 || pSrc->bits.format == PIXMAN_a8r8g8b8)
++        && pDst->bits.format == PIXMAN_r5g6b5)
++    {
++        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL) {
++            fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_8888x0565(
++                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
++                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
++            return 1;
++        }
++        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL) {
++            fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_8888x0565(
++                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
++                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
++            return 1;
++        }
++    }
++
++    /* No fastpath scaling implemented for this case */
++    return 0;
++}
++
+ static void
+ fast_path_composite (pixman_implementation_t *imp,
+                      pixman_op_t              op,
+@@ -1279,6 +2266,30 @@ fast_path_composite (pixman_implementation_t *imp,
+     if (src->type == BITS
+         && src->common.transform
+         && !mask
++        && !src->common.alpha_map && !dest->common.alpha_map
++        && (src->common.filter == PIXMAN_FILTER_NEAREST)
++        && !src->bits.read_func && !src->bits.write_func
++        && !dest->bits.read_func && !dest->bits.write_func)
++    {
++        /* ensure that the transform matrix only has a scale */
++        if (src->common.transform->matrix[0][1] == 0 &&
++            src->common.transform->matrix[1][0] == 0 &&
++            src->common.transform->matrix[2][0] == 0 &&
++            src->common.transform->matrix[2][1] == 0 &&
++            src->common.transform->matrix[2][2] == pixman_fixed_1 &&
++            dest->common.clip_region.data == NULL)
++        {
++            if (fbCompositeTransformNonrotatedAffineTrivialclip (op, src, mask, dest,
++                    src_x, src_y, mask_x, mask_y, dest_x, dest_y, width, height))
++            {
++                return;
++            }
++        }
++    }
++
++    if (src->type == BITS
++        && src->common.transform
++        && !mask
+         && op == PIXMAN_OP_SRC
+         && !src->common.alpha_map && !dest->common.alpha_map
+         && (src->common.filter == PIXMAN_FILTER_NEAREST)
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/over-n-8-0565.patch b/recipes/obsolete/xorg/xorg-lib/pixman/over-n-8-0565.patch
new file mode 100644
index 0000000..3911068
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman/over-n-8-0565.patch
@@ -0,0 +1,231 @@
+From de2221a32d0b6628116565563f7b4ccd0a44e8b6 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Thu, 04 Mar 2010 23:20:25 +0000
+Subject: ARM: added 'armv6_composite_over_n_8_0565' fast path
+
+Provides ~3x performance improvement when working with
+data in L1 cache and memory. This fast path is important
+for fonts rendering when using 16bpp desktop.
+
+Microbenchmark from N800 (ARM11 @ 400MHz), measured in MPix/s:
+
+before:
+
+ over_n_8_0565 = L1:   2.99 M:  2.86
+
+after:
+
+ over_n_8_0565 = L1:   9.07 M:  8.05
+---
+diff --git a/pixman/pixman-arm-simd.c b/pixman/pixman-arm-simd.c
+index 09a2888..c375c01 100644
+--- a/pixman/pixman-arm-simd.c
++++ b/pixman/pixman-arm-simd.c
+@@ -419,6 +419,193 @@ arm_composite_over_n_8_8888 (pixman_implementation_t * impl,
+     }
+ }
+ 
++#if defined(__ARM_EABI__) && defined(__linux__)
++/*
++ * ARMv6 assembly optimized version of 'composite_over_n_8_0565'. It is
++ * a bare metal 'naked' function which uses all the available CPU registers
++ * and is compatible with ARM EABI. It might (or might not) break when used
++ * with a different ABI, anyway it is better to be safe than sorry.
++ */
++static void __attribute__((naked)) armv6_composite_over_n_8_0565_asm (
++    uint16_t *dst, uint8_t *mask, uint32_t src, int w,
++    int dst_stride_delta, int mask_stride_delta, int h)
++{
++    asm volatile (
++        ".macro composite_internal_armv6_asm opaque_flag\n"
++            /* save all registers (8 words) to stack */
++            "stmdb   sp!, {r4-r11, ip, lr}\n"
++            /* some register aliases for better readability */
++            "DST     .req  r0\n"
++            "MASK    .req  r1\n"
++            "S       .req  r2\n"
++            "W       .req  r3\n"
++            "A       .req  r8\n"
++            "D       .req  r10\n"
++            "C0000FF .req  r11\n"
++            "C00001F .req  r9\n"
++            "C800080 .req  ip\n"
++            "CE000E0 .req  lr\n"
++            /* precalculate some stuff and put it on stack */
++            "mov     r6, #0xF8\n"
++            "mov     r7, #0xFC\n"
++
++            "str     W, [sp, #-8]!\n"
++
++            ".if \\opaque_flag\n"
++                /* precalculate and save it to stack for later use:
++                 * ((src >> 3) & 0x001F) |
++                 * ((src >> 5) & 0x07E0) |
++                 * ((src >> 8) & 0xF800)
++                 */
++                "mov     A, #0x1F\n"
++                "and     D, A, S, lsr #3\n"
++                "and     r4, S, #0xF80000\n"
++                "and     r5, S, #0xFC00\n"
++                "orr     D, r4, lsr #8\n"
++                "orr     D, r5, lsr #5\n"
++                "str     D, [sp, #4]\n"
++            ".endif\n"
++
++            "ldr     D, [sp, #(8 + 10*4 + 8)]\n" /* h */
++            "ldr     A, =0xFF00FF\n"
++            "ldr     C800080, =0x800080\n"
++            "ldr     CE000E0, =0xE000E0\n"
++            "ldr     C0000FF, =0xFF\n"
++            "ldr     C00001F, =0x1F\n"
++            "and     r4, A, S\n"           /* r4 = src & 0x00FF00FF */
++            "and     r5, A, S, lsr #8\n"   /* r5 = (src >> 8) & 0x00FF00FF */
++            "stmdb   sp!, {r4, r5, r6, r7}\n"
++        "0:\n"
++            "subs    D, D, #1\n"
++            "blt     6f\n"
++        "1:\n"
++            "subs    W, W, #1\n"
++            "blt     5f\n"
++        "2:\n"
++            "ldrb    A, [MASK], #1\n"
++            "ldmia   sp, {r4, r5, r6, r7}\n" /* load constants from stack */
++            "add     DST, DST, #2\n"
++            "cmp     A, #0\n"
++            "beq     1b\n"
++
++            ".if \\opaque_flag\n"
++                "cmp     A, #0xFF\n"
++                "bne     3f\n"
++                "ldr     D, [sp, #(4*4 + 4)]\n" /* load precalculated value */
++                "subs    W, #1\n"
++                "strh    D, [DST, #-2]\n"
++                "bge     2b\n"
++            ".endif\n"
++
++        "3:\n"
++            "ldrh    D, [DST, #-2]\n"
++            "mla     r4, A, r4, C800080\n"
++            "mla     r5, A, r5, C800080\n"
++            "and     r6, r6, D, lsl #3\n" /* & 0xF8 */
++            "and     r7, r7, D, lsr #3\n" /* & 0xFC */
++            "and     D, D, #0xF800\n"
++            "bic     S, r4, #0xFF0000\n"
++            "bic     A, r5, #0xFF0000\n"
++            "add     r4, r4, S, lsr #8\n"
++            "add     r5, r5, A, lsr #8\n"
++
++            "and     S, r7, #0xC0\n"
++            "orr     r6, r6, D, lsl #8\n"
++            "and     D, r6, CE000E0\n"
++            "eor     A, C0000FF, r5, lsr #24\n"
++            "orr     r6, D, lsr #5\n"
++            "orr     r7, S, lsr #6\n"
++
++            "mla     r6, A, r6, C800080\n"
++            "mla     r7, A, r7, C800080\n"
++            "subs    W, #1\n"
++            "bic     D, r6, #0xFF0000\n"
++            "bic     A, r7, #0xFF0000\n"
++            "add     r6, r6, D, lsr #8\n"
++            "uqadd8  r4, r4, r6\n"
++            "add     r7, r7, A, lsr #8\n"
++            "uqadd8  r5, r5, r7\n"
++            "and     D, C00001F, r4, lsr #11\n"
++            "and     r4, r4, #0xF8000000\n"
++            "and     r5, r5, #0xFC00\n"
++            "orr     D, r4, lsr #16\n"
++            "orr     D, r5, lsr #5\n"
++            "strh    D, [DST, #-2]\n"
++            "bge     2b\n"
++        "5:\n"
++            "ldr     r6, [sp, #(4*4 + 8 + 10*4 + 8)]\n" /* h */
++            "ldr     r4, [sp, #(4*4 + 8 + 10*4 + 4)]\n" /* mask stride */
++            "ldr     r5, [sp, #(4*4 + 8 + 10*4 + 0)]\n" /* dst stride */
++            "ldr     W, [sp, #(4*4)]\n"
++            "subs    r6, r6, #1\n" /* h */
++            "str     r6, [sp, #(4*4 + 8 + 10*4 + 8)]\n" /* h */
++            "add     MASK, MASK, r4\n"
++            "add     DST, DST, r5, lsl #1\n"
++            "bgt     1b\n"
++        "6:\n"
++            "add     sp, sp, #(4*4 + 8)\n"
++            /* restore all registers and return */
++            "ldmia   sp!, {r4-r11, ip, pc}\n"
++            ".unreq DST\n"
++            ".unreq MASK\n"
++            ".unreq S\n"
++            ".unreq W\n"
++            ".unreq A\n"
++            ".unreq D\n"
++            ".unreq C0000FF\n"
++            ".unreq C00001F\n"
++            ".unreq C800080\n"
++            ".unreq CE000E0\n"
++        ".endm\n"
++
++        "mov     ip, r2, lsr #24\n"
++        "cmp     ip, #0xFF\n"
++        "beq     9f\n"
++        "composite_internal_armv6_asm 0\n"
++    "9:\n"
++        "composite_internal_armv6_asm 1\n"
++        ".ltorg\n"
++        ".purgem composite_internal_armv6_asm\n"
++    );
++}
++
++static void
++armv6_composite_over_n_8_0565 (pixman_implementation_t * impl,
++			       pixman_op_t               op,
++			       pixman_image_t *          src_image,
++			       pixman_image_t *          mask_image,
++			       pixman_image_t *          dst_image,
++			       int32_t                   src_x,
++			       int32_t                   src_y,
++			       int32_t                   mask_x,
++			       int32_t                   mask_y,
++			       int32_t                   dest_x,
++			       int32_t                   dest_y,
++			       int32_t                   width,
++			       int32_t                   height)
++{
++    uint32_t src;
++    uint16_t *dst;
++    uint8_t  *mask;
++    int dst_stride, mask_stride;
++
++    src = _pixman_image_get_solid (src_image, dst_image->bits.format);
++
++    /* bail out if fully transparent */
++    if (src == 0)
++	return;
++
++    PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t,
++			   dst_stride, dst, 1);
++    PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t,
++			   mask_stride, mask, 1);
++
++    armv6_composite_over_n_8_0565_asm (dst, mask, src, width,
++	dst_stride - width, mask_stride - width, height);
++}
++
++#endif
++
+ static const pixman_fast_path_t arm_simd_fast_paths[] =
+ {
+     PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, a8r8g8b8, arm_composite_over_8888_8888),
+@@ -434,7 +621,10 @@ static const pixman_fast_path_t arm_simd_fast_paths[] =
+     PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8r8g8b8, arm_composite_over_n_8_8888),
+     PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8b8g8r8, arm_composite_over_n_8_8888),
+     PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8b8g8r8, arm_composite_over_n_8_8888),
+-
++#if defined(__ARM_EABI__) && defined(__linux__)
++    PIXMAN_STD_FAST_PATH (OVER, solid, a8, r5g6b5, armv6_composite_over_n_8_0565),
++    PIXMAN_STD_FAST_PATH (OVER, solid, a8, b5g6r5, armv6_composite_over_n_8_0565),
++#endif
+     { PIXMAN_OP_NONE },
+ };
+ 
+--
+cgit v0.8.3-6-g21f6
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/pixman-28986.patch b/recipes/obsolete/xorg/xorg-lib/pixman/pixman-28986.patch
new file mode 100644
index 0000000..f5ba4c3
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman/pixman-28986.patch
@@ -0,0 +1,32 @@
+From 7b7860d61fb1526acdf010dd8fd644bbf1396b9e Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Fri, 28 Aug 2009 22:34:21 +0300
+Subject: [PATCH] ARM: workaround for gcc bug in vshll_n_u8 intrinsic
+
+Some versions of gcc (cs2009q1, 4.4.1) incorrectly reject
+shift operand having value >= 8, claiming that it is out of
+range. So inline assembly is used as a workaround.
+---
+ pixman/pixman-arm-neon.c |    6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 4125d1b..3e7f566 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -64,6 +64,12 @@ unpack0565 (uint16x8_t rgb)
+     return res;
+ }
+ 
++#ifdef USE_GCC_INLINE_ASM
++/* Some versions of gcc have problems with vshll_n_u8 intrinsic (Bug 23576) */
++#define vshll_n_u8(a, n) ({ uint16x8_t r; \
++    asm ("vshll.u8 %q0, %P1, %2\n" : "=w" (r) : "w" (a), "i" (n)); r; })
++#endif
++
+ static force_inline uint16x8_t
+ pack0565 (uint8x8x4_t s)
+ {
+-- 
+1.5.4.3
+
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/prefetch.patch b/recipes/obsolete/xorg/xorg-lib/pixman/prefetch.patch
new file mode 100644
index 0000000..c2e856e
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman/prefetch.patch
@@ -0,0 +1,298 @@
+From d0044bfbd596f22ed1560579ea6537b39f3dc1af Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Thu, 29 Oct 2009 19:06:42 +0000
+Subject: ARM: Don't emit prefetch code if prefetch distance is set to 0
+
+Also it is now possible to disable prefetch globally with
+a configuration macro
+---
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index bca499a..35e6a7e 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -219,33 +219,33 @@
+     vshrn.u16   d7, q2, #3
+     vsli.u16    q2, q2, #5
+         vshll.u8    q14, d16, #8
+-                                    add PF_X, PF_X, #8
++                                    PF add PF_X, PF_X, #8
+         vshll.u8    q8, d19, #8
+-                                    tst PF_CTL, #0xF
++                                    PF tst PF_CTL, #0xF
+     vsri.u8     d6, d6, #5
+-                                    addne PF_X, PF_X, #8
++                                    PF addne PF_X, PF_X, #8
+     vmvn.8      d3, d3
+-                                    subne PF_CTL, PF_CTL, #1
++                                    PF subne PF_CTL, PF_CTL, #1
+     vsri.u8     d7, d7, #6
+     vshrn.u16   d30, q2, #2
+     vmull.u8    q10, d3, d6
+-                                    pld [PF_SRC, PF_X, lsl #src_bpp_shift]
++                                    PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
+     vmull.u8    q11, d3, d7
+     vmull.u8    q12, d3, d30
+-                                    pld [PF_DST, PF_X, lsl #dst_bpp_shift]
++                                    PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
+         vsri.u16    q14, q8, #5
+-                                    cmp PF_X, ORIG_W
++                                    PF cmp PF_X, ORIG_W
+         vshll.u8    q9, d18, #8
+     vrshr.u16   q13, q10, #8
+-                                    subge PF_X, PF_X, ORIG_W
++                                    PF subge PF_X, PF_X, ORIG_W
+     vrshr.u16   q3, q11, #8
+     vrshr.u16   q15, q12, #8
+-                                    subges PF_CTL, PF_CTL, #0x10
++                                    PF subges PF_CTL, PF_CTL, #0x10
+         vsri.u16    q14, q9, #11
+-                                    ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
++                                    PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
+     vraddhn.u16 d20, q10, q13
+     vraddhn.u16 d23, q11, q3
+-                                    ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
++                                    PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
+     vraddhn.u16 d22, q12, q15
+         vst1.16     {d28, d29}, [DST_W, :128]!
+ .endm
+@@ -323,20 +323,20 @@ generate_composite_function \
+ 
+ .macro pixman_composite_src_8888_0565_process_pixblock_tail_head
+         vsri.u16    q14, q8, #5
+-                                    add PF_X, PF_X, #8
+-                                    tst PF_CTL, #0xF
++                                    PF add PF_X, PF_X, #8
++                                    PF tst PF_CTL, #0xF
+     vld4.8      {d0, d1, d2, d3}, [SRC]!
+-                                    addne PF_X, PF_X, #8
+-                                    subne PF_CTL, PF_CTL, #1
++                                    PF addne PF_X, PF_X, #8
++                                    PF subne PF_CTL, PF_CTL, #1
+         vsri.u16    q14, q9, #11
+-                                    cmp PF_X, ORIG_W
+-                                    pld [PF_SRC, PF_X, lsl #src_bpp_shift]
++                                    PF cmp PF_X, ORIG_W
++                                    PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
+     vshll.u8    q8, d1, #8
+         vst1.16     {d28, d29}, [DST_W, :128]!
+-                                    subge PF_X, PF_X, ORIG_W
+-                                    subges PF_CTL, PF_CTL, #0x10
++                                    PF subge PF_X, PF_X, ORIG_W
++                                    PF subges PF_CTL, PF_CTL, #0x10
+     vshll.u8    q14, d2, #8
+-                                    ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
++                                    PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
+     vshll.u8    q9, d0, #8
+ .endm
+ 
+@@ -363,20 +363,20 @@ generate_composite_function \
+ 
+ .macro pixman_composite_add_8000_8000_process_pixblock_tail_head
+     vld1.8      {d0, d1, d2, d3}, [SRC]!
+-                                    add PF_X, PF_X, #32
+-                                    tst PF_CTL, #0xF
++                                    PF add PF_X, PF_X, #32
++                                    PF tst PF_CTL, #0xF
+     vld1.8      {d4, d5, d6, d7}, [DST_R, :128]!
+-                                    addne PF_X, PF_X, #32
+-                                    subne PF_CTL, PF_CTL, #1
++                                    PF addne PF_X, PF_X, #32
++                                    PF subne PF_CTL, PF_CTL, #1
+         vst1.8      {d28, d29, d30, d31}, [DST_W, :128]!
+-                                    cmp PF_X, ORIG_W
+-                                    pld [PF_SRC, PF_X, lsl #src_bpp_shift]
+-                                    pld [PF_DST, PF_X, lsl #dst_bpp_shift]
+-                                    subge PF_X, PF_X, ORIG_W
+-                                    subges PF_CTL, PF_CTL, #0x10
++                                    PF cmp PF_X, ORIG_W
++                                    PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
++                                    PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
++                                    PF subge PF_X, PF_X, ORIG_W
++                                    PF subges PF_CTL, PF_CTL, #0x10
+     vqadd.u8    q14, q0, q2
+-                                    ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
+-                                    ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
++                                    PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
++                                    PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
+     vqadd.u8    q15, q1, q3
+ .endm
+ 
+@@ -418,32 +418,32 @@ generate_composite_function \
+ .macro pixman_composite_over_8888_8888_process_pixblock_tail_head
+     vld4.8      {d4, d5, d6, d7}, [DST_R, :128]!
+         vrshr.u16   q14, q8, #8
+-                                    add PF_X, PF_X, #8
+-                                    tst PF_CTL, #0xF
++                                    PF add PF_X, PF_X, #8
++                                    PF tst PF_CTL, #0xF
+         vrshr.u16   q15, q9, #8
+         vrshr.u16   q12, q10, #8
+         vrshr.u16   q13, q11, #8
+-                                    addne PF_X, PF_X, #8
+-                                    subne PF_CTL, PF_CTL, #1
++                                    PF addne PF_X, PF_X, #8
++                                    PF subne PF_CTL, PF_CTL, #1
+         vraddhn.u16 d28, q14, q8
+         vraddhn.u16 d29, q15, q9
+-                                    cmp PF_X, ORIG_W
++                                    PF cmp PF_X, ORIG_W
+         vraddhn.u16 d30, q12, q10
+         vraddhn.u16 d31, q13, q11
+         vqadd.u8    q14, q0, q14
+         vqadd.u8    q15, q1, q15
+     vld4.8      {d0, d1, d2, d3}, [SRC]!
+-                                    pld [PF_SRC, PF_X, lsl #src_bpp_shift]
++                                    PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
+     vmvn.8      d22, d3
+-                                    pld [PF_DST, PF_X, lsl #dst_bpp_shift]
++                                    PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
+         vst4.8      {d28, d29, d30, d31}, [DST_W, :128]!
+-                                    subge PF_X, PF_X, ORIG_W
++                                    PF subge PF_X, PF_X, ORIG_W
+     vmull.u8    q8, d22, d4
+-                                    subges PF_CTL, PF_CTL, #0x10
++                                    PF subges PF_CTL, PF_CTL, #0x10
+     vmull.u8    q9, d22, d5
+-                                    ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
++                                    PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
+     vmull.u8    q10, d22, d6
+-                                    ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
++                                    PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
+     vmull.u8    q11, d22, d7
+ .endm
+ 
+diff --git a/pixman/pixman-arm-neon-asm.h b/pixman/pixman-arm-neon-asm.h
+index d276ab9..a2941ae 100644
+--- a/pixman/pixman-arm-neon-asm.h
++++ b/pixman/pixman-arm-neon-asm.h
+@@ -58,6 +58,11 @@
+ #define RESPECT_STRICT_ALIGNMENT 1
+ 
+ /*
++ * If set to nonzero value, prefetch is globally disabled
++ */
++#define PREFETCH_GLOBALLY_DISABLED 0 
++
++/*
+  * Definitions of supplementary pixld/pixst macros (for partial load/store of
+  * pixel data)
+  */
+@@ -218,37 +223,43 @@
+  * pixels processing like simple copy. Anyway, having prefetch is a must
+  * when working with graphics data.
+  */
++.macro PF a, x:vararg
++.if (ADVANCED_PREFETCH_ENABLED != 0) && (PREFETCH_GLOBALLY_DISABLED == 0)
++    a x
++.endif
++.endm
++
+ .macro cache_preload std_increment, boost_increment
+ .if (src_bpp_shift >= 0) || (dst_r_bpp != 0) || (mask_bpp_shift >= 0)
+ .if regs_shortage
+-    ldr ORIG_W, [sp] /* If we are short on regs, ORIG_W is kept on stack */
++    PF ldr ORIG_W, [sp] /* If we are short on regs, ORIG_W is kept on stack */
+ .endif
+ .if std_increment != 0
+-    add PF_X, PF_X, #std_increment
++    PF add PF_X, PF_X, #std_increment
+ .endif
+-    tst PF_CTL, #0xF
+-    addne PF_X, PF_X, #boost_increment
+-    subne PF_CTL, PF_CTL, #1
+-    cmp PF_X, ORIG_W
++    PF tst PF_CTL, #0xF
++    PF addne PF_X, PF_X, #boost_increment
++    PF subne PF_CTL, PF_CTL, #1
++    PF cmp PF_X, ORIG_W
+ .if src_bpp_shift >= 0
+-    pld [PF_SRC, PF_X, lsl #src_bpp_shift]
++    PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
+ .endif
+ .if dst_r_bpp != 0
+-    pld [PF_DST, PF_X, lsl #dst_bpp_shift]
++    PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
+ .endif
+ .if mask_bpp_shift >= 0
+-    pld [PF_MASK, PF_X, lsl #mask_bpp_shift]
++    PF pld, [PF_MASK, PF_X, lsl #mask_bpp_shift]
+ .endif
+-    subge PF_X, PF_X, ORIG_W
+-    subges PF_CTL, PF_CTL, #0x10
++    PF subge PF_X, PF_X, ORIG_W
++    PF subges PF_CTL, PF_CTL, #0x10
+ .if src_bpp_shift >= 0
+-    ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
++    PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
+ .endif
+ .if dst_r_bpp != 0
+-    ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
++    PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
+ .endif
+ .if mask_bpp_shift >= 0
+-    ldrgeb DUMMY, [PF_MASK, MASK_STRIDE, lsl #mask_bpp_shift]!
++    PF ldrgeb DUMMY, [PF_MASK, MASK_STRIDE, lsl #mask_bpp_shift]!
+ .endif
+ .endif
+ .endm
+@@ -297,6 +308,12 @@ fname:
+     PF_DST      .req        r12
+     PF_MASK     .req        r14
+ 
++.if prefetch_distance == 0
++    .set ADVANCED_PREFETCH_ENABLED, 0
++.else
++    .set ADVANCED_PREFETCH_ENABLED, 1
++.endif
++
+ .if mask_bpp == 0
+     ORIG_W      .req        r7      /* saved original width */
+     DUMMY       .req        r8      /* temporary register */
+@@ -374,12 +391,12 @@ fname:
+     ldr         MASK_STRIDE, [sp, #52]
+ .endif
+     mov         DST_R, DST_W
+-    mov         PF_SRC, SRC
+-    mov         PF_DST, DST_R
+-    mov         PF_MASK, MASK
+-    mov         PF_CTL, H, lsl #4
+-    /* pf_ctl = 10 | ((h - 1) << 4) */
+-    add         PF_CTL, #(prefetch_distance - 0x10)
++    PF mov      PF_SRC, SRC
++    PF mov      PF_DST, DST_R
++    PF mov      PF_MASK, MASK
++    /* PF_CTL = prefetch_distance | ((h - 1) << 4) */
++    PF mov      PF_CTL, H, lsl #4
++    PF add      PF_CTL, #(prefetch_distance - 0x10)
+ 
+     init
+ .if regs_shortage
+@@ -412,7 +429,7 @@ fname:
+ .else
+     add         DST_R, DST_R, #lowbit
+ .endif
+-    add         PF_X, PF_X, #(lowbit * 8 / dst_w_bpp)
++    PF add      PF_X, PF_X, #(lowbit * 8 / dst_w_bpp)
+     sub         W, W, #(lowbit * 8 / dst_w_bpp)
+ 1:
+ .endif
+@@ -444,7 +461,7 @@ fname:
+                 (src_basereg - pixblock_size * src_bpp / 64), SRC
+     pixld       pixblock_size, mask_bpp, \
+                 (mask_basereg - pixblock_size * mask_bpp / 64), MASK
+-    add         PF_X, PF_X, #pixblock_size
++    PF add      PF_X, PF_X, #pixblock_size
+     process_pixblock_head
+     cache_preload 0, pixblock_size
+     subs        W, W, #(pixblock_size * 2)
+@@ -468,7 +485,7 @@ fname:
+     pixld       chunk_size, src_bpp, src_basereg, SRC
+     pixld       chunk_size, mask_bpp, mask_basereg, MASK
+     pixld_a     chunk_size, dst_r_bpp, dst_r_basereg, DST_R
+-    add         PF_X, PF_X, #chunk_size
++    PF add      PF_X, PF_X, #chunk_size
+ 1:
+ .endif
+ .endr
+--
+cgit v0.8.2
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/remove-broken.patch b/recipes/obsolete/xorg/xorg-lib/pixman/remove-broken.patch
new file mode 100644
index 0000000..fd025b4
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman/remove-broken.patch
@@ -0,0 +1,826 @@
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Sun, 26 Jul 2009 22:21:26 +0000 (+0300)
+Subject: ARM: Removal of unused/broken NEON code
+X-Git-Url: http://siarhei.siamashka.name/gitweb/?p=pixman.git;a=commitdiff_plain;h=7ef2322eefcccc28a2d45c0da22c0fee88b8f464
+
+ARM: Removal of unused/broken NEON code
+---
+
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 4125d1b..9404c70 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -1895,710 +1895,6 @@ pixman_fill_neon (uint32_t *bits,
+ #endif
+ }
+ 
+-/* TODO: is there a more generic way of doing this being introduced? */
+-#define NEON_SCANLINE_BUFFER_PIXELS (1024)
+-
+-static inline void
+-neon_quadword_copy (void *   dst,
+-		    void *   src,
+-		    uint32_t count,         /* of quadwords */
+-		    uint32_t trailer_count  /* of bytes */)
+-{
+-    uint8_t *t_dst = dst, *t_src = src;
+-
+-    /* Uses aligned multi-register loads to maximise read bandwidth
+-     * on uncached memory such as framebuffers
+-     * The accesses do not have the aligned qualifiers, so that the copy
+-     * may convert between aligned-uncached and unaligned-cached memory.
+-     * It is assumed that the CPU can infer alignedness from the address.
+-     */
+-
+-#ifdef USE_GCC_INLINE_ASM
+-
+-    asm volatile (
+-        "	cmp       %[count], #8				\n"
+-        "	blt 1f    @ skip oversized fragments		\n"
+-        "0: @ start with eight quadwords at a time		\n"
+-        "	sub       %[count], %[count], #8		\n"
+-        "	vld1.8    {d16, d17, d18, d19}, [%[src]]!		\n"
+-        "	vld1.8    {d20, d21, d22, d23}, [%[src]]!		\n"
+-        "	vld1.8    {d24, d25, d26, d27}, [%[src]]!		\n"
+-        "	vld1.8    {d28, d29, d30, d31}, [%[src]]!		\n"
+-        "	cmp       %[count], #8				\n"
+-        "	vst1.8    {d16, d17, d18, d19}, [%[dst]]!		\n"
+-        "	vst1.8    {d20, d21, d22, d23}, [%[dst]]!		\n"
+-        "	vst1.8    {d24, d25, d26, d27}, [%[dst]]!		\n"
+-        "	vst1.8    {d28, d29, d30, d31}, [%[dst]]!		\n"
+-        "	bge 0b						\n"
+-        "1: @ four quadwords					\n"
+-        "	tst       %[count], #4				\n"
+-        "	beq 2f    @ skip oversized fragment		\n"
+-        "	vld1.8    {d16, d17, d18, d19}, [%[src]]!		\n"
+-        "	vld1.8    {d20, d21, d22, d23}, [%[src]]!		\n"
+-        "	vst1.8    {d16, d17, d18, d19}, [%[dst]]!		\n"
+-        "	vst1.8    {d20, d21, d22, d23}, [%[dst]]!		\n"
+-        "2: @ two quadwords					\n"
+-        "	tst       %[count], #2				\n"
+-        "	beq 3f    @ skip oversized fragment		\n"
+-        "	vld1.8    {d16, d17, d18, d19}, [%[src]]!		\n"
+-        "	vst1.8    {d16, d17, d18, d19}, [%[dst]]!		\n"
+-        "3: @ one quadword					\n"
+-        "	tst       %[count], #1				\n"
+-        "	beq 4f    @ skip oversized fragment		\n"
+-        "	vld1.8    {d16, d17}, [%[src]]!			\n"
+-        "	vst1.8    {d16, d17}, [%[dst]]!			\n"
+-        "4: @ end						\n"
+-
+-        /* Clobbered input registers marked as input/outputs */
+-	: [dst] "+r" (t_dst), [src] "+r" (t_src), [count] "+r" (count)
+-
+-	  /* No unclobbered inputs */
+-	:
+-
+-        /* Clobbered vector registers */
+-	: "d16", "d17", "d18", "d19", "d20", "d21", "d22", "d23", "d24", "d25",
+-	  "d26", "d27", "d28", "d29", "d30", "d31", "cc", "memory");
+-
+-#else
+-
+-    while (count >= 8)
+-    {
+-	uint8x16x4_t t1 = vld4q_u8 (t_src);
+-	uint8x16x4_t t2 = vld4q_u8 (t_src + sizeof(uint8x16x4_t));
+-	
+-	t_src += sizeof(uint8x16x4_t) * 2;
+-	vst4q_u8 (t_dst, t1);
+-	vst4q_u8 (t_dst + sizeof(uint8x16x4_t), t2);
+-	t_dst += sizeof(uint8x16x4_t) * 2;
+-	count -= 8;
+-    }
+-
+-    if (count & 4)
+-    {
+-	uint8x16x4_t t1 = vld4q_u8 (t_src);
+-	
+-	t_src += sizeof(uint8x16x4_t);
+-	vst4q_u8 (t_dst, t1);
+-	t_dst += sizeof(uint8x16x4_t);
+-    }
+-
+-    if (count & 2)
+-    {
+-	uint8x8x4_t t1 = vld4_u8 (t_src);
+-	
+-	t_src += sizeof(uint8x8x4_t);
+-	vst4_u8 (t_dst, t1);
+-	t_dst += sizeof(uint8x8x4_t);
+-    }
+-
+-    if (count & 1)
+-    {
+-	uint8x16_t t1 = vld1q_u8 (t_src);
+-	
+-	t_src += sizeof(uint8x16_t);
+-	vst1q_u8 (t_dst, t1);
+-	t_dst += sizeof(uint8x16_t);
+-    }
+-
+-#endif  /* !USE_GCC_INLINE_ASM */
+-
+-    if (trailer_count)
+-    {
+-	if (trailer_count & 8)
+-	{
+-	    uint8x8_t t1 = vld1_u8 (t_src);
+-	    
+-	    t_src += sizeof(uint8x8_t);
+-	    vst1_u8 (t_dst, t1);
+-	    t_dst += sizeof(uint8x8_t);
+-	}
+-
+-	if (trailer_count & 4)
+-	{
+-	    *((uint32_t*) t_dst) = *((uint32_t*) t_src);
+-	    
+-	    t_dst += 4;
+-	    t_src += 4;
+-	}
+-
+-	if (trailer_count & 2)
+-	{
+-	    *((uint16_t*) t_dst) = *((uint16_t*) t_src);
+-	    
+-	    t_dst += 2;
+-	    t_src += 2;
+-	}
+-
+-	if (trailer_count & 1)
+-	{
+-	    *t_dst++ = *t_src++;
+-	}
+-    }
+-}
+-
+-static inline void
+-solid_over_565_8_pix_neon (uint32_t  glyph_colour,
+-                           uint16_t *dest,
+-                           uint8_t * in_mask,
+-                           uint32_t  dest_stride,    /* bytes, not elements */
+-                           uint32_t  mask_stride,
+-                           uint32_t  count           /* 8-pixel groups */)
+-{
+-    /* Inner loop of glyph blitter (solid colour, alpha mask) */
+-
+-#ifdef USE_GCC_INLINE_ASM
+-
+-    asm volatile (
+-        "	vld4.8 {d20[], d21[], d22[], d23[]}, [%[glyph_colour]]  @ splat solid colour components	\n"
+-        "0:	@ loop																				\n"
+-        "	vld1.16   {d0, d1}, [%[dest]]         @ load first pixels from framebuffer			\n"
+-        "	vld1.8    {d17}, [%[in_mask]]         @ load alpha mask of glyph						\n"
+-        "	vmull.u8  q9, d17, d23               @ apply glyph colour alpha to mask				\n"
+-        "	vshrn.u16 d17, q9, #8                @ reformat it to match original mask			\n"
+-        "	vmvn      d18, d17                   @ we need the inverse mask for the background	\n"
+-        "	vsli.u16  q3, q0, #5                 @ duplicate framebuffer blue bits				\n"
+-        "	vshrn.u16 d2, q0, #8                 @ unpack red from framebuffer pixels			\n"
+-        "	vshrn.u16 d4, q0, #3                 @ unpack green									\n"
+-        "	vsri.u8   d2, d2, #5                 @ duplicate red bits (extend 5 to 8)			\n"
+-        "	vshrn.u16 d6, q3, #2                 @ unpack extended blue (truncate 10 to 8)		\n"
+-        "	vsri.u8   d4, d4, #6                 @ duplicate green bits (extend 6 to 8)			\n"
+-        "	vmull.u8  q1, d2, d18                @ apply inverse mask to background red...		\n"
+-        "	vmull.u8  q2, d4, d18                @ ...green...									\n"
+-        "	vmull.u8  q3, d6, d18                @ ...blue										\n"
+-        "	subs      %[count], %[count], #1     @ decrement/test loop counter					\n"
+-        "	vmlal.u8  q1, d17, d22               @ add masked foreground red...					\n"
+-        "	vmlal.u8  q2, d17, d21               @ ...green...									\n"
+-        "	vmlal.u8  q3, d17, d20               @ ...blue										\n"
+-        "	add %[in_mask], %[in_mask], %[mask_stride] @ advance mask pointer, while we wait		\n"
+-        "	vsri.16   q1, q2, #5                 @ pack green behind red						\n"
+-        "	vsri.16   q1, q3, #11                @ pack blue into pixels						\n"
+-        "	vst1.16   {d2, d3}, [%[dest]]         @ store composited pixels						\n"
+-        "	add %[dest], %[dest], %[dest_stride]  @ advance framebuffer pointer					\n"
+-        "	bne 0b                               @ next please									\n"
+-
+-	/* Clobbered registers marked as input/outputs */
+-	: [dest] "+r" (dest), [in_mask] "+r" (in_mask), [count] "+r" (count)
+-	  
+-	  /* Inputs */
+-	: [dest_stride] "r" (dest_stride), [mask_stride] "r" (mask_stride), [glyph_colour] "r" (&glyph_colour)
+-
+-	  /* Clobbers, including the inputs we modify, and potentially lots of memory */
+-	: "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d17", "d18", "d19",
+-	  "d20", "d21", "d22", "d23", "d24", "d25", "cc", "memory"
+-        );
+-
+-#else
+-
+-    uint8x8x4_t solid_colour = vld4_dup_u8 ((uint8_t*) &glyph_colour);
+-
+-    while (count--)
+-    {
+-	uint16x8_t pixels = vld1q_u16 (dest);
+-	uint8x8_t mask = vshrn_n_u16 (vmull_u8 (solid_colour.val[3], vld1_u8 (in_mask)), 8);
+-	uint8x8_t mask_image = vmvn_u8 (mask);
+-
+-	uint8x8_t t_red   = vshrn_n_u16 (pixels, 8);
+-	uint8x8_t t_green = vshrn_n_u16 (pixels, 3);
+-	uint8x8_t t_blue  = vshrn_n_u16 (vsli_n_u8 (pixels, pixels, 5), 2);
+-
+-	uint16x8_t s_red   = vmull_u8 (vsri_n_u8 (t_red, t_red, 5), mask_image);
+-	uint16x8_t s_green = vmull_u8 (vsri_n_u8 (t_green, t_green, 6), mask_image);
+-	uint16x8_t s_blue  = vmull_u8 (t_blue, mask_image);
+-
+-	s_red   = vmlal (s_red, mask, solid_colour.val[2]);
+-	s_green = vmlal (s_green, mask, solid_colour.val[1]);
+-	s_blue  = vmlal (s_blue, mask, solid_colour.val[0]);
+-
+-	pixels = vsri_n_u16 (s_red, s_green, 5);
+-	pixels = vsri_n_u16 (pixels, s_blue, 11);
+-	vst1q_u16 (dest, pixels);
+-
+-	dest += dest_stride;
+-	mask += mask_stride;
+-    }
+-
+-#endif
+-}
+-
+-#if 0 /* this is broken currently */
+-static void
+-neon_composite_over_n_8_0565 (pixman_implementation_t * impl,
+-                              pixman_op_t               op,
+-                              pixman_image_t *          src_image,
+-                              pixman_image_t *          mask_image,
+-                              pixman_image_t *          dst_image,
+-                              int32_t                   src_x,
+-                              int32_t                   src_y,
+-                              int32_t                   mask_x,
+-                              int32_t                   mask_y,
+-                              int32_t                   dest_x,
+-                              int32_t                   dest_y,
+-                              int32_t                   width,
+-                              int32_t                   height)
+-{
+-    uint32_t  src, srca;
+-    uint16_t *dst_line, *aligned_line;
+-    uint8_t  *mask_line;
+-    uint32_t  dst_stride, mask_stride;
+-    uint32_t  kernel_count, copy_count, copy_tail;
+-    uint8_t   kernel_offset, copy_offset;
+-
+-    src = _pixman_image_get_solid (src_image, dst_image->bits.format);
+-
+-    /* bail out if fully transparent or degenerate */
+-    srca = src >> 24;
+-    if (src == 0)
+-	return;
+-
+-    if (width == 0 || height == 0)
+-	return;
+-
+-    if (width > NEON_SCANLINE_BUFFER_PIXELS)
+-    {
+-	/* split the blit, so we can use a fixed-size scanline buffer
+-	 * TODO: there must be a more elegant way of doing this.
+-	 */
+-	int x;
+-	for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS)
+-	{
+-	    neon_composite_over_n_8_0565 (
+-		impl, op,
+-		src_image, mask_image, dst_image,
+-		src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y,
+-		(x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height);
+-	}
+-
+-	return;
+-    }
+-    
+-    PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1);
+-    PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t, mask_stride, mask_line, 1);
+-
+-    /* keep within minimum number of aligned quadwords on width
+-     * while also keeping the minimum number of columns to process
+-     */
+-    {
+-	unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF;
+-	unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF;
+-	unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF;
+-
+-	/* the fast copy should be quadword aligned */
+-	copy_offset = dst_line - ((uint16_t*) aligned_left);
+-	aligned_line = dst_line - copy_offset;
+-	copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4);
+-	copy_tail = 0;
+-
+-	if (aligned_right - aligned_left > ceiling_length)
+-	{
+-	    /* unaligned routine is tightest */
+-	    kernel_count = (uint32_t) (ceiling_length >> 4);
+-	    kernel_offset = copy_offset;
+-	}
+-	else
+-	{
+-	    /* aligned routine is equally tight, so it is safer to align */
+-	    kernel_count = copy_count;
+-	    kernel_offset = 0;
+-	}
+-
+-	/* We should avoid reading beyond scanline ends for safety */
+-	if (aligned_line < (dst_line - dest_x) ||
+-	    (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width))
+-	{
+-	    /* switch to precise read */
+-	    copy_offset = kernel_offset = 0;
+-	    aligned_line = dst_line;
+-	    kernel_count = (uint32_t) (ceiling_length >> 4);
+-	    copy_count = (width * sizeof(*dst_line)) >> 4;
+-	    copy_tail = (width * sizeof(*dst_line)) & 0xF;
+-	}
+-    }
+-
+-    {
+-	uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8];         /* deliberately not initialised */
+-	uint8_t glyph_line[NEON_SCANLINE_BUFFER_PIXELS + 8];
+-	int y = height;
+-
+-	/* row-major order */
+-	/* left edge, middle block, right edge */
+-	for ( ; y--; mask_line += mask_stride, aligned_line += dst_stride, dst_line += dst_stride)
+-	{
+-	    /* We don't want to overrun the edges of the glyph,
+-	     * so realign the edge data into known buffers
+-	     */
+-	    neon_quadword_copy (glyph_line + copy_offset, mask_line, width >> 4, width & 0xF);
+-
+-	    /* Uncached framebuffer access is really, really slow
+-	     * if we do it piecemeal. It should be much faster if we
+-	     * grab it all at once. One scanline should easily fit in
+-	     * L1 cache, so this should not waste RAM bandwidth.
+-	     */
+-	    neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail);
+-
+-	    /* Apply the actual filter */
+-	    solid_over_565_8_pix_neon (
+-		src, scan_line + kernel_offset,
+-		glyph_line + kernel_offset, 8 * sizeof(*dst_line),
+-		8, kernel_count);
+-
+-	    /* Copy the modified scanline back */
+-	    neon_quadword_copy (dst_line, scan_line + copy_offset,
+-				width >> 3, (width & 7) * 2);
+-	}
+-    }
+-}
+-#endif
+-
+-#ifdef USE_GCC_INLINE_ASM
+-
+-static inline void
+-plain_over_565_8_pix_neon (uint32_t  colour,
+-			   uint16_t *dest,
+-			   uint32_t  dest_stride,     /* bytes, not elements */
+-			   uint32_t  count            /* 8-pixel groups */)
+-{
+-    /* Inner loop for plain translucent rects
+-     * (solid colour without alpha mask)
+-     */
+-    asm volatile (
+-        "	vld4.8   {d20[], d21[], d22[], d23[]}, [%[colour]]  @ solid colour load/splat \n"
+-        "	vmull.u8  q12, d23, d22              @ premultiply alpha red   \n"
+-        "	vmull.u8  q13, d23, d21              @ premultiply alpha green \n"
+-        "	vmull.u8  q14, d23, d20              @ premultiply alpha blue  \n"
+-        "	vmvn      d18, d23                   @ inverse alpha for background \n"
+-        "0:	@ loop\n"
+-        "	vld1.16   {d0, d1}, [%[dest]]         @ load first pixels from framebuffer	\n"
+-        "	vshrn.u16 d2, q0, #8                 @ unpack red from framebuffer pixels	\n"
+-        "	vshrn.u16 d4, q0, #3                 @ unpack green				\n"
+-        "	vsli.u16  q3, q0, #5                 @ duplicate framebuffer blue bits		\n"
+-        "	vsri.u8   d2, d2, #5                 @ duplicate red bits (extend 5 to 8)	\n"
+-        "	vsri.u8   d4, d4, #6                 @ duplicate green bits (extend 6 to 8)	\n"
+-        "	vshrn.u16 d6, q3, #2                 @ unpack extended blue (truncate 10 to 8)	\n"
+-        "	vmov      q0, q12                    @ retrieve foreground red   \n"
+-        "	vmlal.u8  q0, d2, d18                @ blend red - my kingdom for a four-operand MLA \n"
+-        "	vmov      q1, q13                    @ retrieve foreground green \n"
+-        "	vmlal.u8  q1, d4, d18                @ blend green               \n"
+-        "	vmov      q2, q14                    @ retrieve foreground blue  \n"
+-        "	vmlal.u8  q2, d6, d18                @ blend blue                \n"
+-        "	subs      %[count], %[count], #1     @ decrement/test loop counter		\n"
+-        "	vsri.16   q0, q1, #5                 @ pack green behind red			\n"
+-        "	vsri.16   q0, q2, #11                @ pack blue into pixels			\n"
+-        "	vst1.16   {d0, d1}, [%[dest]]         @ store composited pixels			\n"
+-        "	add %[dest], %[dest], %[dest_stride]  @ advance framebuffer pointer		\n"
+-        "	bne 0b                               @ next please				\n"
+-
+-        /* Clobbered registers marked as input/outputs */
+-	: [dest] "+r" (dest), [count] "+r" (count)
+-
+-	  /* Inputs */
+-	: [dest_stride] "r" (dest_stride), [colour] "r" (&colour)
+-
+-	  /* Clobbers, including the inputs we modify, and
+-	   * potentially lots of memory
+-	   */
+-	: "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d18", "d19",
+-	  "d20", "d21", "d22", "d23", "d24", "d25", "d26", "d27", "d28", "d29",
+-	  "cc", "memory"
+-        );
+-}
+-
+-static void
+-neon_composite_over_n_0565 (pixman_implementation_t * impl,
+-                            pixman_op_t               op,
+-                            pixman_image_t *          src_image,
+-                            pixman_image_t *          mask_image,
+-                            pixman_image_t *          dst_image,
+-                            int32_t                   src_x,
+-                            int32_t                   src_y,
+-                            int32_t                   mask_x,
+-                            int32_t                   mask_y,
+-                            int32_t                   dest_x,
+-                            int32_t                   dest_y,
+-                            int32_t                   width,
+-                            int32_t                   height)
+-{
+-    uint32_t src, srca;
+-    uint16_t    *dst_line, *aligned_line;
+-    uint32_t dst_stride;
+-    uint32_t kernel_count, copy_count, copy_tail;
+-    uint8_t kernel_offset, copy_offset;
+-
+-    src = _pixman_image_get_solid (src_image, dst_image->bits.format);
+-
+-    /* bail out if fully transparent */
+-    srca = src >> 24;
+-    if (src == 0)
+-	return;
+-    
+-    if (width == 0 || height == 0)
+-	return;
+-
+-    if (width > NEON_SCANLINE_BUFFER_PIXELS)
+-    {
+-	/* split the blit, so we can use a fixed-size scanline buffer *
+-	 * TODO: there must be a more elegant way of doing this.
+-	 */
+-	int x;
+-	
+-	for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS)
+-	{
+-	    neon_composite_over_n_0565 (
+-		impl, op,
+-		src_image, mask_image, dst_image,
+-		src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y,
+-		(x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height);
+-	}
+-	return;
+-    }
+-
+-    PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1);
+-
+-    /* keep within minimum number of aligned quadwords on width
+-     * while also keeping the minimum number of columns to process
+-     */
+-    {
+-	unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF;
+-	unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF;
+-	unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF;
+-
+-	/* the fast copy should be quadword aligned */
+-	copy_offset = dst_line - ((uint16_t*) aligned_left);
+-	aligned_line = dst_line - copy_offset;
+-	copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4);
+-	copy_tail = 0;
+-
+-	if (aligned_right - aligned_left > ceiling_length)
+-	{
+-	    /* unaligned routine is tightest */
+-	    kernel_count = (uint32_t) (ceiling_length >> 4);
+-	    kernel_offset = copy_offset;
+-	}
+-	else
+-	{
+-	    /* aligned routine is equally tight, so it is safer to align */
+-	    kernel_count = copy_count;
+-	    kernel_offset = 0;
+-	}
+-
+-	/* We should avoid reading beyond scanline ends for safety */
+-	if (aligned_line < (dst_line - dest_x) ||
+-	    (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width))
+-	{
+-	    /* switch to precise read */
+-	    copy_offset = kernel_offset = 0;
+-	    aligned_line = dst_line;
+-	    kernel_count = (uint32_t) (ceiling_length >> 4);
+-	    copy_count = (width * sizeof(*dst_line)) >> 4;
+-	    copy_tail = (width * sizeof(*dst_line)) & 0xF;
+-	}
+-    }
+-
+-    {
+-	uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8];  /* deliberately not initialised */
+-
+-	/* row-major order */
+-	/* left edge, middle block, right edge */
+-	for ( ; height--; aligned_line += dst_stride, dst_line += dst_stride)
+-	{
+-	    /* Uncached framebuffer access is really, really slow if we do it piecemeal.
+-	     * It should be much faster if we grab it all at once.
+-	     * One scanline should easily fit in L1 cache, so this should
+-	     * not waste RAM bandwidth.
+-	     */
+-	    neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail);
+-
+-	    /* Apply the actual filter */
+-	    plain_over_565_8_pix_neon (
+-		src, scan_line + kernel_offset, 8 * sizeof(*dst_line), kernel_count);
+-
+-	    /* Copy the modified scanline back */
+-	    neon_quadword_copy (
+-		dst_line, scan_line + copy_offset, width >> 3, (width & 7) * 2);
+-	}
+-    }
+-}
+-
+-static inline void
+-ARGB8_over_565_8_pix_neon (uint32_t *src,
+-                           uint16_t *dest,
+-                           uint32_t  src_stride,     /* bytes, not elements */
+-                           uint32_t  count           /* 8-pixel groups */)
+-{
+-    asm volatile (
+-        "0:	@ loop\n"
+-        "	pld   [%[src], %[src_stride]]         @ preload from next scanline	\n"
+-        "	vld1.16   {d0, d1}, [%[dest]]         @ load pixels from framebuffer	\n"
+-        "	vld4.8   {d20, d21, d22, d23},[%[src]]! @ load source image pixels		\n"
+-        "	vsli.u16  q3, q0, #5                 @ duplicate framebuffer blue bits		\n"
+-        "	vshrn.u16 d2, q0, #8                 @ unpack red from framebuffer pixels	\n"
+-        "	vshrn.u16 d4, q0, #3                 @ unpack green				\n"
+-        "	vmvn      d18, d23                   @ we need the inverse alpha for the background	\n"
+-        "	vsri.u8   d2, d2, #5                 @ duplicate red bits (extend 5 to 8)	\n"
+-        "	vshrn.u16 d6, q3, #2                 @ unpack extended blue (truncate 10 to 8)	\n"
+-        "	vsri.u8   d4, d4, #6                 @ duplicate green bits (extend 6 to 8)	\n"
+-        "	vmull.u8  q1, d2, d18                @ apply inverse alpha to background red...	\n"
+-        "	vmull.u8  q2, d4, d18                @ ...green...				\n"
+-        "	vmull.u8  q3, d6, d18                @ ...blue					\n"
+-        "	subs      %[count], %[count], #1     @ decrement/test loop counter		\n"
+-        "	vmlal.u8  q1, d23, d22               @ add blended foreground red...		\n"
+-        "	vmlal.u8  q2, d23, d21               @ ...green...				\n"
+-        "	vmlal.u8  q3, d23, d20               @ ...blue					\n"
+-        "	vsri.16   q1, q2, #5                 @ pack green behind red			\n"
+-        "	vsri.16   q1, q3, #11                @ pack blue into pixels			\n"
+-        "	vst1.16   {d2, d3}, [%[dest]]!        @ store composited pixels			\n"
+-        "	bne 0b                               @ next please				\n"
+-
+-        /* Clobbered registers marked as input/outputs */
+-	: [dest] "+r" (dest), [src] "+r" (src), [count] "+r" (count)
+-
+-	  /* Inputs */
+-	: [src_stride] "r" (src_stride)
+-
+-	  /* Clobbers, including the inputs we modify, and potentially lots of memory */
+-	: "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d17", "d18", "d20",
+-	  "d21", "d22", "d23", "cc", "memory"
+-        );
+-}
+-
+-static void
+-neon_composite_over_8888_0565 (pixman_implementation_t * impl,
+-                               pixman_op_t               op,
+-                               pixman_image_t *          src_image,
+-                               pixman_image_t *          mask_image,
+-                               pixman_image_t *          dst_image,
+-                               int32_t                   src_x,
+-                               int32_t                   src_y,
+-                               int32_t                   mask_x,
+-                               int32_t                   mask_y,
+-                               int32_t                   dest_x,
+-                               int32_t                   dest_y,
+-                               int32_t                   width,
+-                               int32_t                   height)
+-{
+-    uint32_t    *src_line;
+-    uint16_t    *dst_line, *aligned_line;
+-    uint32_t dst_stride, src_stride;
+-    uint32_t kernel_count, copy_count, copy_tail;
+-    uint8_t kernel_offset, copy_offset;
+-
+-    /* we assume mask is opaque 
+-     * so the only alpha to deal with is embedded in src
+-     */
+-    if (width > NEON_SCANLINE_BUFFER_PIXELS)
+-    {
+-	/* split the blit, so we can use a fixed-size scanline buffer */
+-	int x;
+-	for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS)
+-	{
+-	    neon_composite_over_8888_0565 (
+-		impl, op,
+-		src_image, mask_image, dst_image,
+-		src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y,
+-		(x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height);
+-	}
+-	return;
+-    }
+-
+-    PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1);
+-    PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, src_stride, src_line, 1);
+-
+-    /* keep within minimum number of aligned quadwords on width
+-     * while also keeping the minimum number of columns to process
+-     */
+-    {
+-	unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF;
+-	unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF;
+-	unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF;
+-
+-	/* the fast copy should be quadword aligned */
+-	copy_offset = dst_line - ((uint16_t*) aligned_left);
+-	aligned_line = dst_line - copy_offset;
+-	copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4);
+-	copy_tail = 0;
+-
+-	if (aligned_right - aligned_left > ceiling_length)
+-	{
+-	    /* unaligned routine is tightest */
+-	    kernel_count = (uint32_t) (ceiling_length >> 4);
+-	    kernel_offset = copy_offset;
+-	}
+-	else
+-	{
+-	    /* aligned routine is equally tight, so it is safer to align */
+-	    kernel_count = copy_count;
+-	    kernel_offset = 0;
+-	}
+-
+-	/* We should avoid reading beyond scanline ends for safety */
+-	if (aligned_line < (dst_line - dest_x) ||
+-	    (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width))
+-	{
+-	    /* switch to precise read */
+-	    copy_offset = kernel_offset = 0;
+-	    aligned_line = dst_line;
+-	    kernel_count = (uint32_t) (ceiling_length >> 4);
+-	    copy_count = (width * sizeof(*dst_line)) >> 4;
+-	    copy_tail = (width * sizeof(*dst_line)) & 0xF;
+-	}
+-    }
+-
+-    /* Preload the first input scanline */
+-    {
+-	uint8_t *src_ptr = (uint8_t*) src_line;
+-	uint32_t count = (width + 15) / 16;
+-
+-#ifdef USE_GCC_INLINE_ASM
+-	asm volatile (
+-	    "0: @ loop						\n"
+-	    "	subs    %[count], %[count], #1			\n"
+-	    "	pld     [%[src]]				\n"
+-	    "	add     %[src], %[src], #64			\n"
+-	    "	bgt 0b						\n"
+-
+-	    /* Clobbered input registers marked as input/outputs */
+-	    : [src] "+r" (src_ptr), [count] "+r" (count)
+-	    :     /* no unclobbered inputs */
+-	    : "cc"
+-	    );
+-#else
+-	do
+-	{
+-	    __pld (src_ptr);
+-	    src_ptr += 64;
+-	}
+-	while (--count);
+-#endif
+-    }
+-
+-    {
+-	uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; /* deliberately not initialised */
+-
+-	/* row-major order */
+-	/* left edge, middle block, right edge */
+-	for ( ; height--; src_line += src_stride, aligned_line += dst_stride)
+-	{
+-	    /* Uncached framebuffer access is really, really slow if we do
+-	     * it piecemeal. It should be much faster if we grab it all at
+-	     * once. One scanline should easily fit in L1 cache, so this
+-	     * should not waste RAM bandwidth.
+-	     */
+-	    neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail);
+-
+-	    /* Apply the actual filter */
+-	    ARGB8_over_565_8_pix_neon (
+-		src_line, scan_line + kernel_offset,
+-		src_stride * sizeof(*src_line), kernel_count);
+-
+-	    /* Copy the modified scanline back */
+-	    neon_quadword_copy (dst_line,
+-				scan_line + copy_offset,
+-				width >> 3, (width & 7) * 2);
+-	}
+-    }
+-}
+-
+-#endif  /* USE_GCC_INLINE_ASM */
+-
+ static const pixman_fast_path_t arm_neon_fast_path_array[] =
+ {
+     { PIXMAN_OP_ADD,  PIXMAN_solid,    PIXMAN_a8,       PIXMAN_a8,       neon_composite_add_8888_8_8,     0 },
+@@ -2612,12 +1908,6 @@ static const pixman_fast_path_t arm_neon_fast_path_array[] =
+ #ifdef USE_GCC_INLINE_ASM
+     { PIXMAN_OP_SRC,  PIXMAN_r5g6b5,   PIXMAN_null,     PIXMAN_r5g6b5,   neon_composite_src_16_16,        0 },
+     { PIXMAN_OP_SRC,  PIXMAN_b5g6r5,   PIXMAN_null,     PIXMAN_b5g6r5,   neon_composite_src_16_16,        0 },
+-#if 0 /* this code has some bugs */
+-    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_null,     PIXMAN_r5g6b5,   neon_composite_over_n_0565,      0 },
+-    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_null,     PIXMAN_b5g6r5,   neon_composite_over_n_0565,      0 },
+-    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null,     PIXMAN_r5g6b5,   neon_composite_over_8888_0565,   0 },
+-    { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null,     PIXMAN_b5g6r5,   neon_composite_over_8888_0565,   0 },
+-#endif
+ #endif
+     { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null,     PIXMAN_a8r8g8b8, neon_composite_over_8888_8888,   0 },
+     { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null,     PIXMAN_x8r8g8b8, neon_composite_over_8888_8888,   0 },
+@@ -2668,79 +1958,6 @@ arm_neon_composite (pixman_implementation_t *imp,
+ }
+ 
+ static pixman_bool_t
+-pixman_blt_neon (void *src_bits,
+-                 void *dst_bits,
+-                 int   src_stride,
+-                 int   dst_stride,
+-                 int   src_bpp,
+-                 int   dst_bpp,
+-                 int   src_x,
+-                 int   src_y,
+-                 int   dst_x,
+-                 int   dst_y,
+-                 int   width,
+-                 int   height)
+-{
+-    if (!width || !height)
+-	return TRUE;
+-
+-    /* accelerate only straight copies involving complete bytes */
+-    if (src_bpp != dst_bpp || (src_bpp & 7))
+-	return FALSE;
+-
+-    {
+-	uint32_t bytes_per_pixel = src_bpp >> 3;
+-	uint32_t byte_width = width * bytes_per_pixel;
+-	/* parameter is in words for some reason */
+-	int32_t src_stride_bytes = src_stride * 4;
+-	int32_t dst_stride_bytes = dst_stride * 4;
+-	uint8_t *src_bytes = ((uint8_t*) src_bits) +
+-	    src_y * src_stride_bytes + src_x * bytes_per_pixel;
+-	uint8_t *dst_bytes = ((uint8_t*) dst_bits) +
+-	    dst_y * dst_stride_bytes + dst_x * bytes_per_pixel;
+-	uint32_t quadword_count = byte_width / 16;
+-	uint32_t offset         = byte_width % 16;
+-
+-	while (height--)
+-	{
+-	    neon_quadword_copy (dst_bytes, src_bytes, quadword_count, offset);
+-	    src_bytes += src_stride_bytes;
+-	    dst_bytes += dst_stride_bytes;
+-	}
+-    }
+-
+-    return TRUE;
+-}
+-
+-static pixman_bool_t
+-arm_neon_blt (pixman_implementation_t *imp,
+-              uint32_t *               src_bits,
+-              uint32_t *               dst_bits,
+-              int                      src_stride,
+-              int                      dst_stride,
+-              int                      src_bpp,
+-              int                      dst_bpp,
+-              int                      src_x,
+-              int                      src_y,
+-              int                      dst_x,
+-              int                      dst_y,
+-              int                      width,
+-              int                      height)
+-{
+-    if (pixman_blt_neon (
+-            src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp,
+-            src_x, src_y, dst_x, dst_y, width, height))
+-    {
+-	return TRUE;
+-    }
+-
+-    return _pixman_implementation_blt (
+-               imp->delegate,
+-               src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp,
+-               src_x, src_y, dst_x, dst_y, width, height);
+-}
+-
+-static pixman_bool_t
+ arm_neon_fill (pixman_implementation_t *imp,
+                uint32_t *               bits,
+                int                      stride,
+@@ -2765,9 +1982,6 @@ _pixman_implementation_create_arm_neon (void)
+     pixman_implementation_t *imp = _pixman_implementation_create (simd);
+ 
+     imp->composite = arm_neon_composite;
+-#if 0 /* this code has some bugs */
+-    imp->blt = arm_neon_blt;
+-#endif
+     imp->fill = arm_neon_fill;
+ 
+     return imp;
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/src-8888-0565.patch b/recipes/obsolete/xorg/xorg-lib/pixman/src-8888-0565.patch
new file mode 100644
index 0000000..c544225
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman/src-8888-0565.patch
@@ -0,0 +1,324 @@
+From 6494f9ae8820078d0e6109bf8f294156f7a5da4c Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
+Date: Fri, 05 Mar 2010 00:40:34 +0000
+Subject: ARM: added 'armv6_composite_src_8888_0565' fast path
+
+Provides ~3x performance improvement when working with
+data in L1 cache, and ~80% performace improvement when working
+with memory. This fast path is important for 32bpp -> 16bpp
+color format conversion and is commonly used with 16bpp desktop.
+
+Microbenchmark from N800 (ARM11 @ 400MHz), measured in MPix/s:
+
+before:
+
+ src_8888_0565 = L1:  21.54 M: 15.62
+
+after (armv4):
+
+ src_8888_0565 = L1:  45.26 M: 23.29
+
+after (armv6):
+
+ src_8888_0565 = L1:  60.62 M: 28.37
+---
+diff --git a/pixman/pixman-arm-simd.c b/pixman/pixman-arm-simd.c
+index c375c01..69243c1 100644
+--- a/pixman/pixman-arm-simd.c
++++ b/pixman/pixman-arm-simd.c
+@@ -604,6 +604,282 @@ armv6_composite_over_n_8_0565 (pixman_implementation_t * impl,
+ 	dst_stride - width, mask_stride - width, height);
+ }
+ 
++static inline void
++armv4_composite_src_8888_0565_asm (
++    uint16_t *dst, uint32_t *src, int w, int dst_stride,
++    int src_stride, int h)
++{
++    uint32_t a, x, y, c1F001F = 0x1F001F, cFFFF = 0xFFFF;
++    int backup_w = w;
++    while (h--)
++    {
++        w = backup_w;
++        if (w > 0 && (uintptr_t)dst & 2)
++        {
++            x = *src++;
++
++            a = (x >> 3) & c1F001F;
++            x &= 0xFC00;
++            a |= a >> 5;
++            a |= x >> 5;
++
++            *dst++ = a;
++            w--;
++        }
++
++        asm volatile(
++            "subs  %[w], %[w], #2\n"
++            "blt   2f\n"
++        "1:\n"
++            "ldr   %[x], [%[src]], #4\n"
++            "ldr   %[y], [%[src]], #4\n"
++            "subs  %[w], %[w], #2\n"
++
++            "and   %[a], %[c1F001F], %[x], lsr #3\n"
++            "and   %[x], %[x], #0xFC00\n\n"
++            "orr   %[a], %[a], %[a], lsr #5\n"
++            "orr   %[x], %[a], %[x], lsr #5\n"
++
++            "and   %[a], %[c1F001F], %[y], lsr #3\n"
++            "and   %[y], %[y], #0xFC00\n\n"
++            "orr   %[a], %[a], %[a], lsr #5\n"
++            "orr   %[y], %[a], %[y], lsr #5\n"
++            /*
++             * Writing single 32-bit value is much faster than two
++             * separate 16-bit values for older CPUs without (efficient)
++             * write combining, even though it costs an extra instruction.
++             */
++            "and   %[x], %[x], %[cFFFF]\n"
++            "orr   %[x], %[x], %[y], lsl #16\n"
++            "str   %[x], [%[dst]], #4\n"
++            "bge   1b\n"
++        "2:\n"
++        : [c1F001F] "+&r" (c1F001F), [cFFFF] "+&r" (cFFFF),
++          [src] "+&r" (src), [dst] "+&r" (dst), [a] "=&r" (a),
++          [x] "=&r" (x), [y] "=&r" (y), [w] "+&r" (w)
++        );
++
++        if (w & 1)
++        {
++            x = *src++;
++
++            a = (x >> 3) & c1F001F;
++            x = x & 0xFC00;
++            a |= a >> 5;
++            a |= x >> 5;
++
++            *dst++ = a;
++        }
++
++        src += src_stride - backup_w;
++        dst += dst_stride - backup_w;
++    }
++}
++
++/*
++ * Conversion x8r8g8b8 -> r5g6b5
++ *
++ * Note: 'w' must be >= 7 here
++ */
++static void __attribute__((naked))
++armv6_composite_src_8888_0565_asm (
++    uint16_t *dst, uint32_t *src, int w, int dst_stride,
++    int src_stride, int h)
++{
++    asm volatile(
++        /* define supplementary macros */
++        ".macro cvt8888to565 PIX\n"
++            "and   A, C1F001F, \\PIX, lsr #3\n"
++            "and   \\PIX, \\PIX, #0xFC00\n\n"
++            "orr   A, A, A, lsr #5\n"
++            "orr   \\PIX, A, \\PIX, lsr #5\n"
++        ".endm\n"
++
++        ".macro combine_pixels_pair PIX1, PIX2\n"
++            /* Note: assume little endian byte order */
++            "pkhbt \\PIX1, \\PIX1, \\PIX2, lsl #16\n"
++        ".endm\n"
++
++        /* function entry, save all registers (10 words) to stack */
++        "stmdb   sp!, {r4-r11, ip, lr}\n"
++
++        /* define some aliases */
++        "DST     .req  r0\n"
++        "SRC     .req  r1\n"
++        "W       .req  r2\n"
++        "H       .req  r3\n"
++
++        "TMP1    .req  r4\n"
++        "TMP2    .req  r5\n"
++        "TMP3    .req  r6\n"
++        "TMP4    .req  r7\n"
++        "TMP5    .req  r8\n"
++        "TMP6    .req  r9\n"
++        "TMP7    .req  r10\n"
++        "TMP8    .req  r11\n"
++
++        "C1F001F .req  ip\n"
++        "A       .req  lr\n"
++
++        "ldr     TMP1, [sp, #(10*4+0)]\n" /* load src_stride */
++        "ldr     C1F001F, =0x1F001F\n"
++        "sub     r3, r3, W\n"
++        "str     r3, [sp, #(10*4+0)]\n" /* store (dst_stride-w) */
++        "ldr     r3, [sp, #(10*4+4)]\n" /* load h */
++        "sub     TMP1, TMP1, W\n"
++        "str     TMP1, [sp, #(10*4+4)]\n" /* store (src_stride-w) */
++
++        "str     W, [sp, #(8*4)]\n" /* saved ip = W */
++
++    "0:\n"
++        "subs    H, H, #1\n"
++        "blt     6f\n"
++    "1:\n"
++        /* align DST at 4 byte boundary */
++        "tst     DST, #2\n"
++        "beq     2f\n"
++        "ldr     TMP1, [SRC], #4\n"
++        "sub     W, W, #1\n"
++        "cvt8888to565 TMP1\n"
++        "strh    TMP1, [DST], #2\n"
++    "2:"
++        /* align DST at 8 byte boundary */
++        "tst     DST, #4\n"
++        "beq     2f\n"
++        "ldmia   SRC!, {TMP1, TMP2}\n"
++        "sub     W, W, #2\n"
++        "cvt8888to565 TMP1\n"
++        "cvt8888to565 TMP2\n"
++        "combine_pixels_pair TMP1, TMP2\n"
++        "str     TMP1, [DST], #4\n"
++    "2:"
++        /* align DST at 16 byte boundary */
++        "tst     DST, #8\n"
++        "beq     2f\n"
++        "ldmia   SRC!, {TMP1, TMP2, TMP3, TMP4}\n"
++        "sub     W, W, #4\n"
++        "cvt8888to565 TMP1\n"
++        "cvt8888to565 TMP2\n"
++        "cvt8888to565 TMP3\n"
++        "cvt8888to565 TMP4\n"
++        "combine_pixels_pair TMP1, TMP2\n"
++        "combine_pixels_pair TMP3, TMP4\n"
++        "stmia DST!, {TMP1, TMP3}\n"
++    "2:"
++        /* inner loop, process 8 pixels per iteration */
++        "subs    W, W, #8\n"
++        "blt     4f\n"
++    "3:\n"
++        "ldmia   SRC!, {TMP1, TMP2, TMP3, TMP4, TMP5, TMP6, TMP7, TMP8}\n"
++        "subs    W, W, #8\n"
++        "cvt8888to565 TMP1\n"
++        "cvt8888to565 TMP2\n"
++        "cvt8888to565 TMP3\n"
++        "cvt8888to565 TMP4\n"
++        "cvt8888to565 TMP5\n"
++        "cvt8888to565 TMP6\n"
++        "cvt8888to565 TMP7\n"
++        "cvt8888to565 TMP8\n"
++        "combine_pixels_pair TMP1, TMP2\n"
++        "combine_pixels_pair TMP3, TMP4\n"
++        "combine_pixels_pair TMP5, TMP6\n"
++        "combine_pixels_pair TMP7, TMP8\n"
++        "stmia   DST!, {TMP1, TMP3, TMP5, TMP7}\n"
++        "bge     3b\n"
++    "4:\n"
++
++        /* process the remaining pixels */
++        "tst     W, #4\n"
++        "beq     4f\n"
++        "ldmia   SRC!, {TMP1, TMP2, TMP3, TMP4}\n"
++        "cvt8888to565 TMP1\n"
++        "cvt8888to565 TMP2\n"
++        "cvt8888to565 TMP3\n"
++        "cvt8888to565 TMP4\n"
++        "combine_pixels_pair TMP1, TMP2\n"
++        "combine_pixels_pair TMP3, TMP4\n"
++        "stmia   DST!, {TMP1, TMP3}\n"
++    "4:\n"
++        "tst     W, #2\n"
++        "beq     4f\n"
++        "ldmia   SRC!, {TMP1, TMP2}\n"
++        "cvt8888to565 TMP1\n"
++        "cvt8888to565 TMP2\n"
++        "combine_pixels_pair TMP1, TMP2\n"
++        "str     TMP1, [DST], #4\n"
++    "4:\n"
++        "tst     W, #1\n"
++        "beq     4f\n"
++        "ldr     TMP1, [SRC], #4\n"
++        "cvt8888to565 TMP1\n"
++        "strh    TMP1, [DST], #2\n"
++    "4:\n"
++        "ldr     TMP1, [sp, #(10*4+0)]\n" /* (dst_stride-w) */
++        "ldr     TMP2, [sp, #(10*4+4)]\n" /* (src_stride-w) */
++        "ldr     W, [sp, #(8*4)]\n"
++        "subs    H, H, #1\n"
++        "add     DST, DST, TMP1, lsl #1\n"
++        "add     SRC, SRC, TMP2, lsl #2\n"
++        "bge     1b\n"
++    "6:\n"
++        /* restore all registers and return */
++        "ldmia   sp!, {r4-r11, ip, pc}\n"
++        ".ltorg\n"
++
++        ".unreq   DST\n"
++        ".unreq   SRC\n"
++        ".unreq   W\n"
++        ".unreq   H\n"
++
++        ".unreq   TMP1\n"
++        ".unreq   TMP2\n"
++        ".unreq   TMP3\n"
++        ".unreq   TMP4\n"
++        ".unreq   TMP5\n"
++        ".unreq   TMP6\n"
++        ".unreq   TMP7\n"
++        ".unreq   TMP8\n"
++
++        ".unreq   C1F001F\n"
++        ".unreq   A\n"
++
++        ".purgem  cvt8888to565\n"
++        ".purgem  combine_pixels_pair\n"
++    );
++}
++
++static void
++armv6_composite_src_8888_0565 (pixman_implementation_t * impl,
++			       pixman_op_t               op,
++			       pixman_image_t *          src_image,
++			       pixman_image_t *          mask_image,
++			       pixman_image_t *          dst_image,
++			       int32_t                   src_x,
++			       int32_t                   src_y,
++			       int32_t                   mask_x,
++			       int32_t                   mask_y,
++			       int32_t                   dest_x,
++			       int32_t                   dest_y,
++			       int32_t                   width,
++			       int32_t                   height)
++{
++    uint32_t *src;
++    uint16_t *dst;
++    int src_stride, dst_stride;
++
++    PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t,
++			   dst_stride, dst, 1);
++    PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t,
++			   src_stride, src, 1);
++
++    if (width < 7)
++	armv4_composite_src_8888_0565_asm (dst, src, width,
++					   dst_stride, src_stride, height);
++    else
++	armv6_composite_src_8888_0565_asm (dst, src, width,
++					   dst_stride, src_stride, height);
++}
++
+ #endif
+ 
+ static const pixman_fast_path_t arm_simd_fast_paths[] =
+@@ -624,6 +900,10 @@ static const pixman_fast_path_t arm_simd_fast_paths[] =
+ #if defined(__ARM_EABI__) && defined(__linux__)
+     PIXMAN_STD_FAST_PATH (OVER, solid, a8, r5g6b5, armv6_composite_over_n_8_0565),
+     PIXMAN_STD_FAST_PATH (OVER, solid, a8, b5g6r5, armv6_composite_over_n_8_0565),
++    PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, r5g6b5, armv6_composite_src_8888_0565),
++    PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, r5g6b5, armv6_composite_src_8888_0565),
++    PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, b5g6r5, armv6_composite_src_8888_0565),
++    PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, b5g6r5, armv6_composite_src_8888_0565),
+ #endif
+     { PIXMAN_OP_NONE },
+ };
+--
+cgit v0.8.3-6-g21f6
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/tls.patch b/recipes/obsolete/xorg/xorg-lib/pixman/tls.patch
new file mode 100644
index 0000000..316caed
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman/tls.patch
@@ -0,0 +1,59 @@
+From 714559dccda3165a72f0a9935c1edc3aef535f30 Mon Sep 17 00:00:00 2001
+From: Søren Sandmann Pedersen <ssp at redhat.com>
+Date: Wed, 07 Apr 2010 05:44:12 +0000
+Subject: Fixes for pthread thread local storage.
+
+The tls_name_key variable is passed to tls_name_get(), and the first
+time this happens it isn't initialized. tls_name_get() then passes it
+on to tls_name_alloc() which passes it on to pthread_setspecific()
+leading to undefined behavior.
+
+None of this is actually necessary at all because there is only one
+such variable per thread local variable, so it doesn't need to passed
+as a parameter at all.
+
+All of this was pointed out by Tor Lillqvist on the cairo mailing
+list.
+---
+diff --git a/pixman/pixman-compiler.h b/pixman/pixman-compiler.h
+index cdac0d8..531c8c9 100644
+--- a/pixman/pixman-compiler.h
++++ b/pixman/pixman-compiler.h
+@@ -99,16 +99,16 @@
+     }									\
+ 									\
+     static type *							\
+-    tls_ ## name ## _alloc (key)					\
++    tls_ ## name ## _alloc (void)					\
+     {									\
+ 	type *value = calloc (1, sizeof (type));			\
+ 	if (value)							\
+-	    pthread_setspecific (key, value);				\
++	    pthread_setspecific (tls_ ## name ## _key, value);		\
+ 	return value;							\
+     }									\
+ 									\
+     static force_inline type *						\
+-    tls_ ## name ## _get (key)						\
++    tls_ ## name ## _get (void)						\
+     {									\
+ 	type *value = NULL;						\
+ 	if (pthread_once (&tls_ ## name ## _once_control,		\
+@@ -116,13 +116,13 @@
+ 	{								\
+ 	    value = pthread_getspecific (tls_ ## name ## _key);		\
+ 	    if (!value)							\
+-		value = tls_ ## name ## _alloc (key);			\
++		value = tls_ ## name ## _alloc ();			\
+ 	}								\
+ 	return value;							\
+     }
+ 
+ #   define PIXMAN_GET_THREAD_LOCAL(name)				\
+-    tls_ ## name ## _get (tls_ ## name ## _key)
++    tls_ ## name ## _get ()
+ 
+ #else
+ 
+--
+cgit v0.8.3-6-g21f6
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.10.0.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.10.0.bb
new file mode 100644
index 0000000..8690818
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.10.0.bb
@@ -0,0 +1,5 @@
+require pixman.inc
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "41804ac38025102dcc9891dfd4a3d105"
+SRC_URI[archive.sha256sum] = "48625f6b5ce130672942503c683d306d957ee40f59f8e59be6ca30a245ad47d0"
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.11.4.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.11.4.bb
new file mode 100644
index 0000000..b058104
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.11.4.bb
@@ -0,0 +1,7 @@
+require pixman.inc
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "8c8afc259af61d42aa9b3d8ec5a9a03b"
+SRC_URI[archive.sha256sum] = "d034f4afb4329c38e8789a5a7a384194c7402094b4c2b7600d2d86d8589e8571"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.11.8.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.11.8.bb
new file mode 100644
index 0000000..d7c6717
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.11.8.bb
@@ -0,0 +1,9 @@
+require pixman.inc
+PR = "${INC_PR}.0"
+
+SRC_URI += " \
+           file://pixman-arm.patch \
+           file://pixman-x888-565.patch \
+          "
+SRC_URI[archive.md5sum] = "7b5db768c51337b5e5e954fc9c961cd3"
+SRC_URI[archive.sha256sum] = "720db5ef6ed0e744b9bac5360ade9a7c024f9fb3fab05c83a90ee28b08e66e01"
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.15.18.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.15.18.bb
new file mode 100644
index 0000000..4811a01
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.15.18.bb
@@ -0,0 +1,7 @@
+require pixman.inc
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "9b60fe7623621b546b76777b8b7d2490"
+SRC_URI[archive.sha256sum] = "3a5003cf6c7d5b03ed5977c108ee11410cfd7849eea370eb4feae98f2822c795"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.15.6.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.15.6.bb
new file mode 100644
index 0000000..a09de4e
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.15.6.bb
@@ -0,0 +1,7 @@
+require pixman.inc
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "fe922698df46b21d7e19f28ded4ca100"
+SRC_URI[archive.sha256sum] = "3438437c131c9847b34106225a728c11e522776ac454bb8740a9bc7aea409f22"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.17.12.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.17.12.bb
new file mode 100644
index 0000000..b476aaa
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.17.12.bb
@@ -0,0 +1,24 @@
+require pixman.inc
+PR = "${INC_PR}.0"
+
+SRC_URI += "\
+           file://0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch \
+           file://0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch \
+           file://0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch \
+           file://0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch \
+           file://0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch \
+           file://0006-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch \
+           file://over-n-8-0565.patch \
+           file://src-8888-0565.patch \
+"
+SRC_URI[archive.md5sum] = "331415d7a110145cf27aa00e11d0a683"
+SRC_URI[archive.sha256sum] = "8cce103af1b4200a13bedca5b763f74c9bc99a55985ab44ca92ba532dac6b57f"
+
+NEON = " --disable-arm-neon "
+NEON_armv7a = " "
+
+EXTRA_OECONF = "${NEON} --disable-gtk"
+
+DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_angstrom = "2"
+DEFAULT_PREFERENCE_shr = "2"
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.17.8.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.17.8.bb
new file mode 100644
index 0000000..55c70c8
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.17.8.bb
@@ -0,0 +1,23 @@
+require pixman.inc
+PR = "${INC_PR}.0"
+
+SRC_URI += " \
+           file://0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch \
+           file://0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch \
+           file://0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch \
+           file://0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch \
+           file://1-composite.patch \
+           file://2-composite.patch \
+           file://3-composite.patch \
+          "
+SRC_URI[archive.md5sum] = "a7deb2ff6b286b676d67aa6ae91317ae"
+SRC_URI[archive.sha256sum] = "ea24e9003455a0881bd43bf7e4169f2b34c90c8521405103e3490553876a81b4"
+
+NEON = " --disable-arm-neon "
+NEON_armv7a = " "
+
+EXTRA_OECONF = "${NEON} --disable-gtk"
+
+DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_angstrom = "2"
+DEFAULT_PREFERENCE_shr = "2"
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.18.0.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.18.0.bb
new file mode 100644
index 0000000..c099b77
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.18.0.bb
@@ -0,0 +1,24 @@
+require pixman.inc
+PR = "${INC_PR}.3"
+
+SRC_URI += "\
+           file://0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch \
+           file://0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch \
+           file://0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch \
+           file://0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch \
+           file://0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch \
+           file://calloc.patch \
+           file://tls.patch \
+           file://565-scanline.patch \
+           file://missing-cache-preload.diff \
+"
+SRC_URI[archive.md5sum] = "a4fb870fc325be258089f1683642e976"
+SRC_URI[archive.sha256sum] = "b305291bba3d9271a4481e5eedf901025ac8ba4ec8f7b76ccafc5094610cd4ff"
+
+NEON = " --disable-arm-neon "
+NEON_armv7a = " "
+
+EXTRA_OECONF = "${NEON} --disable-gtk"
+
+DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_shr = "2"
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.9.4.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.9.4.bb
new file mode 100644
index 0000000..254bf61
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.9.4.bb
@@ -0,0 +1,7 @@
+require xorg-lib-common.inc
+DESCRIPTION = "Library for lowlevel pixel operations"
+DEPENDS = "virtual/libx11"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "c354ab5b0da10227226d3ef604254875"
+SRC_URI[archive.sha256sum] = "261d239e9e3070a0a81e5b3eab92e6236c6295979bdae0a1ded05cbef93f67aa"
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.9.5.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.9.5.bb
new file mode 100644
index 0000000..6259dea
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.9.5.bb
@@ -0,0 +1,8 @@
+require xorg-lib-common.inc
+DESCRIPTION = "Library for lowlevel pixel operations"
+DEPENDS = "virtual/libx11"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://dont-copy-unused-bits-to-alpha-channel.patch"
+SRC_URI[archive.md5sum] = "f9fea77e46ec7a3a16e925e137f146e7"
+SRC_URI[archive.sha256sum] = "a9d4545b5dfc018cdd33fd21bc73c3f1b3c9c207f1bb6843606cc180eb10c6c8"
diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_git.bb b/recipes/obsolete/xorg/xorg-lib/pixman_git.bb
new file mode 100644
index 0000000..12140c1
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/pixman_git.bb
@@ -0,0 +1,27 @@
+require pixman.inc
+PV = "0.17.13"
+PR = "${INC_PR}.2"
+PR_append = "+gitr${SRCPV}"
+
+SRC_URI = "git://anongit.freedesktop.org/pixman;protocol=git;branch=master \
+           file://0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch \
+           file://0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch \
+           file://0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch \
+           file://0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch \
+           file://0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch \
+           file://0006-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch \
+           file://over-n-8-0565.patch \
+           file://src-8888-0565.patch \
+           file://calloc.patch \
+           file://tls.patch \
+"
+
+SRCREV = "69f1ec9a7827aeb522fcae99846237ef0f896e7b"
+S = "${WORKDIR}/git"
+
+NEON = " --disable-arm-neon "
+NEON_armv7a = " "
+
+EXTRA_OECONF = "${NEON} --disable-gtk"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/recipes/obsolete/xorg/xorg-lib/xtrans/fix-missing-includepath.patch b/recipes/obsolete/xorg/xorg-lib/xtrans/fix-missing-includepath.patch
new file mode 100644
index 0000000..043d14f
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/xtrans/fix-missing-includepath.patch
@@ -0,0 +1,13 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- xtrans-X11R7.0-1.0.0/xtrans.pc.in~fix-missing-includepath	2005-07-02 20:00:50.000000000 +0200
++++ xtrans-X11R7.0-1.0.0/xtrans.pc.in	2006-08-11 19:27:58.000000000 +0200
+@@ -6,4 +6,4 @@
+ Name: XTrans
+ Description: Abstract network code for X
+ Version: @PACKAGE_VERSION@
+-Cflags: -I${includedir} -D_BSD_SOURCE @fchown_define@ @sticky_bit_define@
++Cflags: -I${includedir} -I${includedir}/X11/Xtrans -D_BSD_SOURCE @fchown_define@ @sticky_bit_define@
diff --git a/recipes/obsolete/xorg/xorg-lib/xtrans_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/xtrans_1.0.3.bb
new file mode 100644
index 0000000..19a56fa
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/xtrans_1.0.3.bb
@@ -0,0 +1,15 @@
+require xorg-lib-common.inc
+DESCRIPTION = "network API translation layer to insulate X applications and \
+libraries from OS network vageries."
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://fix-missing-includepath.patch"
+SRC_URI[archive.md5sum] = "bb196907ea1e182dcb396eb22f7d2c1a"
+SRC_URI[archive.sha256sum] = "e1a3c4986f16a5fbca611d0547cc7499a1fa47ca2096593644037e2609363085"
+
+FILESPATHPKG .= ":xtrans-${PV}:xtrans"
+
+ALLOW_EMPTY = "1"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes/obsolete/xorg/xorg-lib/xtrans_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/xtrans_1.0.4.bb
new file mode 100644
index 0000000..d19a6c0
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/xtrans_1.0.4.bb
@@ -0,0 +1,15 @@
+require xorg-lib-common.inc
+DESCRIPTION = "network API translation layer to insulate X applications and \
+libraries from OS network vageries."
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://fix-missing-includepath.patch"
+SRC_URI[archive.md5sum] = "8b36cdf08df12be96615e3d550236626"
+SRC_URI[archive.sha256sum] = "765219fa822edeffb0650e93458e4ebf63c23176e58fce06806fb251fbfe7d8c"
+
+FILESPATHPKG .= ":xtrans-${PV}:xtrans"
+
+ALLOW_EMPTY = "1"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes/obsolete/xorg/xorg-lib/xtrans_1.1.bb b/recipes/obsolete/xorg/xorg-lib/xtrans_1.1.bb
new file mode 100644
index 0000000..1f3fcb4
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/xtrans_1.1.bb
@@ -0,0 +1,15 @@
+require xorg-lib-common.inc
+DESCRIPTION = "network API translation layer to insulate X applications and \
+libraries from OS network vageries."
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://fix-missing-includepath.patch"
+SRC_URI[archive.md5sum] = "8546e3a060aefb42c889eaa4b5db33af"
+SRC_URI[archive.sha256sum] = "16bc4646f105efd3d0dd105899ac19035d67acf50950ca8c70cf68772508272d"
+
+FILESPATHPKG .= ":xtrans-${PV}:xtrans"
+
+ALLOW_EMPTY = "1"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.1.bb b/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.1.bb
new file mode 100644
index 0000000..e695e35
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.1.bb
@@ -0,0 +1,15 @@
+require xorg-lib-common.inc
+DESCRIPTION = "network API translation layer to insulate X applications and \
+libraries from OS network vageries."
+RDEPENDS_${PN}-dev = ""
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "96e142331edd498a9364887b2548f1bb"
+SRC_URI[archive.sha256sum] = "9ff21a8d9ea524ca9b7cb6d6b4d522b4cb20b1c35edeb8995a9e9265a0df64bd"
+
+FILESPATHPKG .= ":xtrans-${PV}:xtrans"
+
+ALLOW_EMPTY = "1"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.3.bb b/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.3.bb
new file mode 100644
index 0000000..1f0ec39
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.3.bb
@@ -0,0 +1,15 @@
+require xorg-lib-common.inc
+DESCRIPTION = "network API translation layer to insulate X applications and \
+libraries from OS network vageries."
+RDEPENDS_${PN}-dev = ""
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "f9cf791dfad59cf044e276aab3a71e1d"
+SRC_URI[archive.sha256sum] = "a67a8b09d9530021e2bd4b93136f385e72a8d8e4f2c26a99aeb169bee88facf0"
+
+FILESPATHPKG .= ":xtrans-${PV}:xtrans"
+
+ALLOW_EMPTY = "1"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.bb b/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.bb
new file mode 100644
index 0000000..8a4ddca
--- /dev/null
+++ b/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.bb
@@ -0,0 +1,15 @@
+require xorg-lib-common.inc
+DESCRIPTION = "network API translation layer to insulate X applications and \
+libraries from OS network vageries."
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://fix-missing-includepath.patch"
+SRC_URI[archive.md5sum] = "a91fef8b932b21992af7dfff7b2643f3"
+SRC_URI[archive.sha256sum] = "d6c3cabd5ecd0183a8a9bc6b3471545df8e2c78956b4c4cfd48f0c545a88c9a4"
+
+FILESPATHPKG .= ":xtrans-${PV}:xtrans"
+
+ALLOW_EMPTY = "1"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes/xorg-lib/diet-x11_1.1.1.bb b/recipes/xorg-lib/diet-x11_1.1.1.bb
deleted file mode 100644
index 593ba34..0000000
--- a/recipes/xorg-lib/diet-x11_1.1.1.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require libx11_${PV}.bb
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://X18NCMSstubs.diff \
-            file://fix-disable-xlocale.diff \
-            file://fix-utf8-wrong-define.patch \
-            file://xim.patch \
-            file://xchar2b.patch"
-
-EXTRA_OECONF += "--without-xcb --disable-udc --enable-xcms --disable-xlocale --disable-xkb"
-
-CFLAGS += "-D_GNU_SOURCE"
diff --git a/recipes/xorg-lib/diet-x11_1.1.2.bb b/recipes/xorg-lib/diet-x11_1.1.2.bb
deleted file mode 100644
index f6291a9..0000000
--- a/recipes/xorg-lib/diet-x11_1.1.2.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require libx11_${PV}.bb
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://X18NCMSstubs.diff \
-            file://fix-disable-xlocale.diff \
-            file://fix-utf8-wrong-define.patch"
-
-EXTRA_OECONF += "--without-xcb --disable-udc --disable-xcms --disable-xlocale --disable-xkb"
-
-CFLAGS += "-D_GNU_SOURCE"
diff --git a/recipes/xorg-lib/diet-x11_1.1.3.bb b/recipes/xorg-lib/diet-x11_1.1.3.bb
deleted file mode 100644
index f6291a9..0000000
--- a/recipes/xorg-lib/diet-x11_1.1.3.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require libx11_${PV}.bb
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://X18NCMSstubs.diff \
-            file://fix-disable-xlocale.diff \
-            file://fix-utf8-wrong-define.patch"
-
-EXTRA_OECONF += "--without-xcb --disable-udc --disable-xcms --disable-xlocale --disable-xkb"
-
-CFLAGS += "-D_GNU_SOURCE"
diff --git a/recipes/xorg-lib/diet-x11_1.1.4.bb b/recipes/xorg-lib/diet-x11_1.1.4.bb
deleted file mode 100644
index f6291a9..0000000
--- a/recipes/xorg-lib/diet-x11_1.1.4.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require libx11_${PV}.bb
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://X18NCMSstubs.diff \
-            file://fix-disable-xlocale.diff \
-            file://fix-utf8-wrong-define.patch"
-
-EXTRA_OECONF += "--without-xcb --disable-udc --disable-xcms --disable-xlocale --disable-xkb"
-
-CFLAGS += "-D_GNU_SOURCE"
diff --git a/recipes/xorg-lib/libapplewm_1.0.0.bb b/recipes/xorg-lib/libapplewm_1.0.0.bb
deleted file mode 100644
index 6e746b4..0000000
--- a/recipes/xorg-lib/libapplewm_1.0.0.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require xorg-lib-common.inc
-DEPENDS += "libxext applewmproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "48a403c45be2206ee900729ced3a0e62"
-SRC_URI[archive.sha256sum] = "ecd2ff407a418eb4ac673f48b4d0a9c5b6860a13cef7211a32fe8f3d3db0407e"
-
-XORG_PN = "libAppleWM"
diff --git a/recipes/xorg-lib/libdmx_1.0.2.bb b/recipes/xorg-lib/libdmx_1.0.2.bb
deleted file mode 100644
index 7d6e025..0000000
--- a/recipes/xorg-lib/libdmx_1.0.2.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Distributed Multihead extension library"
-DEPENDS += "libxext dmxproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "4d866967210d06098fc9f302ed4c79b1"
-SRC_URI[archive.sha256sum] = "fa3ff31a543f7cea04762c08f48b418e75230de8b4dfdf9d2d3ae9e2af26b9c4"
diff --git a/recipes/xorg-lib/libfontenc_1.0.4.bb b/recipes/xorg-lib/libfontenc_1.0.4.bb
deleted file mode 100644
index f16cb77..0000000
--- a/recipes/xorg-lib/libfontenc_1.0.4.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 font encoding library"
-LICENSE = "BSD-X"
-DEPENDS += "zlib xproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "5cd16a2e51ca7b96a3081c7486ff98b9"
-SRC_URI[archive.sha256sum] = "b993aa3d17e845a12a49160b5d96993059ce919c7ba902005b910b867b6258c8"
-
-BBCLASSEXTEND = "native"
diff --git a/recipes/xorg-lib/libfs_1.0.0.bb b/recipes/xorg-lib/libfs_1.0.0.bb
deleted file mode 100644
index 7f81054..0000000
--- a/recipes/xorg-lib/libfs_1.0.0.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Font Services library"
-DEPENDS += "xproto fontsproto xtrans"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "dfd5de47e232db0891410bec8ee6707b"
-SRC_URI[archive.sha256sum] = "2f18f9fa0e18a3eab3c154ba820ad64b5c6ee364e147524055a553a130ccfdde"
-
-XORG_PN = "libFS"
diff --git a/recipes/xorg-lib/libfs_1.0.1.bb b/recipes/xorg-lib/libfs_1.0.1.bb
deleted file mode 100644
index fe1f774..0000000
--- a/recipes/xorg-lib/libfs_1.0.1.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Font Services library"
-DEPENDS += "xproto fontsproto xtrans"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "81521249353fa33be7a4bb0062c2fbb9"
-SRC_URI[archive.sha256sum] = "9bf92ffdb51e69e07682cd1a6c0101f2a833b16b9bfa5d601491ff46a35a2cf5"
-
-XORG_PN = "libFS"
diff --git a/recipes/xorg-lib/libice_1.0.3.bb b/recipes/xorg-lib/libice_1.0.3.bb
deleted file mode 100644
index 52c9de0..0000000
--- a/recipes/xorg-lib/libice_1.0.3.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Inter-Client Exchange library"
-DEPENDS += "xproto xtrans"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "071f96648ac25c8e87a3de11a7de2d8a"
-SRC_URI[archive.sha256sum] = "ffd46270dae30cad147d73559142a701a8ff8d0658f4abfb2341edefabb8161d"
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libICE"
diff --git a/recipes/xorg-lib/libice_1.0.4.bb b/recipes/xorg-lib/libice_1.0.4.bb
deleted file mode 100644
index 29303c1..0000000
--- a/recipes/xorg-lib/libice_1.0.4.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Inter-Client Exchange library"
-DEPENDS += "xproto xtrans"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "4ab4e67e0b8845aa201e984153087f4a"
-SRC_URI[archive.sha256sum] = "13055e2f4c645cbd135ce97a7974a5866f9ba3ed8988e686b552f55c30514f04"
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libICE"
diff --git a/recipes/xorg-lib/liblbxutil-1.1.0/mkg3states-1.1.patch b/recipes/xorg-lib/liblbxutil-1.1.0/mkg3states-1.1.patch
new file mode 100644
index 0000000..f9f4a63
--- /dev/null
+++ b/recipes/xorg-lib/liblbxutil-1.1.0/mkg3states-1.1.patch
@@ -0,0 +1,55 @@
+diff -uNr liblbxutil-1.1.0.orig/configure.ac liblbxutil-1.1.0/configure.ac
+--- liblbxutil-1.1.0.orig/configure.ac	2009-12-04 23:52:04.000000000 +0100
++++ liblbxutil-1.1.0/configure.ac	2009-12-16 10:45:00.000000000 +0100
+@@ -50,4 +50,5 @@
+ 
+ AC_OUTPUT([Makefile
+ 	   src/Makefile
++	   src/image/Makefile
+ 	   lbxutil.pc])
+diff -uNr liblbxutil-1.1.0.orig/src/image/Makefile.am liblbxutil-1.1.0/src/image/Makefile.am
+--- liblbxutil-1.1.0.orig/src/image/Makefile.am	1970-01-01 01:00:00.000000000 +0100
++++ liblbxutil-1.1.0/src/image/Makefile.am	2009-12-16 10:45:00.000000000 +0100
+@@ -0,0 +1,15 @@
++# evil hack
++CFLAGS=$(CFLAGS_FOR_BUILD)
++CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
++LDFLAGS=$(LDFLAGS_FOR_BUILD)
++
++CC=$(CC_FOR_BUILD)
++LIBTOOL = @LIBTOOL@ --tag=CC
++
++noinst_PROGRAMS = mkg3states
++
++mkg3states_SOURCES =				\
++	mkg3states.c
++
++mkg3states_CFLAGS=$(CFLAGS_FOR_BUILD)
++mkg3states_LDFLAGS=$(LDFLAGS_FOR_BUILD)
+diff -uNr liblbxutil-1.1.0.orig/src/Makefile.am liblbxutil-1.1.0/src/Makefile.am
+--- liblbxutil-1.1.0.orig/src/Makefile.am	2009-12-16 10:48:11.000000000 +0100
++++ liblbxutil-1.1.0/src/Makefile.am	2009-12-16 10:46:47.000000000 +0100
+@@ -3,10 +3,7 @@
+ AM_CFLAGS = $(CWARNFLAGS) $(LBXUTIL_CFLAGS)
+ INCLUDES = -I$(top_srcdir)/include
+ 
+-noinst_PROGRAMS = mkg3states
+-
+-mkg3states_SOURCES =				\
+-	$(srcdir)/image/mkg3states.c
++SUBDIRS = image
+ 
+ liblbxutil_la_SOURCES =				\
+ 	$(srcdir)/lbx_zlib/reqstats.h		\
+@@ -38,9 +35,8 @@
+ 
+ $(srcdir)/image/dfaxg42d.c: g3states.h
+ 
+-g3states.h: mkg3states
+-	-rm -f g3states.h
+-	$(AM_V_GEN) ./mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h
++g3states.h: image/mkg3states
++	$(AM_V_GEN) ./image/mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h
+ 
+ liblbxutil_la_LDFLAGS = -version-number 1:0:0 -no-undefined
+ 
diff --git a/recipes/xorg-lib/liblbxutil/mkg3states-1.1.patch b/recipes/xorg-lib/liblbxutil/mkg3states-1.1.patch
deleted file mode 100644
index f9f4a63..0000000
--- a/recipes/xorg-lib/liblbxutil/mkg3states-1.1.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-diff -uNr liblbxutil-1.1.0.orig/configure.ac liblbxutil-1.1.0/configure.ac
---- liblbxutil-1.1.0.orig/configure.ac	2009-12-04 23:52:04.000000000 +0100
-+++ liblbxutil-1.1.0/configure.ac	2009-12-16 10:45:00.000000000 +0100
-@@ -50,4 +50,5 @@
- 
- AC_OUTPUT([Makefile
- 	   src/Makefile
-+	   src/image/Makefile
- 	   lbxutil.pc])
-diff -uNr liblbxutil-1.1.0.orig/src/image/Makefile.am liblbxutil-1.1.0/src/image/Makefile.am
---- liblbxutil-1.1.0.orig/src/image/Makefile.am	1970-01-01 01:00:00.000000000 +0100
-+++ liblbxutil-1.1.0/src/image/Makefile.am	2009-12-16 10:45:00.000000000 +0100
-@@ -0,0 +1,15 @@
-+# evil hack
-+CFLAGS=$(CFLAGS_FOR_BUILD)
-+CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
-+LDFLAGS=$(LDFLAGS_FOR_BUILD)
-+
-+CC=$(CC_FOR_BUILD)
-+LIBTOOL = @LIBTOOL@ --tag=CC
-+
-+noinst_PROGRAMS = mkg3states
-+
-+mkg3states_SOURCES =				\
-+	mkg3states.c
-+
-+mkg3states_CFLAGS=$(CFLAGS_FOR_BUILD)
-+mkg3states_LDFLAGS=$(LDFLAGS_FOR_BUILD)
-diff -uNr liblbxutil-1.1.0.orig/src/Makefile.am liblbxutil-1.1.0/src/Makefile.am
---- liblbxutil-1.1.0.orig/src/Makefile.am	2009-12-16 10:48:11.000000000 +0100
-+++ liblbxutil-1.1.0/src/Makefile.am	2009-12-16 10:46:47.000000000 +0100
-@@ -3,10 +3,7 @@
- AM_CFLAGS = $(CWARNFLAGS) $(LBXUTIL_CFLAGS)
- INCLUDES = -I$(top_srcdir)/include
- 
--noinst_PROGRAMS = mkg3states
--
--mkg3states_SOURCES =				\
--	$(srcdir)/image/mkg3states.c
-+SUBDIRS = image
- 
- liblbxutil_la_SOURCES =				\
- 	$(srcdir)/lbx_zlib/reqstats.h		\
-@@ -38,9 +35,8 @@
- 
- $(srcdir)/image/dfaxg42d.c: g3states.h
- 
--g3states.h: mkg3states
--	-rm -f g3states.h
--	$(AM_V_GEN) ./mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h
-+g3states.h: image/mkg3states
-+	$(AM_V_GEN) ./image/mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h
- 
- liblbxutil_la_LDFLAGS = -version-number 1:0:0 -no-undefined
- 
diff --git a/recipes/xorg-lib/liblbxutil/mkg3states.patch b/recipes/xorg-lib/liblbxutil/mkg3states.patch
deleted file mode 100644
index 58463db..0000000
--- a/recipes/xorg-lib/liblbxutil/mkg3states.patch
+++ /dev/null
@@ -1,51 +0,0 @@
---- liblbxutil-1.0.0/configure.ac.old	2006-03-31 02:38:44.000000000 -0500
-+++ liblbxutil-1.0.0/configure.ac	2006-03-31 02:39:06.000000000 -0500
-@@ -60,4 +60,5 @@ XORG_RELEASE_VERSION
- 
- AC_OUTPUT([Makefile
- 	   src/Makefile
-+	   src/image/Makefile
- 	   lbxutil.pc])
---- liblbxutil-1.0.0/src/Makefile.am.old	2006-03-31 02:38:51.000000000 -0500
-+++ liblbxutil-1.0.0/src/Makefile.am	2006-03-31 02:39:49.000000000 -0500
-@@ -1,9 +1,6 @@
- lib_LTLIBRARIES = liblbxutil.la
- 
--noinst_PROGRAMS = mkg3states
--
--mkg3states_SOURCES =				\
--	$(srcdir)/image/mkg3states.c
-+SUBDIRS = image
- 
- liblbxutil_la_SOURCES =				\
- 	$(srcdir)/lbx_zlib/reqstats.h		\
-@@ -28,9 +25,8 @@ INCLUDES = @LBXUTIL_CFLAGS@ 
- 
- $(srcdir)/image/dfaxg42d.c: g3states.h
- 
--g3states.h: mkg3states
--	-rm -f g3states.h
--	./mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h
-+g3states.h: image/mkg3states
-+	./image/mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h
- 
- liblbxutil_la_LDFLAGS = -version-number 1:0:0
- 
---- liblbxutil-1.0.0/src/image/Makefile.am.old	2006-03-31 02:41:19.000000000 -0500
-+++ liblbxutil-1.0.0/src/image/Makefile.am	2006-03-31 02:40:40.000000000 -0500
-@@ -0,0 +1,15 @@
-+# evil hack
-+CFLAGS=$(CFLAGS_FOR_BUILD)
-+CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
-+LDFLAGS=$(LDFLAGS_FOR_BUILD)
-+
-+CC=$(CC_FOR_BUILD)
-+LIBTOOL = @LIBTOOL@ --tag=CC
-+
-+noinst_PROGRAMS = mkg3states
-+
-+mkg3states_SOURCES =				\
-+	mkg3states.c
-+
-+mkg3states_CFLAGS=$(CFLAGS_FOR_BUILD)
-+mkg3states_LDFLAGS=$(LDFLAGS_FOR_BUILD)
diff --git a/recipes/xorg-lib/liblbxutil_1.0.1.bb b/recipes/xorg-lib/liblbxutil_1.0.1.bb
deleted file mode 100644
index f51d5ab..0000000
--- a/recipes/xorg-lib/liblbxutil_1.0.1.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "XFIXES Extension"
-DEPENDS += " xextproto xproto zlib"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://mkg3states.patch"
-SRC_URI[archive.md5sum] = "b73cbd5bc3cd268722a624a5f1318fde"
-SRC_URI[archive.sha256sum] = "94c31c7090106d3a95e2a7c083961efca1321b970118fe103ab06e5d927b7258"
-
-export CC_FOR_BUILD = "gcc"
diff --git a/recipes/xorg-lib/libpciaccess/fix-mtrr-check.patch b/recipes/xorg-lib/libpciaccess/fix-mtrr-check.patch
deleted file mode 100644
index e2d9f62..0000000
--- a/recipes/xorg-lib/libpciaccess/fix-mtrr-check.patch
+++ /dev/null
@@ -1,19 +0,0 @@
----
- configure.ac |    2 --
- 1 file changed, 2 deletions(-)
-
---- libpciaccess-0.10.3.orig/configure.ac
-+++ libpciaccess-0.10.3/configure.ac
-@@ -89,12 +89,10 @@ esac
- AM_CONDITIONAL(LINUX, [test "x$linux" = xyes])
- AM_CONDITIONAL(FREEBSD, [test "x$freebsd" = xyes])
- AM_CONDITIONAL(OPENBSD, [test "x$openbsd" = xyes])
- AM_CONDITIONAL(SOLARIS, [test "x$solaris" = xyes])
- 
--AC_CHECK_FILE([/usr/include/asm/mtrr.h],
--              [have_mtrr_h="yes"], [have_mtrr_h="no"])
- if test "x$have_mtrr_h" = xyes; then
-     AC_DEFINE(HAVE_MTRR, 1, [Use MTRRs on mappings])
- fi
- 
- AC_SUBST(PCIACCESS_CFLAGS)
diff --git a/recipes/xorg-lib/libpciaccess_0.10.3.bb b/recipes/xorg-lib/libpciaccess_0.10.3.bb
deleted file mode 100644
index c594dc0..0000000
--- a/recipes/xorg-lib/libpciaccess_0.10.3.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require xorg-lib-common.inc
-DEPENDS += "xproto virtual/libx11"
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://fix-mtrr-check.patch"
-SRC_URI[archive.md5sum] = "6d5468debf76fac84576ca26c9535821"
-SRC_URI[archive.sha256sum] = "2f609ad3b5688ae66dcd18d7cdd1fc6b68531a2a85f89798f6cfb5eda6d680dc"
diff --git a/recipes/xorg-lib/libpciaccess_0.11.0.bb b/recipes/xorg-lib/libpciaccess_0.11.0.bb
deleted file mode 100644
index aca0a2f..0000000
--- a/recipes/xorg-lib/libpciaccess_0.11.0.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require xorg-lib-common.inc
-DEPENDS += "xproto virtual/libx11"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "686320dcec98daad0bdfb8894d4f2a2b"
-SRC_URI[archive.sha256sum] = "6e38be12b656c83c66a6fd8ba56c041d8188218278219c88ee635242ec1c7dab"
diff --git a/recipes/xorg-lib/libsm_1.0.2.bb b/recipes/xorg-lib/libsm_1.0.2.bb
deleted file mode 100644
index ee2ff16..0000000
--- a/recipes/xorg-lib/libsm_1.0.2.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "Session management library"
-PRIORITY = "optional"
-DEPENDS += " libice xproto xtrans"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "a254771550c01db372e88d1a1dc2e13a"
-SRC_URI[archive.sha256sum] = "e290614797bd626c1b92bac8f83e8954b99bd66e6ecdaa1e935e176df099eba8"
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libSM"
diff --git a/recipes/xorg-lib/libsm_1.0.3.bb b/recipes/xorg-lib/libsm_1.0.3.bb
deleted file mode 100644
index 8ca90fe..0000000
--- a/recipes/xorg-lib/libsm_1.0.3.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Session management library"
-DEPENDS += "libice xproto xtrans"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "184cbf502b3cd5d7ba5f9d1290a99606"
-SRC_URI[archive.sha256sum] = "57f42d3557effe452cd348362977ff90fa61009885c23b3aca8cb0219b5dec04"
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libSM"
diff --git a/recipes/xorg-lib/libsm_1.1.0.bb b/recipes/xorg-lib/libsm_1.1.0.bb
deleted file mode 100644
index 1b51b89..0000000
--- a/recipes/xorg-lib/libsm_1.1.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Session management library"
-DEPENDS += "libice xproto xtrans util-linux-ng"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "05a04c2b6382fb0054f6c70494e22733"
-SRC_URI[archive.sha256sum] = "7536ac382e1ff82014d3a0defba0c61b3a30984f4e5bc7707960d6debcb92a82"
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libSM"
diff --git a/recipes/xorg-lib/libwindowswm_1.0.0.bb b/recipes/xorg-lib/libwindowswm_1.0.0.bb
deleted file mode 100644
index 35457cb..0000000
--- a/recipes/xorg-lib/libwindowswm_1.0.0.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require xorg-lib-common.inc
-DEPENDS += "libxext windowswmproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "337b379fd00a67345b083100c4e6ba95"
-SRC_URI[archive.sha256sum] = "6ad87266173d21ba7e0e4506db0c094769fd58c3f0b741b37f30c297deec166a"
-
-XORG_PN = "libWindowsWM"
diff --git a/recipes/xorg-lib/libx11-1.0.1/keysymdef_include.patch b/recipes/xorg-lib/libx11-1.0.1/keysymdef_include.patch
deleted file mode 100644
index 5653088..0000000
--- a/recipes/xorg-lib/libx11-1.0.1/keysymdef_include.patch
+++ /dev/null
@@ -1,62 +0,0 @@
----
- configure.ac |   44 ++++++++++++++++++++++++--------------------
- 1 file changed, 24 insertions(+), 20 deletions(-)
-
-Index: libX11-1.1.2/configure.ac
-===================================================================
---- libX11-1.1.2.orig/configure.ac	2008-01-02 15:30:47.000000000 +0000
-+++ libX11-1.1.2/configure.ac	2008-01-02 15:47:25.000000000 +0000
-@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL,
- #
- KEYSYMDEF=""
- AC_MSG_CHECKING([keysymdef.h])
--for flag in $XPROTO_CFLAGS -I/usr/include; do
--	case "$KEYSYMDEF" in
--	"")
--		case "$flag" in
--		*-I*)
--			dir=`echo "$flag" | sed 's/ *-I//'`
--			file="$dir/X11/keysymdef.h"
--			if test -f "$file"; then
--				KEYSYMDEF="$file"
--			fi
-+AC_ARG_WITH(keysymdef,
-+	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),  
-+	KEYSYMDEF=$withval, KEYSYMDEF="")
-+
-+if test x$KEYSYMDEF = x; then
-+	for flag in $XPROTO_CFLAGS -I/usr/include; do
-+		case "$KEYSYMDEF" in
-+		"")
-+			case "$flag" in
-+			*-I*)
-+				dir=`echo "$flag" | sed 's/ *-I//'`
-+				file="$dir/X11/keysymdef.h"
-+				if test -f "$file"; then
-+					KEYSYMDEF="$file"
-+				fi
-+				;;
-+			esac
- 			;;
- 		esac
--		;;
--	esac
--done
--case "$KEYSYMDEF" in
--"")
--	AC_MSG_ERROR([Cannot find keysymdef.h])
--	;;
--*)
-+	done
-+fi
-+
-+if test -f "$KEYSYMDEF"; then
- 	AC_MSG_RESULT([$KEYSYMDEF])
--        ;;
--esac
-+else
-+	AC_MSG_ERROR([Cannot find keysymdef.h])
-+fi
- AC_SUBST(KEYSYMDEF)
- 
- AC_ARG_ENABLE(udc,
diff --git a/recipes/xorg-lib/libx11-1.0.1/x11_disable_makekeys.patch b/recipes/xorg-lib/libx11-1.0.1/x11_disable_makekeys.patch
deleted file mode 100644
index ad8b6fc..0000000
--- a/recipes/xorg-lib/libx11-1.0.1/x11_disable_makekeys.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Index: libX11-1.0.1/src/util/Makefile.am
-===================================================================
---- libX11-1.0.1.old/src/util/Makefile.am
-+++ libX11-1.0.1/src/util/Makefile.am
-@@ -1,10 +1 @@
--# $XdotOrg: lib/X11/src/util/Makefile.am,v 1.4 2006-02-19 02:14:12 jamey Exp $
--
--noinst_PROGRAMS=makekeys
--
--makekeys_CFLAGS=$(X11_CFLAGS)
--
--#override CC = gcc
--LINK = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
--
- EXTRA_DIST = mkks.sh
diff --git a/recipes/xorg-lib/libx11-1.0.3/keysymdef_include.patch b/recipes/xorg-lib/libx11-1.0.3/keysymdef_include.patch
deleted file mode 100644
index 5653088..0000000
--- a/recipes/xorg-lib/libx11-1.0.3/keysymdef_include.patch
+++ /dev/null
@@ -1,62 +0,0 @@
----
- configure.ac |   44 ++++++++++++++++++++++++--------------------
- 1 file changed, 24 insertions(+), 20 deletions(-)
-
-Index: libX11-1.1.2/configure.ac
-===================================================================
---- libX11-1.1.2.orig/configure.ac	2008-01-02 15:30:47.000000000 +0000
-+++ libX11-1.1.2/configure.ac	2008-01-02 15:47:25.000000000 +0000
-@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL,
- #
- KEYSYMDEF=""
- AC_MSG_CHECKING([keysymdef.h])
--for flag in $XPROTO_CFLAGS -I/usr/include; do
--	case "$KEYSYMDEF" in
--	"")
--		case "$flag" in
--		*-I*)
--			dir=`echo "$flag" | sed 's/ *-I//'`
--			file="$dir/X11/keysymdef.h"
--			if test -f "$file"; then
--				KEYSYMDEF="$file"
--			fi
-+AC_ARG_WITH(keysymdef,
-+	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),  
-+	KEYSYMDEF=$withval, KEYSYMDEF="")
-+
-+if test x$KEYSYMDEF = x; then
-+	for flag in $XPROTO_CFLAGS -I/usr/include; do
-+		case "$KEYSYMDEF" in
-+		"")
-+			case "$flag" in
-+			*-I*)
-+				dir=`echo "$flag" | sed 's/ *-I//'`
-+				file="$dir/X11/keysymdef.h"
-+				if test -f "$file"; then
-+					KEYSYMDEF="$file"
-+				fi
-+				;;
-+			esac
- 			;;
- 		esac
--		;;
--	esac
--done
--case "$KEYSYMDEF" in
--"")
--	AC_MSG_ERROR([Cannot find keysymdef.h])
--	;;
--*)
-+	done
-+fi
-+
-+if test -f "$KEYSYMDEF"; then
- 	AC_MSG_RESULT([$KEYSYMDEF])
--        ;;
--esac
-+else
-+	AC_MSG_ERROR([Cannot find keysymdef.h])
-+fi
- AC_SUBST(KEYSYMDEF)
- 
- AC_ARG_ENABLE(udc,
diff --git a/recipes/xorg-lib/libx11-1.0.3/x11_disable_makekeys.patch b/recipes/xorg-lib/libx11-1.0.3/x11_disable_makekeys.patch
deleted file mode 100644
index ad8b6fc..0000000
--- a/recipes/xorg-lib/libx11-1.0.3/x11_disable_makekeys.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Index: libX11-1.0.1/src/util/Makefile.am
-===================================================================
---- libX11-1.0.1.old/src/util/Makefile.am
-+++ libX11-1.0.1/src/util/Makefile.am
-@@ -1,10 +1 @@
--# $XdotOrg: lib/X11/src/util/Makefile.am,v 1.4 2006-02-19 02:14:12 jamey Exp $
--
--noinst_PROGRAMS=makekeys
--
--makekeys_CFLAGS=$(X11_CFLAGS)
--
--#override CC = gcc
--LINK = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
--
- EXTRA_DIST = mkks.sh
diff --git a/recipes/xorg-lib/libx11-1.1.1/keysymdef_include.patch b/recipes/xorg-lib/libx11-1.1.1/keysymdef_include.patch
deleted file mode 100644
index 5653088..0000000
--- a/recipes/xorg-lib/libx11-1.1.1/keysymdef_include.patch
+++ /dev/null
@@ -1,62 +0,0 @@
----
- configure.ac |   44 ++++++++++++++++++++++++--------------------
- 1 file changed, 24 insertions(+), 20 deletions(-)
-
-Index: libX11-1.1.2/configure.ac
-===================================================================
---- libX11-1.1.2.orig/configure.ac	2008-01-02 15:30:47.000000000 +0000
-+++ libX11-1.1.2/configure.ac	2008-01-02 15:47:25.000000000 +0000
-@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL,
- #
- KEYSYMDEF=""
- AC_MSG_CHECKING([keysymdef.h])
--for flag in $XPROTO_CFLAGS -I/usr/include; do
--	case "$KEYSYMDEF" in
--	"")
--		case "$flag" in
--		*-I*)
--			dir=`echo "$flag" | sed 's/ *-I//'`
--			file="$dir/X11/keysymdef.h"
--			if test -f "$file"; then
--				KEYSYMDEF="$file"
--			fi
-+AC_ARG_WITH(keysymdef,
-+	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),  
-+	KEYSYMDEF=$withval, KEYSYMDEF="")
-+
-+if test x$KEYSYMDEF = x; then
-+	for flag in $XPROTO_CFLAGS -I/usr/include; do
-+		case "$KEYSYMDEF" in
-+		"")
-+			case "$flag" in
-+			*-I*)
-+				dir=`echo "$flag" | sed 's/ *-I//'`
-+				file="$dir/X11/keysymdef.h"
-+				if test -f "$file"; then
-+					KEYSYMDEF="$file"
-+				fi
-+				;;
-+			esac
- 			;;
- 		esac
--		;;
--	esac
--done
--case "$KEYSYMDEF" in
--"")
--	AC_MSG_ERROR([Cannot find keysymdef.h])
--	;;
--*)
-+	done
-+fi
-+
-+if test -f "$KEYSYMDEF"; then
- 	AC_MSG_RESULT([$KEYSYMDEF])
--        ;;
--esac
-+else
-+	AC_MSG_ERROR([Cannot find keysymdef.h])
-+fi
- AC_SUBST(KEYSYMDEF)
- 
- AC_ARG_ENABLE(udc,
diff --git a/recipes/xorg-lib/libx11-1.1.2/keysymdef_include.patch b/recipes/xorg-lib/libx11-1.1.2/keysymdef_include.patch
deleted file mode 100644
index 5653088..0000000
--- a/recipes/xorg-lib/libx11-1.1.2/keysymdef_include.patch
+++ /dev/null
@@ -1,62 +0,0 @@
----
- configure.ac |   44 ++++++++++++++++++++++++--------------------
- 1 file changed, 24 insertions(+), 20 deletions(-)
-
-Index: libX11-1.1.2/configure.ac
-===================================================================
---- libX11-1.1.2.orig/configure.ac	2008-01-02 15:30:47.000000000 +0000
-+++ libX11-1.1.2/configure.ac	2008-01-02 15:47:25.000000000 +0000
-@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL,
- #
- KEYSYMDEF=""
- AC_MSG_CHECKING([keysymdef.h])
--for flag in $XPROTO_CFLAGS -I/usr/include; do
--	case "$KEYSYMDEF" in
--	"")
--		case "$flag" in
--		*-I*)
--			dir=`echo "$flag" | sed 's/ *-I//'`
--			file="$dir/X11/keysymdef.h"
--			if test -f "$file"; then
--				KEYSYMDEF="$file"
--			fi
-+AC_ARG_WITH(keysymdef,
-+	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),  
-+	KEYSYMDEF=$withval, KEYSYMDEF="")
-+
-+if test x$KEYSYMDEF = x; then
-+	for flag in $XPROTO_CFLAGS -I/usr/include; do
-+		case "$KEYSYMDEF" in
-+		"")
-+			case "$flag" in
-+			*-I*)
-+				dir=`echo "$flag" | sed 's/ *-I//'`
-+				file="$dir/X11/keysymdef.h"
-+				if test -f "$file"; then
-+					KEYSYMDEF="$file"
-+				fi
-+				;;
-+			esac
- 			;;
- 		esac
--		;;
--	esac
--done
--case "$KEYSYMDEF" in
--"")
--	AC_MSG_ERROR([Cannot find keysymdef.h])
--	;;
--*)
-+	done
-+fi
-+
-+if test -f "$KEYSYMDEF"; then
- 	AC_MSG_RESULT([$KEYSYMDEF])
--        ;;
--esac
-+else
-+	AC_MSG_ERROR([Cannot find keysymdef.h])
-+fi
- AC_SUBST(KEYSYMDEF)
- 
- AC_ARG_ENABLE(udc,
diff --git a/recipes/xorg-lib/libx11-1.1.3/keysymdef_include.patch b/recipes/xorg-lib/libx11-1.1.3/keysymdef_include.patch
deleted file mode 100644
index 5653088..0000000
--- a/recipes/xorg-lib/libx11-1.1.3/keysymdef_include.patch
+++ /dev/null
@@ -1,62 +0,0 @@
----
- configure.ac |   44 ++++++++++++++++++++++++--------------------
- 1 file changed, 24 insertions(+), 20 deletions(-)
-
-Index: libX11-1.1.2/configure.ac
-===================================================================
---- libX11-1.1.2.orig/configure.ac	2008-01-02 15:30:47.000000000 +0000
-+++ libX11-1.1.2/configure.ac	2008-01-02 15:47:25.000000000 +0000
-@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL,
- #
- KEYSYMDEF=""
- AC_MSG_CHECKING([keysymdef.h])
--for flag in $XPROTO_CFLAGS -I/usr/include; do
--	case "$KEYSYMDEF" in
--	"")
--		case "$flag" in
--		*-I*)
--			dir=`echo "$flag" | sed 's/ *-I//'`
--			file="$dir/X11/keysymdef.h"
--			if test -f "$file"; then
--				KEYSYMDEF="$file"
--			fi
-+AC_ARG_WITH(keysymdef,
-+	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),  
-+	KEYSYMDEF=$withval, KEYSYMDEF="")
-+
-+if test x$KEYSYMDEF = x; then
-+	for flag in $XPROTO_CFLAGS -I/usr/include; do
-+		case "$KEYSYMDEF" in
-+		"")
-+			case "$flag" in
-+			*-I*)
-+				dir=`echo "$flag" | sed 's/ *-I//'`
-+				file="$dir/X11/keysymdef.h"
-+				if test -f "$file"; then
-+					KEYSYMDEF="$file"
-+				fi
-+				;;
-+			esac
- 			;;
- 		esac
--		;;
--	esac
--done
--case "$KEYSYMDEF" in
--"")
--	AC_MSG_ERROR([Cannot find keysymdef.h])
--	;;
--*)
-+	done
-+fi
-+
-+if test -f "$KEYSYMDEF"; then
- 	AC_MSG_RESULT([$KEYSYMDEF])
--        ;;
--esac
-+else
-+	AC_MSG_ERROR([Cannot find keysymdef.h])
-+fi
- AC_SUBST(KEYSYMDEF)
- 
- AC_ARG_ENABLE(udc,
diff --git a/recipes/xorg-lib/libx11-1.1.4/keysymdef_include.patch b/recipes/xorg-lib/libx11-1.1.4/keysymdef_include.patch
deleted file mode 100644
index 5653088..0000000
--- a/recipes/xorg-lib/libx11-1.1.4/keysymdef_include.patch
+++ /dev/null
@@ -1,62 +0,0 @@
----
- configure.ac |   44 ++++++++++++++++++++++++--------------------
- 1 file changed, 24 insertions(+), 20 deletions(-)
-
-Index: libX11-1.1.2/configure.ac
-===================================================================
---- libX11-1.1.2.orig/configure.ac	2008-01-02 15:30:47.000000000 +0000
-+++ libX11-1.1.2/configure.ac	2008-01-02 15:47:25.000000000 +0000
-@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL,
- #
- KEYSYMDEF=""
- AC_MSG_CHECKING([keysymdef.h])
--for flag in $XPROTO_CFLAGS -I/usr/include; do
--	case "$KEYSYMDEF" in
--	"")
--		case "$flag" in
--		*-I*)
--			dir=`echo "$flag" | sed 's/ *-I//'`
--			file="$dir/X11/keysymdef.h"
--			if test -f "$file"; then
--				KEYSYMDEF="$file"
--			fi
-+AC_ARG_WITH(keysymdef,
-+	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),  
-+	KEYSYMDEF=$withval, KEYSYMDEF="")
-+
-+if test x$KEYSYMDEF = x; then
-+	for flag in $XPROTO_CFLAGS -I/usr/include; do
-+		case "$KEYSYMDEF" in
-+		"")
-+			case "$flag" in
-+			*-I*)
-+				dir=`echo "$flag" | sed 's/ *-I//'`
-+				file="$dir/X11/keysymdef.h"
-+				if test -f "$file"; then
-+					KEYSYMDEF="$file"
-+				fi
-+				;;
-+			esac
- 			;;
- 		esac
--		;;
--	esac
--done
--case "$KEYSYMDEF" in
--"")
--	AC_MSG_ERROR([Cannot find keysymdef.h])
--	;;
--*)
-+	done
-+fi
-+
-+if test -f "$KEYSYMDEF"; then
- 	AC_MSG_RESULT([$KEYSYMDEF])
--        ;;
--esac
-+else
-+	AC_MSG_ERROR([Cannot find keysymdef.h])
-+fi
- AC_SUBST(KEYSYMDEF)
- 
- AC_ARG_ENABLE(udc,
diff --git a/recipes/xorg-lib/libx11-1.1.5/X18NCMSstubs.diff b/recipes/xorg-lib/libx11-1.1.5/X18NCMSstubs.diff
new file mode 100644
index 0000000..54b1727
--- /dev/null
+++ b/recipes/xorg-lib/libx11-1.1.5/X18NCMSstubs.diff
@@ -0,0 +1,528 @@
+--- libX11-X11R7.0-1.0.0/src/imConv.c.orig	2006-03-08 09:46:03.000000000 +0100
++++ libX11-X11R7.0-1.0.0/src/imConv.c	2006-03-08 10:50:10.000000000 +0100
+@@ -83,6 +83,7 @@
+  * from UCS char to specified charset char.
+  * This converter is needed for _XimGetCharCode subroutine.
+  */
++#ifdef XLOCALE
+ XPointer
+ _XimGetLocaleCode (
+     _Xconst char*	encoding_name)
+@@ -96,6 +97,7 @@
+     }
+     return cvt;
+ }
++#endif
+ 
+ /*
+  * Returns the locale dependent representation of a keysym.
+@@ -107,6 +109,7 @@
+  * locale
+  */
+ /*ARGSUSED*/
++#ifdef XLOCALE
+ int 
+ _XimGetCharCode (
+     XPointer            ucs_conv,
+@@ -135,6 +138,7 @@
+         buf[count]= '\0';
+     return count;
+ }
++#endif
+ 
+ #ifdef XKB
+ static int lookup_string(
+--- libX11-X11R7.0-1.0.0/src/X18NCMSstubs.c.orig	2006-03-08 08:43:19.000000000 +0100
++++ libX11-X11R7.0-1.0.0/src/X18NCMSstubs.c	2006-03-08 11:41:28.000000000 +0100
+@@ -0,0 +1,428 @@
++/*
++ * X18NCMSstubs.c
++ * - Provides stubs and dummy funcs needed when Xcms and XLocale stuff removed
++ *
++ * Copyright © 2003 Matthew Allum
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that
++ * copyright notice and this permission notice appear in supporting
++ * documentation, and that the name of Matthew Allum not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission.  Keith Packard and Compaq makes no
++ * representations about the suitability of this software for any purpose.  It
++ * is provided "as is" without express or implied warranty.
++ *
++ * MATTHEW ALLUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 
++ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, 
++ * IN NO EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
++ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
++ * PERFORMANCE OF THIS SOFTWARE.
++ */
++
++#include <stdlib.h>
++#include "Xlibint.h"
++#include "Xlcint.h"
++#include <X11/Xlocale.h>
++#include <X11/Xos.h>
++#ifdef WIN32
++#undef close
++#endif
++#include <X11/Xutil.h>
++#include "XlcPubI.h"
++
++#include "Xcmsint.h" 		/* for XcmsCCC type  */
++#include "XlcPubI.h"            /* for XLCd type */
++#include "config.h"
++
++#if ! XLOCALE
++
++Bool
++XSupportsLocale()
++{
++  return False; 		
++}
++
++char *
++XSetLocaleModifiers(
++    const char *modifiers)
++{
++  return NULL;
++}
++
++XLCd
++_XOpenLC(
++    char *name)
++{
++  return NULL;
++}
++
++XLCd
++_XlcCurrentLC()
++{
++  return NULL;
++}
++
++void
++_XlcVaToArgList(
++    va_list var,
++    int count,
++    XlcArgList *args_ret)
++{
++  return;
++}
++
++void
++_XlcCountVaList(
++    va_list var,
++    int *count_ret)
++{
++  return;
++}
++
++void
++_XCloseLC(
++    XLCd lcd)
++{
++  return;
++}
++
++int
++_XlcConvert(
++    XlcConv conv,
++    XPointer *from,
++    int *from_left,
++    XPointer *to,
++    int *to_left,
++    XPointer *args,
++    int num_args)
++{
++  return 0;
++}
++
++/* XIM Stubs */
++
++XPointer
++_XimGetLocaleCode ( _Xconst char* encoding_name )
++{
++  return NULL;
++}
++
++int
++_XimGetCharCode (
++    XPointer            ucs_conv,
++    KeySym              keysym,
++    unsigned char*      buf,
++    int                 nbytes)
++{
++  return 0;
++}
++
++/* Xrm Stubs */
++
++XrmMethods
++_XrmInitParseInfo(
++    XPointer *state)
++{
++    return (XrmMethods) NULL;
++}
++
++/* Xwc Stubs */
++
++int
++XwcTextExtents(
++    XFontSet            font_set,
++    _Xconst wchar_t    *text,
++    int                 text_len,
++    XRectangle         *overall_ink_extents,
++    XRectangle         *overall_logical_extents)
++{
++  return 0;
++}
++
++void 
++XwcDrawString(Display *display,
++	      Drawable d,
++	      XFontSet font_set,
++	      GC gc,
++	      int x, int y,
++	      _Xconst wchar_t *string,
++	      int num_wchars)
++{
++  ;
++}
++
++void
++XwcDrawText(
++    Display            *dpy,
++    Drawable            d,
++    GC                  gc,
++    int                 x,
++    int                 y,
++    XwcTextItem        *text_items,
++    int                 nitems)
++{
++  ;
++}
++
++void
++XwcDrawImageString(
++    Display            *dpy,
++    Drawable            d,
++    XFontSet            font_set,
++    GC                  gc,
++    int                 x,
++    int                 y,
++    _Xconst wchar_t    *text,
++    int                 text_len)
++{
++  ;
++}
++
++int
++XwcTextEscapement(
++    XFontSet            font_set,
++    _Xconst wchar_t    *text,
++    int                 text_len)
++{
++  return 0;
++}
++
++Status
++XwcTextPerCharExtents(
++    XFontSet            font_set,
++    _Xconst wchar_t    *text,
++    int                 text_len,
++    XRectangle         *ink_extents_buffer,
++    XRectangle         *logical_extents_buffer,
++    int                 buffer_size,
++    int                *num_chars,
++    XRectangle         *max_ink_extents,
++    XRectangle         *max_logical_extents)
++{
++  ;
++}
++
++int
++XwcTextPropertyToTextList(
++    Display *dpy,
++    const XTextProperty *text_prop,
++    wchar_t ***list_ret,
++    int *count_ret)
++{
++  return 0;
++}
++
++int
++XwcTextListToTextProperty(
++    Display *dpy,
++    wchar_t **list,
++    int count,
++    XICCEncodingStyle style,
++    XTextProperty *text_prop)
++{
++  return 0;
++}
++
++void
++XwcFreeStringList(wchar_t **list)
++{
++  return;
++}
++
++
++void XmbSetWMProperties (        /* Actually from mbWMProps.c */
++    Display *dpy,
++    Window w,
++    _Xconst char *windowName,
++    _Xconst char *iconName,
++    char **argv,
++    int argc,
++    XSizeHints *sizeHints,
++    XWMHints *wmHints,
++    XClassHint *classHints)
++{
++  return;
++}
++
++int
++XmbTextPropertyToTextList(
++    Display *dpy,
++    const XTextProperty *text_prop,
++    char ***list_ret,
++    int *count_ret)
++{
++  return XLocaleNotSupported;
++}
++
++int
++XmbTextListToTextProperty(
++    Display *dpy,
++    char **list,
++    int count,
++    XICCEncodingStyle style,
++    XTextProperty *text_prop)
++{
++  return XLocaleNotSupported;
++}
++
++int
++XmbTextExtents(
++    XFontSet        font_set,
++    _Xconst char   *text,
++    int             text_len,
++    XRectangle     *overall_ink_extents,
++    XRectangle     *overall_logical_extents)
++{
++  return 0;
++}
++
++void
++XmbDrawText(
++    Display            *dpy,
++    Drawable            d,
++    GC                  gc,
++    int                 x,
++    int                 y,
++    XmbTextItem        *text_items,
++    int                 nitems)
++{
++  ;
++}
++
++void
++XmbDrawString(
++    Display            *dpy,
++    Drawable            d,
++    XFontSet            font_set,
++    GC                  gc,
++    int                 x,
++    int                 y,
++    _Xconst char       *text,
++    int                 text_len)
++{
++  ;
++}
++
++void
++XmbDrawImageString(
++    Display            *dpy,
++    Drawable            d,
++    XFontSet            font_set,
++    GC                  gc,
++    int                 x,
++    int                 y,
++    _Xconst char       *text,
++    int                 text_len)
++{
++  ;
++}
++
++int
++XmbTextEscapement(
++    XFontSet        font_set,
++    _Xconst char   *text,
++    int             text_len)
++{
++  return 0;
++}
++
++Status
++XmbTextPerCharExtents(
++    XFontSet        font_set,
++    _Xconst char   *text,
++    int             text_len,
++    XRectangle     *ink_extents_buffer,
++    XRectangle     *logical_extents_buffer,
++    int             buffer_size,
++    int            *num_chars,
++    XRectangle     *max_ink_extents,
++    XRectangle     *max_logical_extents)
++{
++  return 0;
++}
++
++unsigned int
++KeySymToUcs4(KeySym keysym)
++{
++  return 0;
++}
++
++#endif 
++
++#if ! XCMS
++
++XcmsCCC 
++XcmsCCCOfColormap(dpy, cmap)
++    Display *dpy;
++    Colormap cmap;
++{
++  return NULL;
++}
++
++Status
++_XcmsResolveColorString (
++    XcmsCCC ccc,
++    const char **color_string,
++    XcmsColor *pColor_exact_return,
++    XcmsColorFormat result_format)
++{
++  return(XcmsFailure);
++}
++
++void
++_XcmsUnresolveColor(
++    XcmsCCC ccc,
++    XcmsColor *pColor)
++{
++  return;
++}
++
++void
++_XUnresolveColor(
++    XcmsCCC ccc,
++    XColor *pXColor)
++{
++  return;
++}
++
++XcmsCmapRec *
++_XcmsAddCmapRec(dpy, cmap, windowID, visual)
++    Display *dpy;
++    Colormap cmap;
++    Window windowID;
++    Visual *visual;
++{
++  return NULL;
++}
++
++void
++_XcmsRGB_to_XColor(
++    XcmsColor *pColors,
++    XColor *pXColors,
++    unsigned int nColors)
++{
++  return;
++}
++
++XcmsCmapRec *
++_XcmsCopyCmapRecAndFree(
++    Display *dpy,
++    Colormap src_cmap,
++    Colormap copy_cmap)
++{
++  return NULL;
++}
++
++void
++_XcmsDeleteCmapRec(
++    Display *dpy,
++    Colormap cmap)
++{
++  return;
++}
++
++#endif
+--- libX11-X11R7.0-1.0.0/src/Makefile.am.orig	2006-03-08 08:31:09.000000000 +0100
++++ libX11-X11R7.0-1.0.0/src/Makefile.am	2006-03-08 09:36:23.000000000 +0100
+@@ -331,6 +331,8 @@
+ libX11_la_SOURCES+=UIThrStubs.c
+ endif
+ 
++libX11_la_SOURCES+=X18NCMSstubs.c
++
+ x11datadir = @X11_DATADIR@
+ x11data_DATA = XKeysymDB XErrorDB
+ 
+@@ -338,7 +340,8 @@
+ 	$(x11data_DATA) \
+ 	os2Stubs.c \
+ 	udcInf.c \
+-	UIThrStubs.c 
++	UIThrStubs.c \
++	X18NCMSstubs.c
+ 
+ #
+ # Figure out which sub-libraries to link into Xlib
+--- libX11-X11R7.0-1.0.0/src/locking.c.orig	2006-03-08 11:05:56.000000000 +0100
++++ libX11-X11R7.0-1.0.0/src/locking.c	2006-03-08 11:06:37.000000000 +0100
+@@ -55,7 +55,9 @@
+ #define NUM_FREE_CVLS 4
+ 
+ /* in lcWrap.c */
++#ifdef XLOCALE
+ extern LockInfoPtr _Xi18n_lock;
++#endif
+ 
+ #ifdef WIN32
+ static DWORD _X_TlsIndex = (DWORD)-1;
+@@ -625,9 +627,11 @@
+     _Xglobal_lock = &global_lock;
+     xmutex_init(_Xglobal_lock->lock);
+     xmutex_set_name(_Xglobal_lock->lock, "Xlib global");
++#ifdef XLOCALE
+     _Xi18n_lock = &i18n_lock;
+     xmutex_init(_Xi18n_lock->lock);
+     xmutex_set_name(_Xi18n_lock->lock, "Xlib i18n");
++#endif
+     _XLockMutex_fn = _XLockMutex;
+     _XUnlockMutex_fn = _XUnlockMutex;
+     _XCreateMutex_fn = _XCreateMutex;
+--- libX11-X11R7.0-1.0.0/configure.ac.orig	2006-03-08 10:03:57.000000000 +0100
++++ libX11-X11R7.0-1.0.0/configure.ac	2006-03-08 10:06:01.000000000 +0100
+@@ -215,7 +215,14 @@
+ esac
+ AC_SUBST(KEYSYMDEF)
+ 
+-AM_CONDITIONAL(UDC, test xfalse = xtrue)
++AC_ARG_ENABLE(udc,
++              AC_HELP_STRING([--disable-udc],
++                [Disable Xlib support for UDC *EXPERIMENTAL*]),
++              [UDC=$enableval],[UDC=yes])
++AM_CONDITIONAL(UDC, [test x$UDC = xyes ])
++if test x"$UDC" = "xyes"; then
++	AC_DEFINE(UDC,1,[Include support for UDC])
++fi
+ 
+ AC_ARG_ENABLE(xcms, 
+               AC_HELP_STRING([--disable-xcms],
diff --git a/recipes/xorg-lib/libx11-1.1.5/dolt-fix.patch b/recipes/xorg-lib/libx11-1.1.5/dolt-fix.patch
new file mode 100644
index 0000000..ea1a8bd
--- /dev/null
+++ b/recipes/xorg-lib/libx11-1.1.5/dolt-fix.patch
@@ -0,0 +1,21 @@
+diff -uNr libX11-1.2.99.901.orig/acinclude.m4 libX11-1.2.99.901/acinclude.m4
+--- libX11-1.2.99.901.orig/acinclude.m4	2009-09-05 10:57:11.000000000 +0200
++++ libX11-1.2.99.901/acinclude.m4	2009-09-05 10:59:14.000000000 +0200
+@@ -197,7 +197,7 @@
+     cat <<__DOLTLIBTOOL__EOF__ > doltlibtool
+ #!$DOLT_BASH
+ __DOLTLIBTOOL__EOF__
+-    cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool
++    cat <<'__DOLTLIBTOOL__EOF__' | sed -e "s/@host_alias@/$host_alias/g" >>doltlibtool
+ top_builddir_slash="${0%%doltlibtool}"
+ : ${top_builddir_slash:=./}
+ args=()
+@@ -213,7 +213,7 @@
+ if $modeok && $tagok ; then
+     . ${top_builddir_slash}doltcompile "${args@<:@@@:>@}"
+ else
+-    exec ${top_builddir_slash}libtool "$[]@"
++    exec ${top_builddir_slash}@host_alias at -libtool "$[]@"
+ fi
+ __DOLTLIBTOOL__EOF__
+ 
diff --git a/recipes/xorg-lib/libx11-1.1.5/fix-disable-xlocale.diff b/recipes/xorg-lib/libx11-1.1.5/fix-disable-xlocale.diff
new file mode 100644
index 0000000..9dbf6da
--- /dev/null
+++ b/recipes/xorg-lib/libx11-1.1.5/fix-disable-xlocale.diff
@@ -0,0 +1,14 @@
+--- libX11-X11R7.0-1.0.0/src/Font.c.orig	2006-03-12 18:35:42.000000000 +0100
++++ libX11-X11R7.0-1.0.0/src/Font.c	2006-03-12 18:40:27.000000000 +0100
+@@ -701,7 +701,11 @@
+     }
+     if (l - 2 - (p - charset) < 0)
+ 	return 0;
++#ifdef XLOCALE
+     if (_XlcNCompareISOLatin1(name + l - 2 - (p - charset), charset, p - charset))
++#else
++    if (strncasecmp(name + l - 2 - (p - charset), charset, p - charset))
++#endif
+ 	return 0;
+     if (strlen(p + 1) + l - 1 >= sizeof(buf) - 1)
+ 	return 0;
diff --git a/recipes/xorg-lib/libx11-1.1.5/fix-utf8-wrong-define.patch b/recipes/xorg-lib/libx11-1.1.5/fix-utf8-wrong-define.patch
new file mode 100644
index 0000000..a098db1
--- /dev/null
+++ b/recipes/xorg-lib/libx11-1.1.5/fix-utf8-wrong-define.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- libX11-X11R7.0-1.0.0/include/X11/Xlib.h~fix-utf8-wrong-define
++++ libX11-X11R7.0-1.0.0/include/X11/Xlib.h
+@@ -103,7 +103,7 @@
+ 
+ /* API mentioning "UTF8" or "utf8" is an XFree86 extension, introduced in
+    November 2000. Its presence is indicated through the following macro. */
+-#define X_HAVE_UTF8_STRING 1
++#undef X_HAVE_UTF8_STRING
+ 
+ typedef char *XPointer;
+ 
diff --git a/recipes/xorg-lib/libx11-1.1.5/keysymdef_include.patch b/recipes/xorg-lib/libx11-1.1.5/keysymdef_include.patch
new file mode 100644
index 0000000..07487b6
--- /dev/null
+++ b/recipes/xorg-lib/libx11-1.1.5/keysymdef_include.patch
@@ -0,0 +1,29 @@
+Index: libX11-1.1.5/configure.ac
+===================================================================
+--- libX11-1.1.5.orig/configure.ac	2008-10-28 11:36:49.000000000 +0000
++++ libX11-1.1.5/configure.ac	2008-10-28 11:40:05.000000000 +0000
+@@ -221,13 +221,21 @@
+ # Find keysymdef.h
+ #
+ AC_MSG_CHECKING([keysymdef.h])
+-dir=`pkg-config --variable=includedir xproto`
+-KEYSYMDEF="$dir/X11/keysymdef.h"
++AC_ARG_WITH(keysymdef,
++	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),
++	KEYSYMDEF=$withval, KEYSYMDEF="")
++
++if test x$KEYSYMDEF = x; then
++	dir=`pkg-config --variable=includedir xproto`
++	KEYSYMDEF="$dir/X11/keysymdef.h"
++fi
++
+ if test -f "$KEYSYMDEF"; then
+-        AC_MSG_RESULT([$KEYSYMDEF])
++	AC_MSG_RESULT([$KEYSYMDEF])
+ else
+ 	AC_MSG_ERROR([Cannot find keysymdef.h])
+ fi
++
+ AC_SUBST(KEYSYMDEF)
+ 
+ AM_CONDITIONAL(UDC, test xfalse = xtrue)
diff --git a/recipes/xorg-lib/libx11-1.1.5/makekeys-update.patch b/recipes/xorg-lib/libx11-1.1.5/makekeys-update.patch
new file mode 100644
index 0000000..323dbbb
--- /dev/null
+++ b/recipes/xorg-lib/libx11-1.1.5/makekeys-update.patch
@@ -0,0 +1,87 @@
+From f8613deafdc7c6f3be49c3448e011426bcfdf78e Mon Sep 17 00:00:00 2001
+From: Holger Hans Peter Freyther <zecke at selfish.org>
+Date: Tue, 28 Jul 2009 03:20:20 +0200
+Subject: [PATCH] makekeys.c: Replace with the latest version to fix a segfault
+
+Fix a crash..
+---
+ src/util/makekeys.c |   28 +++++++++++++++++-----------
+ 1 files changed, 17 insertions(+), 11 deletions(-)
+
+diff --git a/src/util/makekeys.c b/src/util/makekeys.c
+index 214ea5c..3fe8a96 100644
+--- a/src/util/makekeys.c
++++ b/src/util/makekeys.c
+@@ -36,13 +36,10 @@ from The Open Group.
+ #include <X11/keysymdef.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#if defined(macII) && !defined(__STDC__)  /* stdlib.h fails to define these */
+-char *malloc();
+-#endif /* macII */
+ 
+ typedef unsigned long Signature;
+ 
+-#define KTNUM 3000
++#define KTNUM 4000
+ 
+ static struct info {
+     char	*name;
+@@ -52,11 +49,11 @@ static struct info {
+ #define MIN_REHASH 15
+ #define MATCHES 10
+ 
+-char tab[KTNUM];
+-unsigned short offsets[KTNUM];
+-unsigned short indexes[KTNUM];
+-KeySym values[KTNUM];
+-char buf[1024];
++static char tab[KTNUM];
++static unsigned short offsets[KTNUM];
++static unsigned short indexes[KTNUM];
++static KeySym values[KTNUM];
++static char buf[1024];
+ 
+ int
+ main(int argc, char *argv[])
+@@ -103,12 +100,11 @@ main(int argc, char *argv[])
+ 		    key);
+ 	    continue;
+ 	}
+-	name = malloc((unsigned)strlen(key)+1);
++	name = strdup(key);
+ 	if (!name) {
+ 	    fprintf(stderr, "makekeys: out of memory!\n");
+ 	    exit(1);
+ 	}
+-	(void)strcpy(name, key);
+ 	info[ksnum].name = name;
+ 	ksnum++;
+ 	if (ksnum == KTNUM) {
+@@ -157,6 +153,11 @@ next1:	;
+     }
+ 
+     z = best_z;
++    if (z == 0) {
++	fprintf(stderr, "makekeys: failed to find small enough hash!\n"
++		"Try increasing KTNUM in makekeys.c\n");
++	exit(1);
++    }
+     printf("#ifdef NEEDKTABLE\n");
+     printf("const unsigned char _XkeyTable[] = {\n");
+     printf("0,\n");
+@@ -237,6 +238,11 @@ next2:	;
+     }
+ 
+     z = best_z;
++    if (z == 0) {
++	fprintf(stderr, "makekeys: failed to find small enough hash!\n"
++		"Try increasing KTNUM in makekeys.c\n");
++	exit(1);
++    }
+     for (i = z; --i >= 0;)
+ 	offsets[i] = 0;
+     for (i = 0; i < ksnum; i++) {
+-- 
+1.6.3.3
+
diff --git a/recipes/xorg-lib/libx11-1.1.5/x11_disable_makekeys.patch b/recipes/xorg-lib/libx11-1.1.5/x11_disable_makekeys.patch
new file mode 100644
index 0000000..2a8a55c
--- /dev/null
+++ b/recipes/xorg-lib/libx11-1.1.5/x11_disable_makekeys.patch
@@ -0,0 +1,30 @@
+---
+ src/util/Makefile.am |   17 -----------------
+ 1 file changed, 17 deletions(-)
+
+Index: libX11-1.1.2/src/util/Makefile.am
+===================================================================
+--- libX11-1.1.2.orig/src/util/Makefile.am	2007-08-22 14:17:42.000000000 +0100
++++ libX11-1.1.2/src/util/Makefile.am	2007-08-22 14:18:04.000000000 +0100
+@@ -1,21 +1,4 @@
+ # $XdotOrg: lib/X11/src/util/Makefile.am,v 1.4 2006-02-19 02:14:12 jamey Exp $
+ 
+-noinst_PROGRAMS=makekeys
+-
+-makekeys_CFLAGS=$(X11_CFLAGS)
+-
+-#override CC = gcc
+-LINK = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+-
+ EXTRA_DIST = mkks.sh
+ 
+-if LINT
+-# Check source code with tools like lint & sparse
+-
+-ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+-		$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
+-
+-lint:
+-	$(LINT) $(ALL_LINT_FLAGS) makekeys.c
+-
+-endif LINT
diff --git a/recipes/xorg-lib/libx11-1.2/x11_disable_makekeys.patch b/recipes/xorg-lib/libx11-1.2/x11_disable_makekeys.patch
deleted file mode 100644
index 9e9e75e..0000000
--- a/recipes/xorg-lib/libx11-1.2/x11_disable_makekeys.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- /tmp/Makefile.am	2009-05-27 22:19:39.000000000 +0200
-+++ libX11-1.2/src/util/Makefile.am	2009-05-27 22:21:31.000000000 +0200
-@@ -1,20 +1 @@
--# $XdotOrg: lib/X11/src/util/Makefile.am,v 1.4 2006-02-19 02:14:12 jamey Exp $
--
--noinst_PROGRAMS=makekeys
--
--makekeys_CFLAGS=$(X11_CFLAGS)
--
--CC = @CC_FOR_BUILD@
--
- EXTRA_DIST = mkks.sh
--
--if LINT
--# Check source code with tools like lint & sparse
--
--ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
--		$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
--
--lint:
--	$(LINT) $(ALL_LINT_FLAGS) makekeys.c
--
--endif LINT
diff --git a/recipes/xorg-lib/libx11-1.3.2/dolt-fix.patch b/recipes/xorg-lib/libx11-1.3.2/dolt-fix.patch
new file mode 100644
index 0000000..ea1a8bd
--- /dev/null
+++ b/recipes/xorg-lib/libx11-1.3.2/dolt-fix.patch
@@ -0,0 +1,21 @@
+diff -uNr libX11-1.2.99.901.orig/acinclude.m4 libX11-1.2.99.901/acinclude.m4
+--- libX11-1.2.99.901.orig/acinclude.m4	2009-09-05 10:57:11.000000000 +0200
++++ libX11-1.2.99.901/acinclude.m4	2009-09-05 10:59:14.000000000 +0200
+@@ -197,7 +197,7 @@
+     cat <<__DOLTLIBTOOL__EOF__ > doltlibtool
+ #!$DOLT_BASH
+ __DOLTLIBTOOL__EOF__
+-    cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool
++    cat <<'__DOLTLIBTOOL__EOF__' | sed -e "s/@host_alias@/$host_alias/g" >>doltlibtool
+ top_builddir_slash="${0%%doltlibtool}"
+ : ${top_builddir_slash:=./}
+ args=()
+@@ -213,7 +213,7 @@
+ if $modeok && $tagok ; then
+     . ${top_builddir_slash}doltcompile "${args@<:@@@:>@}"
+ else
+-    exec ${top_builddir_slash}libtool "$[]@"
++    exec ${top_builddir_slash}@host_alias at -libtool "$[]@"
+ fi
+ __DOLTLIBTOOL__EOF__
+ 
diff --git a/recipes/xorg-lib/libx11-1.3.2/keysymdef_include.patch b/recipes/xorg-lib/libx11-1.3.2/keysymdef_include.patch
new file mode 100644
index 0000000..07487b6
--- /dev/null
+++ b/recipes/xorg-lib/libx11-1.3.2/keysymdef_include.patch
@@ -0,0 +1,29 @@
+Index: libX11-1.1.5/configure.ac
+===================================================================
+--- libX11-1.1.5.orig/configure.ac	2008-10-28 11:36:49.000000000 +0000
++++ libX11-1.1.5/configure.ac	2008-10-28 11:40:05.000000000 +0000
+@@ -221,13 +221,21 @@
+ # Find keysymdef.h
+ #
+ AC_MSG_CHECKING([keysymdef.h])
+-dir=`pkg-config --variable=includedir xproto`
+-KEYSYMDEF="$dir/X11/keysymdef.h"
++AC_ARG_WITH(keysymdef,
++	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),
++	KEYSYMDEF=$withval, KEYSYMDEF="")
++
++if test x$KEYSYMDEF = x; then
++	dir=`pkg-config --variable=includedir xproto`
++	KEYSYMDEF="$dir/X11/keysymdef.h"
++fi
++
+ if test -f "$KEYSYMDEF"; then
+-        AC_MSG_RESULT([$KEYSYMDEF])
++	AC_MSG_RESULT([$KEYSYMDEF])
+ else
+ 	AC_MSG_ERROR([Cannot find keysymdef.h])
+ fi
++
+ AC_SUBST(KEYSYMDEF)
+ 
+ AM_CONDITIONAL(UDC, test xfalse = xtrue)
diff --git a/recipes/xorg-lib/libx11-1.3.3+git/dolt-fix.patch b/recipes/xorg-lib/libx11-1.3.3+git/dolt-fix.patch
deleted file mode 100644
index 7e96075..0000000
--- a/recipes/xorg-lib/libx11-1.3.3+git/dolt-fix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Index: libX11-1.3.4/m4/dolt.m4
-===================================================================
---- libX11-1.3.4/m4/dolt.m4
-+++ libX11-1.3.4/m4/dolt.m4
-@@ -155,7 +155,7 @@ dnl without '=', because automake does n
-     cat <<__DOLTLIBTOOL__EOF__ > doltlibtool
- #!$DOLT_BASH
- __DOLTLIBTOOL__EOF__
--    cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool
-+    cat <<'__DOLTLIBTOOL__EOF__' | sed -e "s/@host_alias@/$host_alias/g" >>doltlibtool
- top_builddir_slash="${0%%doltlibtool}"
- : ${top_builddir_slash:=./}
- args=()
-@@ -171,7 +171,7 @@ done
- if $modeok && $tagok ; then
-     . ${top_builddir_slash}doltcompile "${args@<:@@@:>@}"
- else
--    exec ${top_builddir_slash}libtool "$[]@"
-+    exec ${top_builddir_slash}@host_alias at -libtool "$[]@"
- fi
- __DOLTLIBTOOL__EOF__
- 
diff --git a/recipes/xorg-lib/libx11-1.3.3+git/keysymdef_include.patch b/recipes/xorg-lib/libx11-1.3.3+git/keysymdef_include.patch
deleted file mode 100644
index 07487b6..0000000
--- a/recipes/xorg-lib/libx11-1.3.3+git/keysymdef_include.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Index: libX11-1.1.5/configure.ac
-===================================================================
---- libX11-1.1.5.orig/configure.ac	2008-10-28 11:36:49.000000000 +0000
-+++ libX11-1.1.5/configure.ac	2008-10-28 11:40:05.000000000 +0000
-@@ -221,13 +221,21 @@
- # Find keysymdef.h
- #
- AC_MSG_CHECKING([keysymdef.h])
--dir=`pkg-config --variable=includedir xproto`
--KEYSYMDEF="$dir/X11/keysymdef.h"
-+AC_ARG_WITH(keysymdef,
-+	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),
-+	KEYSYMDEF=$withval, KEYSYMDEF="")
-+
-+if test x$KEYSYMDEF = x; then
-+	dir=`pkg-config --variable=includedir xproto`
-+	KEYSYMDEF="$dir/X11/keysymdef.h"
-+fi
-+
- if test -f "$KEYSYMDEF"; then
--        AC_MSG_RESULT([$KEYSYMDEF])
-+	AC_MSG_RESULT([$KEYSYMDEF])
- else
- 	AC_MSG_ERROR([Cannot find keysymdef.h])
- fi
-+
- AC_SUBST(KEYSYMDEF)
- 
- AM_CONDITIONAL(UDC, test xfalse = xtrue)
diff --git a/recipes/xorg-lib/libx11-1.3.3+git/x11_disable_makekeys.patch b/recipes/xorg-lib/libx11-1.3.3+git/x11_disable_makekeys.patch
deleted file mode 100644
index 0739632..0000000
--- a/recipes/xorg-lib/libx11-1.3.3+git/x11_disable_makekeys.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Index: git/src/util/Makefile.am
-===================================================================
---- git.orig/src/util/Makefile.am
-+++ git/src/util/Makefile.am
-@@ -1,21 +1 @@
--
--noinst_PROGRAMS=makekeys
--
--makekeys_CFLAGS = \
--	$(X11_CFLAGS) \
--	$(CWARNFLAGS)
--
--CC = @CC_FOR_BUILD@
--
- EXTRA_DIST = mkks.sh
--
--if LINT
--# Check source code with tools like lint & sparse
--
--ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
--		$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
--
--lint:
--	$(LINT) $(ALL_LINT_FLAGS) makekeys.c
--
--endif LINT
diff --git a/recipes/xorg-lib/libx11-1.3.3/x11_disable_makekeys.patch b/recipes/xorg-lib/libx11-1.3.3/x11_disable_makekeys.patch
deleted file mode 100644
index 5d0a24c..0000000
--- a/recipes/xorg-lib/libx11-1.3.3/x11_disable_makekeys.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff -uNr libX11-1.3.3.orig/src/util/Makefile.am libX11-1.3.3/src/util/Makefile.am
---- libX11-1.3.3.orig/src/util/Makefile.am	2010-01-15 02:11:36.000000000 +0100
-+++ libX11-1.3.3/src/util/Makefile.am	2010-01-18 14:48:27.000000000 +0100
-@@ -1,19 +1 @@
--
--noinst_PROGRAMS=makekeys
--
--makekeys_CFLAGS=$(X11_CFLAGS)
--
--CC = @CC_FOR_BUILD@
--
- EXTRA_DIST = mkks.sh
--
--if LINT
--# Check source code with tools like lint & sparse
--
--ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
--		$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
--
--lint:
--	$(LINT) $(ALL_LINT_FLAGS) makekeys.c
--
--endif LINT
diff --git a/recipes/xorg-lib/libx11-1.3.4/dolt-fix.patch b/recipes/xorg-lib/libx11-1.3.4/dolt-fix.patch
deleted file mode 100644
index 7e96075..0000000
--- a/recipes/xorg-lib/libx11-1.3.4/dolt-fix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Index: libX11-1.3.4/m4/dolt.m4
-===================================================================
---- libX11-1.3.4/m4/dolt.m4
-+++ libX11-1.3.4/m4/dolt.m4
-@@ -155,7 +155,7 @@ dnl without '=', because automake does n
-     cat <<__DOLTLIBTOOL__EOF__ > doltlibtool
- #!$DOLT_BASH
- __DOLTLIBTOOL__EOF__
--    cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool
-+    cat <<'__DOLTLIBTOOL__EOF__' | sed -e "s/@host_alias@/$host_alias/g" >>doltlibtool
- top_builddir_slash="${0%%doltlibtool}"
- : ${top_builddir_slash:=./}
- args=()
-@@ -171,7 +171,7 @@ done
- if $modeok && $tagok ; then
-     . ${top_builddir_slash}doltcompile "${args@<:@@@:>@}"
- else
--    exec ${top_builddir_slash}libtool "$[]@"
-+    exec ${top_builddir_slash}@host_alias at -libtool "$[]@"
- fi
- __DOLTLIBTOOL__EOF__
- 
diff --git a/recipes/xorg-lib/libx11-1.3.4/keysymdef_include.patch b/recipes/xorg-lib/libx11-1.3.4/keysymdef_include.patch
deleted file mode 100644
index 0cab165..0000000
--- a/recipes/xorg-lib/libx11-1.3.4/keysymdef_include.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Index: libX11-1.3.4/configure.ac
-===================================================================
---- libX11-1.3.4.orig/configure.ac
-+++ libX11-1.3.4/configure.ac
-@@ -355,8 +355,14 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL,
- # Find keysymdef.h
- #
- AC_MSG_CHECKING([keysymdef.h])
--dir=`$PKG_CONFIG --variable=includedir xproto`
--KEYSYMDEF="$dir/X11/keysymdef.h"
-+AC_ARG_WITH(keysymdef,
-+        AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),
-+        KEYSYMDEF=$withval, KEYSYMDEF="")
-+
-+if test x$KEYSYMDEF = x; then
-+        dir=`${PKG_CONFIG} --variable=includedir xproto`
-+        KEYSYMDEF="$dir/X11/keysymdef.h"
-+fi
- if test -f "$KEYSYMDEF"; then
-         AC_MSG_RESULT([$KEYSYMDEF])
- else
diff --git a/recipes/xorg-lib/libx11-1.3.4/x11_disable_makekeys.patch b/recipes/xorg-lib/libx11-1.3.4/x11_disable_makekeys.patch
deleted file mode 100644
index 9763313..0000000
--- a/recipes/xorg-lib/libx11-1.3.4/x11_disable_makekeys.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Index: libX11-1.3.4/src/util/Makefile.am
-===================================================================
---- libX11-1.3.4.orig/src/util/Makefile.am
-+++ libX11-1.3.4/src/util/Makefile.am
-@@ -1,24 +1 @@
--
--noinst_PROGRAMS=makekeys
--
--makekeys_CFLAGS = \
--	$(X11_CFLAGS) \
--	$(CWARNFLAGS)
--
--CC = @CC_FOR_BUILD@
--CPPFLAGS = @CPPFLAGS_FOR_BUILD@
--CFLAGS = @CFLAGS_FOR_BUILD@
--LDFLAGS = @LDFLAGS_FOR_BUILD@
--
- EXTRA_DIST = mkks.sh
--
--if LINT
--# Check source code with tools like lint & sparse
--
--ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
--		$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
--
--lint:
--	$(LINT) $(ALL_LINT_FLAGS) makekeys.c
--
--endif LINT
diff --git a/recipes/xorg-lib/libx11/X18NCMSstubs.diff b/recipes/xorg-lib/libx11/X18NCMSstubs.diff
deleted file mode 100644
index 54b1727..0000000
--- a/recipes/xorg-lib/libx11/X18NCMSstubs.diff
+++ /dev/null
@@ -1,528 +0,0 @@
---- libX11-X11R7.0-1.0.0/src/imConv.c.orig	2006-03-08 09:46:03.000000000 +0100
-+++ libX11-X11R7.0-1.0.0/src/imConv.c	2006-03-08 10:50:10.000000000 +0100
-@@ -83,6 +83,7 @@
-  * from UCS char to specified charset char.
-  * This converter is needed for _XimGetCharCode subroutine.
-  */
-+#ifdef XLOCALE
- XPointer
- _XimGetLocaleCode (
-     _Xconst char*	encoding_name)
-@@ -96,6 +97,7 @@
-     }
-     return cvt;
- }
-+#endif
- 
- /*
-  * Returns the locale dependent representation of a keysym.
-@@ -107,6 +109,7 @@
-  * locale
-  */
- /*ARGSUSED*/
-+#ifdef XLOCALE
- int 
- _XimGetCharCode (
-     XPointer            ucs_conv,
-@@ -135,6 +138,7 @@
-         buf[count]= '\0';
-     return count;
- }
-+#endif
- 
- #ifdef XKB
- static int lookup_string(
---- libX11-X11R7.0-1.0.0/src/X18NCMSstubs.c.orig	2006-03-08 08:43:19.000000000 +0100
-+++ libX11-X11R7.0-1.0.0/src/X18NCMSstubs.c	2006-03-08 11:41:28.000000000 +0100
-@@ -0,0 +1,428 @@
-+/*
-+ * X18NCMSstubs.c
-+ * - Provides stubs and dummy funcs needed when Xcms and XLocale stuff removed
-+ *
-+ * Copyright © 2003 Matthew Allum
-+ *
-+ * Permission to use, copy, modify, distribute, and sell this software and its
-+ * documentation for any purpose is hereby granted without fee, provided that
-+ * the above copyright notice appear in all copies and that both that
-+ * copyright notice and this permission notice appear in supporting
-+ * documentation, and that the name of Matthew Allum not be used in
-+ * advertising or publicity pertaining to distribution of the software without
-+ * specific, written prior permission.  Keith Packard and Compaq makes no
-+ * representations about the suitability of this software for any purpose.  It
-+ * is provided "as is" without express or implied warranty.
-+ *
-+ * MATTHEW ALLUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 
-+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, 
-+ * IN NO EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-+ * PERFORMANCE OF THIS SOFTWARE.
-+ */
-+
-+#include <stdlib.h>
-+#include "Xlibint.h"
-+#include "Xlcint.h"
-+#include <X11/Xlocale.h>
-+#include <X11/Xos.h>
-+#ifdef WIN32
-+#undef close
-+#endif
-+#include <X11/Xutil.h>
-+#include "XlcPubI.h"
-+
-+#include "Xcmsint.h" 		/* for XcmsCCC type  */
-+#include "XlcPubI.h"            /* for XLCd type */
-+#include "config.h"
-+
-+#if ! XLOCALE
-+
-+Bool
-+XSupportsLocale()
-+{
-+  return False; 		
-+}
-+
-+char *
-+XSetLocaleModifiers(
-+    const char *modifiers)
-+{
-+  return NULL;
-+}
-+
-+XLCd
-+_XOpenLC(
-+    char *name)
-+{
-+  return NULL;
-+}
-+
-+XLCd
-+_XlcCurrentLC()
-+{
-+  return NULL;
-+}
-+
-+void
-+_XlcVaToArgList(
-+    va_list var,
-+    int count,
-+    XlcArgList *args_ret)
-+{
-+  return;
-+}
-+
-+void
-+_XlcCountVaList(
-+    va_list var,
-+    int *count_ret)
-+{
-+  return;
-+}
-+
-+void
-+_XCloseLC(
-+    XLCd lcd)
-+{
-+  return;
-+}
-+
-+int
-+_XlcConvert(
-+    XlcConv conv,
-+    XPointer *from,
-+    int *from_left,
-+    XPointer *to,
-+    int *to_left,
-+    XPointer *args,
-+    int num_args)
-+{
-+  return 0;
-+}
-+
-+/* XIM Stubs */
-+
-+XPointer
-+_XimGetLocaleCode ( _Xconst char* encoding_name )
-+{
-+  return NULL;
-+}
-+
-+int
-+_XimGetCharCode (
-+    XPointer            ucs_conv,
-+    KeySym              keysym,
-+    unsigned char*      buf,
-+    int                 nbytes)
-+{
-+  return 0;
-+}
-+
-+/* Xrm Stubs */
-+
-+XrmMethods
-+_XrmInitParseInfo(
-+    XPointer *state)
-+{
-+    return (XrmMethods) NULL;
-+}
-+
-+/* Xwc Stubs */
-+
-+int
-+XwcTextExtents(
-+    XFontSet            font_set,
-+    _Xconst wchar_t    *text,
-+    int                 text_len,
-+    XRectangle         *overall_ink_extents,
-+    XRectangle         *overall_logical_extents)
-+{
-+  return 0;
-+}
-+
-+void 
-+XwcDrawString(Display *display,
-+	      Drawable d,
-+	      XFontSet font_set,
-+	      GC gc,
-+	      int x, int y,
-+	      _Xconst wchar_t *string,
-+	      int num_wchars)
-+{
-+  ;
-+}
-+
-+void
-+XwcDrawText(
-+    Display            *dpy,
-+    Drawable            d,
-+    GC                  gc,
-+    int                 x,
-+    int                 y,
-+    XwcTextItem        *text_items,
-+    int                 nitems)
-+{
-+  ;
-+}
-+
-+void
-+XwcDrawImageString(
-+    Display            *dpy,
-+    Drawable            d,
-+    XFontSet            font_set,
-+    GC                  gc,
-+    int                 x,
-+    int                 y,
-+    _Xconst wchar_t    *text,
-+    int                 text_len)
-+{
-+  ;
-+}
-+
-+int
-+XwcTextEscapement(
-+    XFontSet            font_set,
-+    _Xconst wchar_t    *text,
-+    int                 text_len)
-+{
-+  return 0;
-+}
-+
-+Status
-+XwcTextPerCharExtents(
-+    XFontSet            font_set,
-+    _Xconst wchar_t    *text,
-+    int                 text_len,
-+    XRectangle         *ink_extents_buffer,
-+    XRectangle         *logical_extents_buffer,
-+    int                 buffer_size,
-+    int                *num_chars,
-+    XRectangle         *max_ink_extents,
-+    XRectangle         *max_logical_extents)
-+{
-+  ;
-+}
-+
-+int
-+XwcTextPropertyToTextList(
-+    Display *dpy,
-+    const XTextProperty *text_prop,
-+    wchar_t ***list_ret,
-+    int *count_ret)
-+{
-+  return 0;
-+}
-+
-+int
-+XwcTextListToTextProperty(
-+    Display *dpy,
-+    wchar_t **list,
-+    int count,
-+    XICCEncodingStyle style,
-+    XTextProperty *text_prop)
-+{
-+  return 0;
-+}
-+
-+void
-+XwcFreeStringList(wchar_t **list)
-+{
-+  return;
-+}
-+
-+
-+void XmbSetWMProperties (        /* Actually from mbWMProps.c */
-+    Display *dpy,
-+    Window w,
-+    _Xconst char *windowName,
-+    _Xconst char *iconName,
-+    char **argv,
-+    int argc,
-+    XSizeHints *sizeHints,
-+    XWMHints *wmHints,
-+    XClassHint *classHints)
-+{
-+  return;
-+}
-+
-+int
-+XmbTextPropertyToTextList(
-+    Display *dpy,
-+    const XTextProperty *text_prop,
-+    char ***list_ret,
-+    int *count_ret)
-+{
-+  return XLocaleNotSupported;
-+}
-+
-+int
-+XmbTextListToTextProperty(
-+    Display *dpy,
-+    char **list,
-+    int count,
-+    XICCEncodingStyle style,
-+    XTextProperty *text_prop)
-+{
-+  return XLocaleNotSupported;
-+}
-+
-+int
-+XmbTextExtents(
-+    XFontSet        font_set,
-+    _Xconst char   *text,
-+    int             text_len,
-+    XRectangle     *overall_ink_extents,
-+    XRectangle     *overall_logical_extents)
-+{
-+  return 0;
-+}
-+
-+void
-+XmbDrawText(
-+    Display            *dpy,
-+    Drawable            d,
-+    GC                  gc,
-+    int                 x,
-+    int                 y,
-+    XmbTextItem        *text_items,
-+    int                 nitems)
-+{
-+  ;
-+}
-+
-+void
-+XmbDrawString(
-+    Display            *dpy,
-+    Drawable            d,
-+    XFontSet            font_set,
-+    GC                  gc,
-+    int                 x,
-+    int                 y,
-+    _Xconst char       *text,
-+    int                 text_len)
-+{
-+  ;
-+}
-+
-+void
-+XmbDrawImageString(
-+    Display            *dpy,
-+    Drawable            d,
-+    XFontSet            font_set,
-+    GC                  gc,
-+    int                 x,
-+    int                 y,
-+    _Xconst char       *text,
-+    int                 text_len)
-+{
-+  ;
-+}
-+
-+int
-+XmbTextEscapement(
-+    XFontSet        font_set,
-+    _Xconst char   *text,
-+    int             text_len)
-+{
-+  return 0;
-+}
-+
-+Status
-+XmbTextPerCharExtents(
-+    XFontSet        font_set,
-+    _Xconst char   *text,
-+    int             text_len,
-+    XRectangle     *ink_extents_buffer,
-+    XRectangle     *logical_extents_buffer,
-+    int             buffer_size,
-+    int            *num_chars,
-+    XRectangle     *max_ink_extents,
-+    XRectangle     *max_logical_extents)
-+{
-+  return 0;
-+}
-+
-+unsigned int
-+KeySymToUcs4(KeySym keysym)
-+{
-+  return 0;
-+}
-+
-+#endif 
-+
-+#if ! XCMS
-+
-+XcmsCCC 
-+XcmsCCCOfColormap(dpy, cmap)
-+    Display *dpy;
-+    Colormap cmap;
-+{
-+  return NULL;
-+}
-+
-+Status
-+_XcmsResolveColorString (
-+    XcmsCCC ccc,
-+    const char **color_string,
-+    XcmsColor *pColor_exact_return,
-+    XcmsColorFormat result_format)
-+{
-+  return(XcmsFailure);
-+}
-+
-+void
-+_XcmsUnresolveColor(
-+    XcmsCCC ccc,
-+    XcmsColor *pColor)
-+{
-+  return;
-+}
-+
-+void
-+_XUnresolveColor(
-+    XcmsCCC ccc,
-+    XColor *pXColor)
-+{
-+  return;
-+}
-+
-+XcmsCmapRec *
-+_XcmsAddCmapRec(dpy, cmap, windowID, visual)
-+    Display *dpy;
-+    Colormap cmap;
-+    Window windowID;
-+    Visual *visual;
-+{
-+  return NULL;
-+}
-+
-+void
-+_XcmsRGB_to_XColor(
-+    XcmsColor *pColors,
-+    XColor *pXColors,
-+    unsigned int nColors)
-+{
-+  return;
-+}
-+
-+XcmsCmapRec *
-+_XcmsCopyCmapRecAndFree(
-+    Display *dpy,
-+    Colormap src_cmap,
-+    Colormap copy_cmap)
-+{
-+  return NULL;
-+}
-+
-+void
-+_XcmsDeleteCmapRec(
-+    Display *dpy,
-+    Colormap cmap)
-+{
-+  return;
-+}
-+
-+#endif
---- libX11-X11R7.0-1.0.0/src/Makefile.am.orig	2006-03-08 08:31:09.000000000 +0100
-+++ libX11-X11R7.0-1.0.0/src/Makefile.am	2006-03-08 09:36:23.000000000 +0100
-@@ -331,6 +331,8 @@
- libX11_la_SOURCES+=UIThrStubs.c
- endif
- 
-+libX11_la_SOURCES+=X18NCMSstubs.c
-+
- x11datadir = @X11_DATADIR@
- x11data_DATA = XKeysymDB XErrorDB
- 
-@@ -338,7 +340,8 @@
- 	$(x11data_DATA) \
- 	os2Stubs.c \
- 	udcInf.c \
--	UIThrStubs.c 
-+	UIThrStubs.c \
-+	X18NCMSstubs.c
- 
- #
- # Figure out which sub-libraries to link into Xlib
---- libX11-X11R7.0-1.0.0/src/locking.c.orig	2006-03-08 11:05:56.000000000 +0100
-+++ libX11-X11R7.0-1.0.0/src/locking.c	2006-03-08 11:06:37.000000000 +0100
-@@ -55,7 +55,9 @@
- #define NUM_FREE_CVLS 4
- 
- /* in lcWrap.c */
-+#ifdef XLOCALE
- extern LockInfoPtr _Xi18n_lock;
-+#endif
- 
- #ifdef WIN32
- static DWORD _X_TlsIndex = (DWORD)-1;
-@@ -625,9 +627,11 @@
-     _Xglobal_lock = &global_lock;
-     xmutex_init(_Xglobal_lock->lock);
-     xmutex_set_name(_Xglobal_lock->lock, "Xlib global");
-+#ifdef XLOCALE
-     _Xi18n_lock = &i18n_lock;
-     xmutex_init(_Xi18n_lock->lock);
-     xmutex_set_name(_Xi18n_lock->lock, "Xlib i18n");
-+#endif
-     _XLockMutex_fn = _XLockMutex;
-     _XUnlockMutex_fn = _XUnlockMutex;
-     _XCreateMutex_fn = _XCreateMutex;
---- libX11-X11R7.0-1.0.0/configure.ac.orig	2006-03-08 10:03:57.000000000 +0100
-+++ libX11-X11R7.0-1.0.0/configure.ac	2006-03-08 10:06:01.000000000 +0100
-@@ -215,7 +215,14 @@
- esac
- AC_SUBST(KEYSYMDEF)
- 
--AM_CONDITIONAL(UDC, test xfalse = xtrue)
-+AC_ARG_ENABLE(udc,
-+              AC_HELP_STRING([--disable-udc],
-+                [Disable Xlib support for UDC *EXPERIMENTAL*]),
-+              [UDC=$enableval],[UDC=yes])
-+AM_CONDITIONAL(UDC, [test x$UDC = xyes ])
-+if test x"$UDC" = "xyes"; then
-+	AC_DEFINE(UDC,1,[Include support for UDC])
-+fi
- 
- AC_ARG_ENABLE(xcms, 
-               AC_HELP_STRING([--disable-xcms],
diff --git a/recipes/xorg-lib/libx11/dolt-fix.patch b/recipes/xorg-lib/libx11/dolt-fix.patch
deleted file mode 100644
index ea1a8bd..0000000
--- a/recipes/xorg-lib/libx11/dolt-fix.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -uNr libX11-1.2.99.901.orig/acinclude.m4 libX11-1.2.99.901/acinclude.m4
---- libX11-1.2.99.901.orig/acinclude.m4	2009-09-05 10:57:11.000000000 +0200
-+++ libX11-1.2.99.901/acinclude.m4	2009-09-05 10:59:14.000000000 +0200
-@@ -197,7 +197,7 @@
-     cat <<__DOLTLIBTOOL__EOF__ > doltlibtool
- #!$DOLT_BASH
- __DOLTLIBTOOL__EOF__
--    cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool
-+    cat <<'__DOLTLIBTOOL__EOF__' | sed -e "s/@host_alias@/$host_alias/g" >>doltlibtool
- top_builddir_slash="${0%%doltlibtool}"
- : ${top_builddir_slash:=./}
- args=()
-@@ -213,7 +213,7 @@
- if $modeok && $tagok ; then
-     . ${top_builddir_slash}doltcompile "${args@<:@@@:>@}"
- else
--    exec ${top_builddir_slash}libtool "$[]@"
-+    exec ${top_builddir_slash}@host_alias at -libtool "$[]@"
- fi
- __DOLTLIBTOOL__EOF__
- 
diff --git a/recipes/xorg-lib/libx11/fix-disable-xlocale.diff b/recipes/xorg-lib/libx11/fix-disable-xlocale.diff
deleted file mode 100644
index 9dbf6da..0000000
--- a/recipes/xorg-lib/libx11/fix-disable-xlocale.diff
+++ /dev/null
@@ -1,14 +0,0 @@
---- libX11-X11R7.0-1.0.0/src/Font.c.orig	2006-03-12 18:35:42.000000000 +0100
-+++ libX11-X11R7.0-1.0.0/src/Font.c	2006-03-12 18:40:27.000000000 +0100
-@@ -701,7 +701,11 @@
-     }
-     if (l - 2 - (p - charset) < 0)
- 	return 0;
-+#ifdef XLOCALE
-     if (_XlcNCompareISOLatin1(name + l - 2 - (p - charset), charset, p - charset))
-+#else
-+    if (strncasecmp(name + l - 2 - (p - charset), charset, p - charset))
-+#endif
- 	return 0;
-     if (strlen(p + 1) + l - 1 >= sizeof(buf) - 1)
- 	return 0;
diff --git a/recipes/xorg-lib/libx11/fix-utf8-wrong-define.patch b/recipes/xorg-lib/libx11/fix-utf8-wrong-define.patch
deleted file mode 100644
index a098db1..0000000
--- a/recipes/xorg-lib/libx11/fix-utf8-wrong-define.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- libX11-X11R7.0-1.0.0/include/X11/Xlib.h~fix-utf8-wrong-define
-+++ libX11-X11R7.0-1.0.0/include/X11/Xlib.h
-@@ -103,7 +103,7 @@
- 
- /* API mentioning "UTF8" or "utf8" is an XFree86 extension, introduced in
-    November 2000. Its presence is indicated through the following macro. */
--#define X_HAVE_UTF8_STRING 1
-+#undef X_HAVE_UTF8_STRING
- 
- typedef char *XPointer;
- 
diff --git a/recipes/xorg-lib/libx11/keysymdef_include.patch b/recipes/xorg-lib/libx11/keysymdef_include.patch
deleted file mode 100644
index 07487b6..0000000
--- a/recipes/xorg-lib/libx11/keysymdef_include.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Index: libX11-1.1.5/configure.ac
-===================================================================
---- libX11-1.1.5.orig/configure.ac	2008-10-28 11:36:49.000000000 +0000
-+++ libX11-1.1.5/configure.ac	2008-10-28 11:40:05.000000000 +0000
-@@ -221,13 +221,21 @@
- # Find keysymdef.h
- #
- AC_MSG_CHECKING([keysymdef.h])
--dir=`pkg-config --variable=includedir xproto`
--KEYSYMDEF="$dir/X11/keysymdef.h"
-+AC_ARG_WITH(keysymdef,
-+	AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]),
-+	KEYSYMDEF=$withval, KEYSYMDEF="")
-+
-+if test x$KEYSYMDEF = x; then
-+	dir=`pkg-config --variable=includedir xproto`
-+	KEYSYMDEF="$dir/X11/keysymdef.h"
-+fi
-+
- if test -f "$KEYSYMDEF"; then
--        AC_MSG_RESULT([$KEYSYMDEF])
-+	AC_MSG_RESULT([$KEYSYMDEF])
- else
- 	AC_MSG_ERROR([Cannot find keysymdef.h])
- fi
-+
- AC_SUBST(KEYSYMDEF)
- 
- AM_CONDITIONAL(UDC, test xfalse = xtrue)
diff --git a/recipes/xorg-lib/libx11/makekeys-update.patch b/recipes/xorg-lib/libx11/makekeys-update.patch
deleted file mode 100644
index 323dbbb..0000000
--- a/recipes/xorg-lib/libx11/makekeys-update.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From f8613deafdc7c6f3be49c3448e011426bcfdf78e Mon Sep 17 00:00:00 2001
-From: Holger Hans Peter Freyther <zecke at selfish.org>
-Date: Tue, 28 Jul 2009 03:20:20 +0200
-Subject: [PATCH] makekeys.c: Replace with the latest version to fix a segfault
-
-Fix a crash..
----
- src/util/makekeys.c |   28 +++++++++++++++++-----------
- 1 files changed, 17 insertions(+), 11 deletions(-)
-
-diff --git a/src/util/makekeys.c b/src/util/makekeys.c
-index 214ea5c..3fe8a96 100644
---- a/src/util/makekeys.c
-+++ b/src/util/makekeys.c
-@@ -36,13 +36,10 @@ from The Open Group.
- #include <X11/keysymdef.h>
- #include <stdio.h>
- #include <stdlib.h>
--#if defined(macII) && !defined(__STDC__)  /* stdlib.h fails to define these */
--char *malloc();
--#endif /* macII */
- 
- typedef unsigned long Signature;
- 
--#define KTNUM 3000
-+#define KTNUM 4000
- 
- static struct info {
-     char	*name;
-@@ -52,11 +49,11 @@ static struct info {
- #define MIN_REHASH 15
- #define MATCHES 10
- 
--char tab[KTNUM];
--unsigned short offsets[KTNUM];
--unsigned short indexes[KTNUM];
--KeySym values[KTNUM];
--char buf[1024];
-+static char tab[KTNUM];
-+static unsigned short offsets[KTNUM];
-+static unsigned short indexes[KTNUM];
-+static KeySym values[KTNUM];
-+static char buf[1024];
- 
- int
- main(int argc, char *argv[])
-@@ -103,12 +100,11 @@ main(int argc, char *argv[])
- 		    key);
- 	    continue;
- 	}
--	name = malloc((unsigned)strlen(key)+1);
-+	name = strdup(key);
- 	if (!name) {
- 	    fprintf(stderr, "makekeys: out of memory!\n");
- 	    exit(1);
- 	}
--	(void)strcpy(name, key);
- 	info[ksnum].name = name;
- 	ksnum++;
- 	if (ksnum == KTNUM) {
-@@ -157,6 +153,11 @@ next1:	;
-     }
- 
-     z = best_z;
-+    if (z == 0) {
-+	fprintf(stderr, "makekeys: failed to find small enough hash!\n"
-+		"Try increasing KTNUM in makekeys.c\n");
-+	exit(1);
-+    }
-     printf("#ifdef NEEDKTABLE\n");
-     printf("const unsigned char _XkeyTable[] = {\n");
-     printf("0,\n");
-@@ -237,6 +238,11 @@ next2:	;
-     }
- 
-     z = best_z;
-+    if (z == 0) {
-+	fprintf(stderr, "makekeys: failed to find small enough hash!\n"
-+		"Try increasing KTNUM in makekeys.c\n");
-+	exit(1);
-+    }
-     for (i = z; --i >= 0;)
- 	offsets[i] = 0;
-     for (i = 0; i < ksnum; i++) {
--- 
-1.6.3.3
-
diff --git a/recipes/xorg-lib/libx11/ruutf8.patch b/recipes/xorg-lib/libx11/ruutf8.patch
deleted file mode 100644
index 0822b30..0000000
--- a/recipes/xorg-lib/libx11/ruutf8.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/nls/locale.alias.pre b/nls/locale.alias.pre
-index a74ca75..ff5bc3f 100644
---- a/nls/locale.alias.pre
-+++ b/nls/locale.alias.pre
-@@ -898,6 +898,7 @@ ru_RU.cp1251:					ru_RU.CP1251
- ru_RU.microsoftcp1251:				ru_RU.CP1251
- ru_RU.microsoft-cp1251:				ru_RU.CP1251
- ru_RU.MICROSOFT-CP1251:				ru_RU.CP1251
-+ru_RU.utf8:					ru_RU.UTF-8
- #if defined(INCLUDE_ru_SU)
- XCOMM ru_SU is redundant now
- ru_SU:						ru_RU.KOI8-R
diff --git a/recipes/xorg-lib/libx11/x11_disable_makekeys.patch b/recipes/xorg-lib/libx11/x11_disable_makekeys.patch
deleted file mode 100644
index 2a8a55c..0000000
--- a/recipes/xorg-lib/libx11/x11_disable_makekeys.patch
+++ /dev/null
@@ -1,30 +0,0 @@
----
- src/util/Makefile.am |   17 -----------------
- 1 file changed, 17 deletions(-)
-
-Index: libX11-1.1.2/src/util/Makefile.am
-===================================================================
---- libX11-1.1.2.orig/src/util/Makefile.am	2007-08-22 14:17:42.000000000 +0100
-+++ libX11-1.1.2/src/util/Makefile.am	2007-08-22 14:18:04.000000000 +0100
-@@ -1,21 +1,4 @@
- # $XdotOrg: lib/X11/src/util/Makefile.am,v 1.4 2006-02-19 02:14:12 jamey Exp $
- 
--noinst_PROGRAMS=makekeys
--
--makekeys_CFLAGS=$(X11_CFLAGS)
--
--#override CC = gcc
--LINK = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
--
- EXTRA_DIST = mkks.sh
- 
--if LINT
--# Check source code with tools like lint & sparse
--
--ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
--		$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
--
--lint:
--	$(LINT) $(ALL_LINT_FLAGS) makekeys.c
--
--endif LINT
diff --git a/recipes/xorg-lib/libx11/xchar2b.patch b/recipes/xorg-lib/libx11/xchar2b.patch
deleted file mode 100644
index 31da58f..0000000
--- a/recipes/xorg-lib/libx11/xchar2b.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-http://www.koka-in.org/~kensyu/zaurus/diary/20030618.html
-
---- /tmp/Xlib.h	2006-12-01 14:40:27.000000000 +0100
-+++ libX11-X11R7.1-1.0.1/include/X11/Xlib.h	2006-12-01 14:40:56.948254000 +0100
-@@ -1067,7 +1067,7 @@
- typedef struct {		/* normal 16 bit characters are two bytes */
-     unsigned char byte1;
-     unsigned char byte2;
--} XChar2b;
-+} __attribute__ ((packed)) XChar2b;
- 
- typedef struct {
-     XChar2b *chars;		/* two byte characters */
diff --git a/recipes/xorg-lib/libx11/xim.patch b/recipes/xorg-lib/libx11/xim.patch
deleted file mode 100644
index 0eab197..0000000
--- a/recipes/xorg-lib/libx11/xim.patch
+++ /dev/null
@@ -1,55 +0,0 @@
---- libX11-6.2.1/src/X18NCMSstubs.c	2003-12-04 22:47:47.000000000 +0000
-+++ libX11-6.2.1/src/X18NCMSstubs.c-new	2005-12-09 12:09:03.000000000 +0000
-@@ -90,6 +90,52 @@
-   return;
- }
- 
-+XIM
-+XOpenIM (
-+    Display* display,
-+    struct _XrmHashBucketRec* rdb,
-+    char* res_name,
-+    char* res_class)
-+{
-+  return (XIM) NULL;
-+}
-+
-+Status
-+XCloseIM ( XIM im )
-+{
-+  return NULL;
-+}
-+
-+XIC
-+XCreateIC ( XIM im, ...)
-+{
-+  return NULL;
-+}
-+
-+void
-+XDestroyIC ( XIC ic )
-+{
-+  return;
-+}
-+
-+int
-+XmbLookupString (
-+    XIC ic,
-+    XKeyPressedEvent* ev,
-+    char* buffer,
-+    int nbytes,
-+    KeySym* keysym,
-+    Status* status)
-+{
-+  return XLookupNone;
-+}
-+
-+char *
-+XGetICValues( XIC ic, ...)
-+{
-+  return (char *) NULL;
-+}
-+
- XPointer
- _XimGetLocaleCode ( _Xconst char* encoding_name )
- {
diff --git a/recipes/xorg-lib/libx11_1.0.1.bb b/recipes/xorg-lib/libx11_1.0.1.bb
deleted file mode 100644
index 734a31d..0000000
--- a/recipes/xorg-lib/libx11_1.0.1.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require libx11.inc
-LICENSE = "XFree86"
-DEPENDS = "${COMMON_DEPENDS}"
-PR = "${INC_PR}.0"
-
-SRC_URI += " file://ruutf8.patch"
-SRC_URI[archive.md5sum] = "58f0537f21183e27149cf906a1b6bef9"
-SRC_URI[archive.sha256sum] = "f99e4ce6d8e3b8833957978fe22223897b0e636c83580f2b07eff0388eb75294"
-
-EXTRA_OECONF += " --without-xcb"
diff --git a/recipes/xorg-lib/libx11_1.0.3.bb b/recipes/xorg-lib/libx11_1.0.3.bb
deleted file mode 100644
index 40cbeb5..0000000
--- a/recipes/xorg-lib/libx11_1.0.3.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require libx11.inc
-LICENSE = "XFree86"
-DEPENDS = "${COMMON_DEPENDS}"
-PR = "${INC_PR}.0"
-
-SRC_URI += " file://ruutf8.patch"
-SRC_URI[archive.md5sum] = "60b787a812c92d33f71860e4e19cb59d"
-SRC_URI[archive.sha256sum] = "fb42f2400c3709a0c2c17f27cc4a902c191ebd6228c70698891bf3a13ea5b3ac"
-
-EXTRA_OECONF += " --without-xcb"
diff --git a/recipes/xorg-lib/libx11_1.1.1.bb b/recipes/xorg-lib/libx11_1.1.1.bb
deleted file mode 100644
index 368dd7b..0000000
--- a/recipes/xorg-lib/libx11_1.1.1.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require libx11.inc
-DEPENDS = "${COMMON_DEPENDS}"
-PR = "${INC_PR}.0"
-
-SRC_URI += " file://ruutf8.patch"
-SRC_URI[archive.md5sum] = "848b80f77b20ae1fa5c882bbfa531ebc"
-SRC_URI[archive.sha256sum] = "5359db57793430429786b648ac570d4ab205797306e049bf1e8675250af21541"
-
-EXTRA_OECONF += " --without-xcb"
diff --git a/recipes/xorg-lib/libx11_1.1.2.bb b/recipes/xorg-lib/libx11_1.1.2.bb
deleted file mode 100644
index 60093c1..0000000
--- a/recipes/xorg-lib/libx11_1.1.2.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require libx11.inc
-DEPENDS = "${COMMON_DEPENDS}"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "710bf38a9477a5a1b235bc94f1d0593c"
-SRC_URI[archive.sha256sum] = "b77e4fd2bbd4092e7e78d0964760ad8ab160caccd4bc6d7d0c87a23febaea85e"
-
-EXTRA_OECONF += " --without-xcb"
diff --git a/recipes/xorg-lib/libx11_1.1.3.bb b/recipes/xorg-lib/libx11_1.1.3.bb
deleted file mode 100644
index d6aa199..0000000
--- a/recipes/xorg-lib/libx11_1.1.3.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require libx11.inc
-DEPENDS = "${COMMON_DEPENDS}"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "4d43d3e472c552d2f191ecdd4e75112c"
-SRC_URI[archive.sha256sum] = "4a2f566e2ea5dd955c875cb8fa9c18dd725324fc5cf4e23c803442e31ab8917a"
-
-EXTRA_OECONF += " --without-xcb"
diff --git a/recipes/xorg-lib/libx11_1.1.4.bb b/recipes/xorg-lib/libx11_1.1.4.bb
deleted file mode 100644
index 3eeeece..0000000
--- a/recipes/xorg-lib/libx11_1.1.4.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require libx11.inc
-DEPENDS = "${COMMON_DEPENDS}"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "1469a5a8aa8d288dce6f4c45d2f68dc3"
-SRC_URI[archive.sha256sum] = "bdbd6d239435c1736f5c532b12e8078761db8db5f37ab3195fe11c3e5b692c1c"
-
-EXTRA_OECONF += " --without-xcb"
diff --git a/recipes/xorg-lib/libx11_1.2.bb b/recipes/xorg-lib/libx11_1.2.bb
deleted file mode 100644
index 0cea5f8..0000000
--- a/recipes/xorg-lib/libx11_1.2.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require libx11.inc
-DEPENDS = "${COMMON_DEPENDS}"
-PR = "${INC_PR}.0"
-
-SRC_URI += " file://dolt-fix.patch"
-SRC_URI[archive.md5sum] = "c6265b59ea2b594fd68e33f9125b4d20"
-SRC_URI[archive.sha256sum] = "e4863cdf5d471763806e9bcae25ea47606a56cd91a5546a34c093aa3de181051"
-
-EXTRA_OECONF += " --without-xcb"
diff --git a/recipes/xorg-lib/libx11_1.3.3.bb b/recipes/xorg-lib/libx11_1.3.3.bb
deleted file mode 100644
index 8c40a99..0000000
--- a/recipes/xorg-lib/libx11_1.3.3.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require libx11.inc
-PR = "${INC_PR}.0"
-
-SRC_URI += " file://dolt-fix.patch"
-SRC_URI[archive.md5sum] = "5d74971360f194ce33d2bd2e4d9b066c"
-SRC_URI[archive.sha256sum] = "8c7f867918a3739dc7cabe955179539d4a7ecc52cb42becfd261e5dfbff511ac"
diff --git a/recipes/xorg-lib/libx11_1.3.4.bb b/recipes/xorg-lib/libx11_1.3.4.bb
deleted file mode 100644
index e55d720..0000000
--- a/recipes/xorg-lib/libx11_1.3.4.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require libx11.inc
-PR = "${INC_PR}.0"
-
-SRC_URI += " file://dolt-fix.patch"
-SRC_URI[archive.md5sum] = "f65c9c7ecbfb64c19dbd7927160d63fd"
-SRC_URI[archive.sha256sum] = "88d7238ce5f7cd123450567de7a3b56a43556e4ccc45df38b8324147c889a844"
diff --git a/recipes/xorg-lib/libx11_git.bb b/recipes/xorg-lib/libx11_git.bb
deleted file mode 100644
index eac68d8..0000000
--- a/recipes/xorg-lib/libx11_git.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require libx11.inc
-PV = "1.3.3+git"
-PR = "${INC_PR}.0"
-
-SRC_URI = "git://anongit.freedesktop.org/git/xorg/lib/libX11;protocol=git"
-SRC_URI += " file://keysymdef_include.patch \
-             file://x11_disable_makekeys.patch \
-             file://dolt-fix.patch \
-"
-
-SRCREV = "c3f3e4a9e531d010312c97e753d6e543e607094d"
-S = "${WORKDIR}/git"
-
-DEFAULT_PREFERENCE = "-1"
diff --git a/recipes/xorg-lib/libxau_1.0.3.bb b/recipes/xorg-lib/libxau_1.0.3.bb
deleted file mode 100644
index cd4f79b..0000000
--- a/recipes/xorg-lib/libxau_1.0.3.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "A Sample Authorization Protocol for X"
-DEPENDS += " xproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "75a9f2b85cd1617b5ca98c9095323853"
-SRC_URI[archive.sha256sum] = "d6c30a88770a720e96e0bd7e13e0334f9ef60f1b475a92556764828005c19e3b"
-
-BBCLASSEXTEND = "native nativesdk"
-
-XORG_PN = "libXau"
diff --git a/recipes/xorg-lib/libxau_1.0.4.bb b/recipes/xorg-lib/libxau_1.0.4.bb
deleted file mode 100644
index 293fc63..0000000
--- a/recipes/xorg-lib/libxau_1.0.4.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "A Sample Authorization Protocol for X"
-DEPENDS += " xproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "0f2b88d857e0a3f5898e4759c541af46"
-SRC_URI[archive.sha256sum] = "10d3ffa5f00d0c0a4083309ba68bdfa01dfdf912ef4cf2141e3f260b2edeb22c"
-
-BBCLASSEXTEND = "native nativesdk"
-
-XORG_PN = "libXau"
diff --git a/recipes/xorg-lib/libxaw_1.0.3.bb b/recipes/xorg-lib/libxaw_1.0.3.bb
deleted file mode 100644
index 87ec70e..0000000
--- a/recipes/xorg-lib/libxaw_1.0.3.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Athena Widget Set"
-DEPENDS += "xproto virtual/libx11 libxext xextproto libxt libxmu libxpm libxp printproto libxau"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "ee215536ea78798268ab3a444d10135a"
-SRC_URI[archive.sha256sum] = "45ca55bdac904a07b8118618c65ddb5bf8826e626c4c927e3c2508c58e231514"
-
-do_install_append () {
-    ln -sf libXaw6.so.6 ${D}${libdir}/libXaw.so.6
-    ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so.7
-    ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so
-}
-
-PACKAGES =+ "libxaw6 libxaw7 libxaw8"
-
-FILES_libxaw6 = "${libdir}/libXaw6.so.6*"
-FILES_libxaw7 = "${libdir}/libXaw7.so.7*"
-FILES_libxaw8 = "${libdir}/libXaw8.so.8*"
-
-XORG_PN = "libXaw"
diff --git a/recipes/xorg-lib/libxaw_1.0.4.bb b/recipes/xorg-lib/libxaw_1.0.4.bb
deleted file mode 100644
index 2ed715d..0000000
--- a/recipes/xorg-lib/libxaw_1.0.4.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Athena Widget Set"
-DEPENDS += "xproto virtual/libx11 libxext xextproto libxt libxmu libxpm libxp printproto libxau"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "73671d8f1cf36fdd81395328cc3539c9"
-SRC_URI[archive.sha256sum] = "11f4ab184fb8dc853fd95238d4de7b251427dd036643d11fd2a669232fa35af9"
-
-do_install_append () {
-    ln -sf libXaw6.so.6 ${D}${libdir}/libXaw.so.6
-    ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so.7
-    ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so
-}
-
-PACKAGES =+ "libxaw6 libxaw7 libxaw8"
-
-FILES_libxaw6 = "${libdir}/libXaw6.so.6*"
-FILES_libxaw7 = "${libdir}/libXaw7.so.7*"
-FILES_libxaw8 = "${libdir}/libXaw8.so.8*"
-
-XORG_PN = "libXaw"
diff --git a/recipes/xorg-lib/libxcomposite/change-include-order.patch b/recipes/xorg-lib/libxcomposite/change-include-order.patch
deleted file mode 100644
index 630b881..0000000
--- a/recipes/xorg-lib/libxcomposite/change-include-order.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-This patch makes the build use its own Xcomposite.h over rather than an
-older Xcomposite.h that might already be installed in the staging dir.
-
---- libXcomposite-X11R7.0-0.2.2.2/src/Makefile.am.orig	2006-03-12 20:10:17.000000000 +0100
-+++ libXcomposite-X11R7.0-0.2.2.2/src/Makefile.am	2006-03-12 20:10:35.000000000 +0100
-@@ -21,7 +21,7 @@
- #  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- #  PERFORMANCE OF THIS SOFTWARE.
- 
--AM_CFLAGS = $(XCOMPOSITE_CFLAGS) $(XCOMPOSITE_CFLAGS) $(X_CFLAGS) -I$(top_srcdir)/include
-+AM_CFLAGS = -I$(top_srcdir)/include $(XCOMPOSITE_CFLAGS) $(XCOMPOSITE_CFLAGS) $(X_CFLAGS)
- 
- lib_LTLIBRARIES = libXcomposite.la
- 
diff --git a/recipes/xorg-lib/libxcomposite_0.3.1.bb b/recipes/xorg-lib/libxcomposite_0.3.1.bb
deleted file mode 100644
index d7f8beb..0000000
--- a/recipes/xorg-lib/libxcomposite_0.3.1.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Composite extension library."
-LICENSE = "BSD-X"
-DEPENDS += " compositeproto virtual/libx11 libxfixes"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI += " file://change-include-order.patch"
-SRC_URI[archive.md5sum] = "a80650d660486ea7bb2e5fd84a83799a"
-SRC_URI[archive.sha256sum] = "d42b59d3c38dae5e4fec375d12e56e7a5764ba10e8b8ec70f9ce951fc9cec72b"
-
-XORG_PN = "libXcomposite"
diff --git a/recipes/xorg-lib/libxcomposite_0.4.0.bb b/recipes/xorg-lib/libxcomposite_0.4.0.bb
deleted file mode 100644
index 2dff14a..0000000
--- a/recipes/xorg-lib/libxcomposite_0.4.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Composite extension library."
-LICENSE = "BSD-X"
-DEPENDS += " compositeproto virtual/libx11 libxfixes libxext"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI += " file://change-include-order.patch"
-SRC_URI[archive.md5sum] = "7e95395dea89be21bae929b9b7f16641"
-SRC_URI[archive.sha256sum] = "7db759e82dd1f68094e4c4d257025f7893dafb2913ed249e00cbe18fa13c7510"
-
-XORG_PN = "libXcomposite"
diff --git a/recipes/xorg-lib/libxcursor_1.1.8.bb b/recipes/xorg-lib/libxcursor_1.1.8.bb
deleted file mode 100644
index 3f175e8..0000000
--- a/recipes/xorg-lib/libxcursor_1.1.8.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X cursor management library"
-LICENSE = "BSD-X"
-DEPENDS += "libxrender libxfixes"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "ec2acd10a7736a85dd1e1ed9ea5bec96"
-SRC_URI[archive.sha256sum] = "8f039f81af52c88d583fba48b878abd074542221cb0030638ad52336b4ae1377"
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libXcursor"
diff --git a/recipes/xorg-lib/libxcursor_1.1.9.bb b/recipes/xorg-lib/libxcursor_1.1.9.bb
deleted file mode 100644
index 2b363a5..0000000
--- a/recipes/xorg-lib/libxcursor_1.1.9.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X cursor management library"
-LICENSE = "BSD-X"
-DEPENDS += "libxrender libxfixes"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "99b7554037a92b260891091e81815a0a"
-SRC_URI[archive.sha256sum] = "1dffb3542271c8ce964066d561474caec5b639d6588b257b21cfb8225a15d2b4"
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libXcursor"
diff --git a/recipes/xorg-lib/libxdamage_1.0.4.bb b/recipes/xorg-lib/libxdamage_1.0.4.bb
deleted file mode 100644
index 452c634..0000000
--- a/recipes/xorg-lib/libxdamage_1.0.4.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Damage extension library."
-LICENSE = "BSD-X"
-DEPENDS += " virtual/libx11 damageproto libxfixes fixesproto xextproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "4d0eece7a8372a7754db1de08c2be324"
-SRC_URI[archive.sha256sum] = "5df90f0efa77e1d6f9e1768a2b0adfc896d09c7a3d8680ed0980511b3625c636"
-
-XORG_PN = "libXdamage"
diff --git a/recipes/xorg-lib/libxdamage_1.1.1.bb b/recipes/xorg-lib/libxdamage_1.1.1.bb
deleted file mode 100644
index cb7eca1..0000000
--- a/recipes/xorg-lib/libxdamage_1.1.1.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 damaged region extension library"
-LICENSE = "BSD-X"
-DEPENDS += "damageproto libxfixes"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "ac0ce6b0063a9858c8f24ddb4c60487d"
-SRC_URI[archive.sha256sum] = "0102754db23952a1c3adf7881bbf191f91ca3e3d183e1b0179452bce932fae2e"
-
-XORG_PN = "libXdamage"
diff --git a/recipes/xorg-lib/libxdmcp_1.0.2.bb b/recipes/xorg-lib/libxdmcp_1.0.2.bb
deleted file mode 100644
index 1226afb..0000000
--- a/recipes/xorg-lib/libxdmcp_1.0.2.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Display Manager Control Protocol library"
-DEPENDS += "xproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "10facf2bc7cbd5e5c1a698b8a210a582"
-SRC_URI[archive.sha256sum] = "f3e50c1847599145c22784a2f15818821960652ee91d21d905817fb7c10f96a8"
-
-BBCLASSEXTEND = "native nativesdk"
-
-XORG_PN = "libXdmcp"
diff --git a/recipes/xorg-lib/libxext_1.0.2.bb b/recipes/xorg-lib/libxext_1.0.2.bb
deleted file mode 100644
index 02326de..0000000
--- a/recipes/xorg-lib/libxext_1.0.2.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Server Extension library"
-PRIORITY = "optional"
-DEPENDS += " xproto virtual/libx11 xextproto libxau"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "cce89c5b941a493512b534f4847c6111"
-SRC_URI[archive.sha256sum] = "368e4cf5117febd998e6fc40d096b3af19a571adccc5ed49b9d16e482b3a8f8e"
-
-BBCLASSEXTEND = "native nativesdk"
-
-XORG_PN = "libXext"
diff --git a/recipes/xorg-lib/libxext_1.0.3.bb b/recipes/xorg-lib/libxext_1.0.3.bb
deleted file mode 100644
index f8d76b4..0000000
--- a/recipes/xorg-lib/libxext_1.0.3.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 miscellaneous extension library"
-DEPENDS += "xproto virtual/libx11 xextproto libxau"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "1bf6fa1c26f9957d7cc0bd90b038dfa6"
-SRC_URI[archive.sha256sum] = "2d706baf206d1cb422c8e0ceb6c5a8546bc3f0587cf090eba51e75a295d9c3f0"
-
-BBCLASSEXTEND = "native nativesdk"
-
-XORG_PN = "libXext"
diff --git a/recipes/xorg-lib/libxext_1.0.4.bb b/recipes/xorg-lib/libxext_1.0.4.bb
deleted file mode 100644
index 1317e5c..0000000
--- a/recipes/xorg-lib/libxext_1.0.4.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 miscellaneous extension library"
-DEPENDS += "xproto virtual/libx11 xextproto libxau"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "a91f1f722ac80c597cf0b75dcb8b48c0"
-SRC_URI[archive.sha256sum] = "2dfd8eace1cafacc87b4055c57efeb771a740e24141d3f113de58c2a9eebd21f"
-
-BBCLASSEXTEND = "native nativesdk"
-
-XORG_PN = "libXext"
diff --git a/recipes/xorg-lib/libxext_1.0.5.bb b/recipes/xorg-lib/libxext_1.0.5.bb
deleted file mode 100644
index 40dbece..0000000
--- a/recipes/xorg-lib/libxext_1.0.5.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 miscellaneous extension library"
-DEPENDS += "xproto virtual/libx11 xextproto libxau libxdmcp"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "aa11d859cc8e9a0bad3bb55e1666547b"
-SRC_URI[archive.sha256sum] = "1280af98466cb4484a89858ede3347ba9d7785baeb80b11f2066142dc2317d97"
-
-BBCLASSEXTEND = "native nativesdk"
-
-XORG_PN = "libXext"
diff --git a/recipes/xorg-lib/libxfixes_4.0.3.bb b/recipes/xorg-lib/libxfixes_4.0.3.bb
deleted file mode 100644
index d574764..0000000
--- a/recipes/xorg-lib/libxfixes_4.0.3.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Fixes extension library."
-LICENSE = "BSD-X"
-DEPENDS += "virtual/libx11 xproto fixesproto xextproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "1990d19725a3c7f32290037f02d3737f"
-SRC_URI[archive.sha256sum] = "547e093c5037c4b85ce653ce26f5bd70a97b177f9b582f5351a626d8e0a829dd"
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libXfixes"
diff --git a/recipes/xorg-lib/libxfont/builtinreaddirectory-no-side-effect.patch b/recipes/xorg-lib/libxfont/builtinreaddirectory-no-side-effect.patch
deleted file mode 100644
index dd30743..0000000
--- a/recipes/xorg-lib/libxfont/builtinreaddirectory-no-side-effect.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-commit 7670d4a2720c61fbc7b989fed14c676f04ac3ad1
-Author: Dodji Seketeli <dodji at openedhand.com>
-Date:   Mon Jul 16 12:24:34 2007 +0200
-
-    Remove side effects from BuiltinReadDirectory()
-    
-    The first time BuiltinReadDirectory() is called,
-    save the content of builtin_dir and builtin_alias,
-    before calling FontFileAddFontFile(), because that fonction
-    will modify those.
-    
-    Then, in subsequent calls to BuiltinReadDirectory(), restore
-    builtin_dir and builtin_alias so that the side effect incurred
-    by the first call disappears.
-
-diff --git a/src/builtins/dir.c b/src/builtins/dir.c
-index c272449..97f1e1e 100644
---- a/src/builtins/dir.c
-+++ b/src/builtins/dir.c
-@@ -29,6 +29,133 @@
- #endif
- #include "builtin.h"
- 
-+BuiltinDirPtr
-+BuiltinDirsDup (const BuiltinDirPtr a_dirs,
-+                int a_dirs_len)
-+{
-+    BuiltinDirPtr dirs=NULL ;
-+    int i=0 ;
-+
-+    if (!a_dirs)
-+        return NULL ;
-+
-+    dirs = xcalloc (a_dirs_len, sizeof (BuiltinDirRec)) ;
-+    if (!dirs)
-+        return NULL ;
-+
-+    for (i=0; i < a_dirs_len; i++) {
-+        int len = strlen (a_dirs[i].file_name) ;
-+        dirs[i].file_name = xcalloc (1, len) ;
-+        memmove (dirs[i].file_name, a_dirs[i].file_name, len);
-+        len = strlen (a_dirs[i].font_name) ;
-+        dirs[i].font_name = xcalloc (1, len) ;
-+        memmove (dirs[i].font_name, a_dirs[i].font_name, len);
-+    }
-+    return dirs ;
-+}
-+
-+/**
-+ * Copy a_save back into a_cur
-+ * @param a_cur the instance of BuiltinDir to restore
-+ * @param a_saved the saved instance of BuiltinDir to copy into a_cur
-+ * @return 0 if went okay, 1 otherwise.
-+ */
-+int
-+BuiltinDirRestore (BuiltinDirPtr a_cur,
-+                   const BuiltinDirPtr a_saved)
-+{
-+    if (!a_cur)
-+        return 1 ;
-+    if (!a_saved)
-+        return 0 ;
-+
-+    if (a_saved->font_name)
-+        memmove (a_cur->font_name, a_saved->font_name, strlen (a_saved->font_name)) ;
-+    return 0 ;
-+}
-+
-+
-+int
-+BuiltinDirsRestore (BuiltinDirPtr a_cur_tab,
-+                    const BuiltinDirPtr a_saved_tab,
-+                    int a_tab_len)
-+{
-+    int i=0 ;
-+
-+    if (!a_cur_tab)
-+        return 1 ;
-+    if (!a_saved_tab)
-+        return 0 ;
-+
-+    for (i=0 ; i < a_tab_len; i++) {
-+        if (BuiltinDirRestore (&a_cur_tab[i], &a_saved_tab[i]))
-+            return 1 ;
-+    }
-+    return 0 ;
-+}
-+
-+BuiltinAliasPtr
-+BuiltinAliasesDup (const BuiltinAliasPtr a_aliases,
-+                   int a_aliases_len)
-+{
-+    BuiltinAliasPtr aliases=NULL ;
-+    int i=0 ;
-+
-+    if (!a_aliases)
-+        return NULL ;
-+
-+    aliases = xcalloc (a_aliases_len, sizeof (BuiltinAliasRec)) ;
-+    if (!aliases)
-+        return NULL ;
-+
-+    for (i=0; i < a_aliases_len; i++) {
-+        int len = strlen (a_aliases[i].font_name) ;
-+        aliases[i].font_name = xcalloc (1, len) ;
-+        memmove (aliases[i].font_name, a_aliases[i].font_name, len);
-+    }
-+    return aliases ;
-+}
-+
-+/**
-+ * Copy a_save back into a_cur
-+ * @param a_cur the instance of BuiltinAlias to restore
-+ * @param a_saved the saved instance of BuiltinAlias to copy into a_cur
-+ * @return 0 if went okay, 1 otherwise.
-+ */
-+int
-+BuiltinAliasRestore (BuiltinAliasPtr a_cur,
-+                     const BuiltinAliasPtr a_save)
-+{
-+    if (!a_cur)
-+        return 1 ;
-+    if (!a_save)
-+        return 0 ;
-+    if (a_save->alias_name)
-+        memmove (a_cur->alias_name, a_save->alias_name, strlen (a_save->alias_name)) ;
-+    if (a_save->font_name)
-+        memmove (a_cur->font_name, a_save->font_name, strlen (a_save->font_name)) ;
-+    return 0 ;
-+}
-+
-+int
-+BuiltinAliasesRestore (BuiltinAliasPtr a_cur_tab,
-+                       const BuiltinAliasPtr a_saved_tab,
-+                       int a_tab_len)
-+{
-+    int i=0 ;
-+
-+    if (!a_cur_tab)
-+        return 1 ;
-+    if (!a_saved_tab)
-+        return 0 ;
-+
-+    for (i=0 ; i < a_tab_len; i++) {
-+        if (BuiltinAliasRestore (&a_cur_tab[i], &a_saved_tab[i]))
-+            return 1 ;
-+    }
-+    return 0 ;
-+}
-+
- int
- BuiltinReadDirectory (char *directory, FontDirectoryPtr *pdir)
- {
-@@ -36,6 +163,34 @@ BuiltinReadDirectory (char *directory, FontDirectoryPtr *pdir)
-     int			i;
- 
-     dir = FontFileMakeDir ("", builtin_dir_count);
-+    static BuiltinDirPtr saved_builtin_dir ;
-+    static BuiltinAliasPtr saved_builtin_alias ;
-+
-+
-+    if (saved_builtin_dir)
-+    {
-+        BuiltinDirsRestore ((BuiltinDirPtr) builtin_dir,
-+                            saved_builtin_dir,
-+                            builtin_dir_count) ;
-+    }
-+    else
-+    {
-+        saved_builtin_dir = BuiltinDirsDup ((const BuiltinDirPtr) builtin_dir,
-+                                            builtin_dir_count) ;
-+    }
-+
-+    if (saved_builtin_alias)
-+    {
-+        BuiltinAliasesRestore ((BuiltinAliasPtr) builtin_alias,
-+                               saved_builtin_alias,
-+                               builtin_alias_count) ;
-+    }
-+    else
-+    {
-+        saved_builtin_alias = BuiltinAliasesDup ((const BuiltinAliasPtr) builtin_alias,
-+                                                 builtin_alias_count) ;
-+    }
-+
-     for (i = 0; i < builtin_dir_count; i++)
-     {
- 	if (!FontFileAddFontFile (dir,
diff --git a/recipes/xorg-lib/libxfont/no-scalable-crash.patch b/recipes/xorg-lib/libxfont/no-scalable-crash.patch
deleted file mode 100644
index 90bded6..0000000
--- a/recipes/xorg-lib/libxfont/no-scalable-crash.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- /tmp/fontdir.c	2006-08-01 16:17:22.000000000 +0200
-+++ libXfont-1.2.0/src/fontfile/fontdir.c	2006-08-01 16:20:37.248306000 +0200
-@@ -695,6 +695,11 @@
-      */
-     if (isscale)
-     {
-+	/* If the fontname says it is scalable, make sure that the
-+  	 * renderer supports OpenScalable and GetInfoScalable.
-+	 */
-+       if (renderer->OpenScalable && renderer->GetInfoScalable)
-+       {
- 	if (vals.values_supplied & SIZE_SPECIFY_MASK)
- 	{
- 	    bzero((char *)&zeroVals, sizeof(zeroVals));
-@@ -794,6 +799,7 @@
-                                            bitmap->name.name);
-             }
- 	}
-+       }
-     }
-     return TRUE;
- }
diff --git a/recipes/xorg-lib/libxfont_1.2.7.bb b/recipes/xorg-lib/libxfont_1.2.7.bb
deleted file mode 100644
index b470c8b..0000000
--- a/recipes/xorg-lib/libxfont_1.2.7.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X font library (used by the X server)."
-PRIORITY = "optional"
-LICENSE = "BSD-X"
-DEPENDS += " freetype fontcacheproto zlib xproto xtrans fontsproto libfontenc"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://no-scalable-crash.patch"
-SRC_URI[archive.md5sum] = "2f2085310f75900044d9dcd469637d26"
-SRC_URI[archive.sha256sum] = "2f8c004c0b914d460e6fd2b48d8b425cf4778d415467fc1f1d938b200462d18b"
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libXfont"
diff --git a/recipes/xorg-lib/libxfont_1.2.8.bb b/recipes/xorg-lib/libxfont_1.2.8.bb
deleted file mode 100644
index 3794cf2..0000000
--- a/recipes/xorg-lib/libxfont_1.2.8.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X font library (used by the X server)."
-PRIORITY = "optional"
-LICENSE = "BSD-X"
-DEPENDS += " freetype fontcacheproto zlib xproto xtrans fontsproto libfontenc"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://no-scalable-crash.patch"
-SRC_URI[archive.md5sum] = "83b8e21f6ee22512a8f72ba51e2d74f6"
-SRC_URI[archive.sha256sum] = "374a2ca12f62a4d9f09a17a34765a5289cefa9db7f9f0913e1c3731b4088aad8"
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libXfont"
diff --git a/recipes/xorg-lib/libxfont_1.3.0.bb b/recipes/xorg-lib/libxfont_1.3.0.bb
deleted file mode 100644
index c3c9377..0000000
--- a/recipes/xorg-lib/libxfont_1.3.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 font rasterisation library"
-LICENSE = "BSD-X"
-DEPENDS += "freetype fontcacheproto xtrans fontsproto libfontenc"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://no-scalable-crash.patch \
-            file://builtinreaddirectory-no-side-effect.patch"
-SRC_URI[archive.md5sum] = "d1d3fa170d74b066f1f23ca8574e7c90"
-SRC_URI[archive.sha256sum] = "07567b9880f28d1a404389c024a185419bfe81136aef3d9eda52407f34c3d3dd"
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libXfont"
diff --git a/recipes/xorg-lib/libxfont_1.3.1.bb b/recipes/xorg-lib/libxfont_1.3.1.bb
deleted file mode 100644
index 671fd58..0000000
--- a/recipes/xorg-lib/libxfont_1.3.1.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 font rasterisation library"
-LICENSE = "BSD-X"
-DEPENDS += "freetype fontcacheproto xtrans fontsproto libfontenc"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://no-scalable-crash.patch"
-SRC_URI[archive.md5sum] = "b2f396b62633819bbdd9748383876e21"
-SRC_URI[archive.sha256sum] = "dcfb7dc980a16ad98ac984b98321148864ea8b4637d3dd3773e483a14158a9b1"
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libXfont"
diff --git a/recipes/xorg-lib/libxfont_1.3.2.bb b/recipes/xorg-lib/libxfont_1.3.2.bb
deleted file mode 100644
index 250433a..0000000
--- a/recipes/xorg-lib/libxfont_1.3.2.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 font rasterisation library"
-LICENSE = "BSD-X"
-DEPENDS += "freetype fontcacheproto xtrans fontsproto libfontenc"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://no-scalable-crash.patch"
-SRC_URI[archive.md5sum] = "64f510ebf9679f3a97a3d633cbee4f50"
-SRC_URI[archive.sha256sum] = "c167cfd529b7c67f496ee0bed3c0b43e0107de0f689d387c1c0e23ef7cf3d2f2"
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libXfont"
diff --git a/recipes/xorg-lib/libxfont_1.3.3.bb b/recipes/xorg-lib/libxfont_1.3.3.bb
deleted file mode 100644
index 65b5415..0000000
--- a/recipes/xorg-lib/libxfont_1.3.3.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 font rasterisation library"
-LICENSE = "BSD-X"
-DEPENDS += "freetype fontcacheproto xtrans fontsproto libfontenc"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "4f174b9613f87cf00d731da428a1b194"
-SRC_URI[archive.sha256sum] = "6171e6bca4bd6333611bd9c63cccc8e8e412d876c72097f0dddc490a9df51d5a"
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libXfont"
diff --git a/recipes/xorg-lib/libxfontcache_1.0.4.bb b/recipes/xorg-lib/libxfontcache_1.0.4.bb
deleted file mode 100644
index f4a079e..0000000
--- a/recipes/xorg-lib/libxfontcache_1.0.4.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X-TrueType font cache extension client library"
-DEPENDS += "libxext fontcacheproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "1adca018aa7bf2d215f20a69c10828ad"
-SRC_URI[archive.sha256sum] = "ffe747cfbf81cdd862af1b05d021ad1ab83b623eab5b32b0a618efb4c0f3e01c"
-
-XORG_PN = "libXfontcache"
diff --git a/recipes/xorg-lib/libxft_2.1.12.bb b/recipes/xorg-lib/libxft_2.1.12.bb
deleted file mode 100644
index 14beef39..0000000
--- a/recipes/xorg-lib/libxft_2.1.12.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "FreeType-based font drawing library for X"
-DEPENDS += "libxrender freetype fontconfig"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "1309301e2d979bd475dc58325cb8c056"
-SRC_URI[archive.sha256sum] = "68b46f85caaf0b30c876bd983abe144c25755bee7532e8738ab7ebe29a428986"
-
-FILES_${PN} = "${libdir}/lib*${SOLIBS}"
-FILES_${PN}-dev = "${includedir} ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la \
-                ${libdir}/*.a ${libdir}/pkgconfig \
-                ${datadir}/aclocal ${bindir} ${sbindir}"
-
-python do_package() {
-        if bb.data.getVar('DEBIAN_NAMES', d, 1):
-            bb.data.setVar('PKG_${PN}', 'libxft2', d)
-        bb.build.exec_func('package_do_package', d)
-}
-
-XORG_PN = "libXft"
diff --git a/recipes/xorg-lib/libxft_2.1.13.bb b/recipes/xorg-lib/libxft_2.1.13.bb
deleted file mode 100644
index a2219c9..0000000
--- a/recipes/xorg-lib/libxft_2.1.13.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "FreeType-based font drawing library for X"
-DEPENDS += "libxrender freetype fontconfig"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "bc8881851f3bd8dcc625fac37350a1c6"
-SRC_URI[archive.sha256sum] = "ce7688258af34c14af421bcfb306d4310245b727d2417ac968b7f6b2facfde8c"
-
-FILES_${PN} = "${libdir}/lib*${SOLIBS}"
-FILES_${PN}-dev = "${includedir} ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la \
-                ${libdir}/*.a ${libdir}/pkgconfig \
-                ${datadir}/aclocal ${bindir} ${sbindir}"
-
-python do_package() {
-        if bb.data.getVar('DEBIAN_NAMES', d, 1):
-            bb.data.setVar('PKG_${PN}', 'libxft2', d)
-        bb.build.exec_func('package_do_package', d)
-}
-
-XORG_PN = "libXft"
diff --git a/recipes/xorg-lib/libxi_1.0.2.bb b/recipes/xorg-lib/libxi_1.0.2.bb
deleted file mode 100644
index 12e49f0..0000000
--- a/recipes/xorg-lib/libxi_1.0.2.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Input extension library."
-DEPENDS += " xproto virtual/libx11 xextproto libxext inputproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "4a5207a29a6b220e5462129854689844"
-SRC_URI[archive.sha256sum] = "7e6339539d3d0a4fc95cc23ca2b13ae67dd783e011b3cc5ca76040e376bff57f"
-
-XORG_PN = "libXi"
diff --git a/recipes/xorg-lib/libxi_1.1.0.bb b/recipes/xorg-lib/libxi_1.1.0.bb
deleted file mode 100644
index 3ad5dfc..0000000
--- a/recipes/xorg-lib/libxi_1.1.0.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Input extension library."
-DEPENDS += " xproto virtual/libx11 xextproto libxext inputproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "c25abbe604029855eb11a3a75fb1f386"
-SRC_URI[archive.sha256sum] = "0f90d7e27d8a7d6bccf9350b6283ffe122e5347fa51d4ea9055653b297339989"
-
-XORG_PN = "libXi"
diff --git a/recipes/xorg-lib/libxi_1.1.2.bb b/recipes/xorg-lib/libxi_1.1.2.bb
deleted file mode 100644
index bff8ba4..0000000
--- a/recipes/xorg-lib/libxi_1.1.2.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Input extension library"
-DEPENDS += "libxext inputproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "9c4dd85f3e2a75bfb60bd288502bc288"
-SRC_URI[archive.sha256sum] = "4deda13613f03e4524d3cf0ac14b9e20be5044d415cb8478713ecbe47f4de862"
-
-XORG_PN = "libXi"
diff --git a/recipes/xorg-lib/libxi_1.1.3.bb b/recipes/xorg-lib/libxi_1.1.3.bb
deleted file mode 100644
index 039bfc8..0000000
--- a/recipes/xorg-lib/libxi_1.1.3.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Input extension library"
-DEPENDS += "libxext inputproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "7c510abb0cad8dc20493fb27ff7859d8"
-SRC_URI[archive.sha256sum] = "c77a5bbe97d0d0a6493adefcf1bd57aca91bc33279633b3f6cf1d2bb8812153f"
-
-XORG_PN = "libXi"
diff --git a/recipes/xorg-lib/libxi_1.2.0.bb b/recipes/xorg-lib/libxi_1.2.0.bb
deleted file mode 100644
index e6b3da7..0000000
--- a/recipes/xorg-lib/libxi_1.2.0.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Input extension library"
-DEPENDS += "libxext inputproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "4b88e07d7dd77ca1e786f09066b58c02"
-SRC_URI[archive.sha256sum] = "7c0125ffb864e121ebfb5a20b1cfdff60562c2f2dfbb4e77c5eac81f36e15f3a"
-
-XORG_PN = "libXi"
diff --git a/recipes/xorg-lib/libxinerama_1.0.2.bb b/recipes/xorg-lib/libxinerama_1.0.2.bb
deleted file mode 100644
index 786c294..0000000
--- a/recipes/xorg-lib/libxinerama_1.0.2.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Xinerama extension library"
-DEPENDS += "libxext xineramaproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "f6fb08eafd3c2909d515f1a07bfca8fd"
-SRC_URI[archive.sha256sum] = "d245d7ae4c766ecbc4e5cc2666e2e78198d8386dbaa06b35c3d1b1457ee5d03d"
-
-XORG_PN = "libXinerama"
diff --git a/recipes/xorg-lib/libxinerama_1.0.3.bb b/recipes/xorg-lib/libxinerama_1.0.3.bb
deleted file mode 100644
index 4e7cc91..0000000
--- a/recipes/xorg-lib/libxinerama_1.0.3.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Xinerama extension library"
-DEPENDS += "libxext xineramaproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "cd9f7c46439ac40e0517a302d2434d2c"
-SRC_URI[archive.sha256sum] = "07b3564cd56154c20580b56230b7a95d74fe6582c80cedf0550d8d7955181219"
-
-XORG_PN = "libXinerama"
diff --git a/recipes/xorg-lib/libxkbfile_1.0.4.bb b/recipes/xorg-lib/libxkbfile_1.0.4.bb
deleted file mode 100644
index d02cec5..0000000
--- a/recipes/xorg-lib/libxkbfile_1.0.4.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 keyboard file manipulation library"
-LICENSE = "GPL"
-DEPENDS += "virtual/libx11 kbproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "12b4ceb5d42b520228b5fb40a96ae6c5"
-SRC_URI[archive.sha256sum] = "468ade4eaa3951a7c34b6ae1c290ab1a1d364ee36c5c455ef0df15550825b8ae"
-
-BBCLASSEXTEND = "native"
diff --git a/recipes/xorg-lib/libxkbfile_1.0.5.bb b/recipes/xorg-lib/libxkbfile_1.0.5.bb
deleted file mode 100644
index 60d3a1b..0000000
--- a/recipes/xorg-lib/libxkbfile_1.0.5.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 keyboard file manipulation library"
-LICENSE = "GPL"
-DEPENDS += "virtual/libx11 kbproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "0726a845fe5a56551de2718c9f6b0e35"
-SRC_URI[archive.sha256sum] = "0ab628271fc9cb6d05f861d9823573088d81d510aca95b87ac0504b2e558965f"
-
-BBCLASSEXTEND = "native"
diff --git a/recipes/xorg-lib/libxmu_1.0.3.bb b/recipes/xorg-lib/libxmu_1.0.3.bb
deleted file mode 100644
index b5bc535..0000000
--- a/recipes/xorg-lib/libxmu_1.0.3.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 miscellaneous utility library"
-DEPENDS += "libxt libxext"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "b926b95b811ece3e19cd590db85ee615"
-SRC_URI[archive.sha256sum] = "b56e308e36da8d9cb48433ddb81fd04e26b4f1c695586ac8106ac48a35466d66"
-
-PACKAGES =+ "libxmuu libxmuu-dev"
-
-FILES_libxmuu = "${libdir}/libXmuu.so.*"
-FILES_libxmuu-dev = "${libdir}/libXmuu.so"
-
-LEAD_SONAME = "libXmu"
-
-XORG_PN = "libXmu"
diff --git a/recipes/xorg-lib/libxmu_1.0.4.bb b/recipes/xorg-lib/libxmu_1.0.4.bb
deleted file mode 100644
index 7ebe4c8..0000000
--- a/recipes/xorg-lib/libxmu_1.0.4.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 miscellaneous utility library"
-DEPENDS += "libxt libxext"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "fb372a5f3ab42b5ba16d7af4d833a0cb"
-SRC_URI[archive.sha256sum] = "f83c00d6ed8f4c08effa9dcc2d7f1ff6f5a753f2b9fe1babda16618c2afa18f0"
-
-PACKAGES =+ "libxmuu libxmuu-dev"
-
-FILES_libxmuu = "${libdir}/libXmuu.so.*"
-FILES_libxmuu-dev = "${libdir}/libXmuu.so"
-
-LEAD_SONAME = "libXmu"
-
-XORG_PN = "libXmu"
diff --git a/recipes/xorg-lib/libxpm_3.5.6.bb b/recipes/xorg-lib/libxpm_3.5.6.bb
deleted file mode 100644
index 977f015..0000000
--- a/recipes/xorg-lib/libxpm_3.5.6.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Pixmap library"
-LICENSE = "X-BSD"
-DEPENDS += "libxext libsm libxt"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "37b7d1826c6a02107269632a93b8791f"
-SRC_URI[archive.sha256sum] = "2d5c5242b8417db6aa758e5be387de33385d9960ff21c801af7d6a4730b4fd0d"
-
-PACKAGES =+ "sxpm cxpm"
-
-FILES_cxpm = "${bindir}/cxpm"
-FILES_sxpm = "${bindir}/sxpm"
-
-XORG_PN = "libXpm"
diff --git a/recipes/xorg-lib/libxpm_3.5.7.bb b/recipes/xorg-lib/libxpm_3.5.7.bb
deleted file mode 100644
index b8ed813..0000000
--- a/recipes/xorg-lib/libxpm_3.5.7.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Pixmap library"
-LICENSE = "X-BSD"
-DEPENDS += "libxext libsm libxt"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "cd15ee542d9f515538b4462a6f79d977"
-SRC_URI[archive.sha256sum] = "64701ae67ce5b0797307b75d8255bec3a0d371d0c50715ea618f5a68bcc92baa"
-
-PACKAGES =+ "sxpm cxpm"
-
-FILES_cxpm = "${bindir}/cxpm"
-FILES_sxpm = "${bindir}/sxpm"
-
-XORG_PN = "libXpm"
diff --git a/recipes/xorg-lib/libxrandr_1.1.2.bb b/recipes/xorg-lib/libxrandr_1.1.2.bb
deleted file mode 100644
index 4fb614c..0000000
--- a/recipes/xorg-lib/libxrandr_1.1.2.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Resize and Rotate extension library."
-LICENSE = "BSD-X"
-DEPENDS += " virtual/libx11 randrproto libxext xextproto libxrender renderproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "962946952a01650bb43206043a3c0e12"
-SRC_URI[archive.sha256sum] = "ba5adedc37da835a5c9e5a5d457dce13feead64fc364bc4719c41720ca0a3c50"
-
-BBCLASSEXTEND = "nativesdk"
-
-XORG_PN = "libXrandr"
diff --git a/recipes/xorg-lib/libxrandr_1.2.2.bb b/recipes/xorg-lib/libxrandr_1.2.2.bb
deleted file mode 100644
index 2038f8a..0000000
--- a/recipes/xorg-lib/libxrandr_1.2.2.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Resize and Rotate extension library"
-LICENSE = "BSD-X"
-DEPENDS += "randrproto libxrender libxext"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "1b244b5d19f0ccab01d7083436cd3558"
-SRC_URI[archive.sha256sum] = "206f8dc850f12b1213fb73dbef09fafa1bb8fb8c3ddfe4d39721c1e2dec12a98"
-
-BBCLASSEXTEND = "nativesdk"
-
-XORG_PN = "libXrandr"
diff --git a/recipes/xorg-lib/libxrandr_1.2.3.bb b/recipes/xorg-lib/libxrandr_1.2.3.bb
deleted file mode 100644
index 22ab29d..0000000
--- a/recipes/xorg-lib/libxrandr_1.2.3.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Resize and Rotate extension library"
-LICENSE = "BSD-X"
-DEPENDS += "randrproto libxrender libxext"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "5cd67cc02a50c9644ba0a1846ea3b08e"
-SRC_URI[archive.sha256sum] = "f8edfe26b8c4c3677a3a949f81a8b09a5fad62972020bfd230401e11cc0ed267"
-
-BBCLASSEXTEND = "nativesdk"
-
-XORG_PN = "libXrandr"
diff --git a/recipes/xorg-lib/libxrender_0.9.2.bb b/recipes/xorg-lib/libxrender_0.9.2.bb
deleted file mode 100644
index c67495a..0000000
--- a/recipes/xorg-lib/libxrender_0.9.2.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Rendering Extension client library"
-LICENSE = "BSD-X"
-DEPENDS += "virtual/libx11 renderproto xproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "2f1b2c6e8dcbcb6d760e59f445abd92c"
-SRC_URI[archive.sha256sum] = "0f749183ab1a0ece14d33c3299b3f70893122349c0bfa9d7bd0e66ce19d1802a"
-
-BBCLASSEXTEND = "native nativesdk"
-
-XORG_PN = "libXrender"
diff --git a/recipes/xorg-lib/libxrender_0.9.3.bb b/recipes/xorg-lib/libxrender_0.9.3.bb
deleted file mode 100644
index 82b0143..0000000
--- a/recipes/xorg-lib/libxrender_0.9.3.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Rendering Extension client library"
-LICENSE = "BSD-X"
-DEPENDS += "virtual/libx11 renderproto xproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "307132fce2e551ad2c641bddf8480f16"
-SRC_URI[archive.sha256sum] = "9882ba2d74e9ca5cfd0c2231ac8eba14d8fc59d538c787fa639f8d77c996bbef"
-
-BBCLASSEXTEND = "native nativesdk"
-
-XORG_PN = "libXrender"
diff --git a/recipes/xorg-lib/libxrender_0.9.4.bb b/recipes/xorg-lib/libxrender_0.9.4.bb
deleted file mode 100644
index 4543a9e..0000000
--- a/recipes/xorg-lib/libxrender_0.9.4.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Rendering Extension client library"
-LICENSE = "BSD-X"
-DEPENDS += "virtual/libx11 renderproto xproto libxdmcp"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "dc266e850c51368f964e0d67bf5fb5e6"
-SRC_URI[archive.sha256sum] = "5682d343dd4e7ef291a6577e956c331946ce5801d8fa076284a01b41de3017ec"
-
-BBCLASSEXTEND = "native nativesdk"
-
-XORG_PN = "libXrender"
diff --git a/recipes/xorg-lib/libxres_1.0.3.bb b/recipes/xorg-lib/libxres_1.0.3.bb
deleted file mode 100644
index 9a1aa01..0000000
--- a/recipes/xorg-lib/libxres_1.0.3.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Resource extension library"
-DEPENDS += "libxext resourceproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "de66ffb657aba64c9d6dbdeabb757f3e"
-SRC_URI[archive.sha256sum] = "a6d5ba7573f5ec0f091095f01b51d1e671dd0f14acb5b8559cdf366e398a0230"
-
-XORG_PN = "libXres"
diff --git a/recipes/xorg-lib/libxscrnsaver_1.1.2.bb b/recipes/xorg-lib/libxscrnsaver_1.1.2.bb
deleted file mode 100644
index db164d2..0000000
--- a/recipes/xorg-lib/libxscrnsaver_1.1.2.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Screen Saver extension library"
-LICENSE = "GPL"
-DEPENDS += "libxext scrnsaverproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "ac2d697dd02f51e5c15f7104f4be5328"
-SRC_URI[archive.sha256sum] = "6c75debca746060e0c2408a6ca119613ae02d1054adebd4b26ff8beee79bcc67"
-
-RREPLACES_${PN} = "libxss"
-
-XORG_PN = "libXScrnSaver"
diff --git a/recipes/xorg-lib/libxscrnsaver_1.1.3.bb b/recipes/xorg-lib/libxscrnsaver_1.1.3.bb
deleted file mode 100644
index 2cc2c81..0000000
--- a/recipes/xorg-lib/libxscrnsaver_1.1.3.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Screen Saver extension library"
-LICENSE = "GPL"
-DEPENDS += "libxext scrnsaverproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "93f84b6797f2f29cae1ce23b0355d00d"
-SRC_URI[archive.sha256sum] = "4b90245093c15a24aaaf2fc6e09f075137aad994f72043e098597997d9b2c988"
-
-RREPLACES_${PN} = "libxss"
-
-XORG_PN = "libXScrnSaver"
diff --git a/recipes/xorg-lib/libxt/pr10970-header-fix.patch b/recipes/xorg-lib/libxt/pr10970-header-fix.patch
deleted file mode 100644
index 2acafb8..0000000
--- a/recipes/xorg-lib/libxt/pr10970-header-fix.patch
+++ /dev/null
@@ -1,512 +0,0 @@
-diff --git a/include/X11/CallbackI.h b/include/X11/CallbackI.h
-index 4ae08ab..64e8152 100644
---- a/include/X11/CallbackI.h
-+++ b/include/X11/CallbackI.h
-@@ -58,6 +58,8 @@ typedef XrmResource **CallbackTable;
- #define _XtCBCalling 1
- #define _XtCBFreeAfterCalling 2
- 
-+_XFUNCPROTOBEGIN
-+
- typedef struct internalCallbackRec {
-     unsigned short count;
-     char	   is_padded;	/* contains NULL padding for external form */
-@@ -115,3 +117,5 @@ extern void _XtCallConditionalCallbackList(
-     XtPointer			/* call_data */,
-     _XtConditionProc		/* cond_proc */
- );
-+
-+_XFUNCPROTOEND
-diff --git a/include/X11/CompositeP.h b/include/X11/CompositeP.h
-index ed055b2..e93275a 100644
---- a/include/X11/CompositeP.h
-+++ b/include/X11/CompositeP.h
-@@ -52,6 +52,8 @@ SOFTWARE.
- 
- #include <X11/Composite.h>
- 
-+_XFUNCPROTOBEGIN
-+
- /************************************************************************
-  *
-  * Additional instance fields for widgets of (sub)class 'Composite' 
-@@ -101,6 +103,8 @@ typedef struct _CompositeClassRec {
- 
- externalref CompositeClassRec compositeClassRec;
- 
-+_XFUNCPROTOEND
-+
- #define XtCompositeExtensionVersion 2L
- #define XtInheritGeometryManager ((XtGeometryHandler) _XtInherit)
- #define XtInheritChangeManaged ((XtWidgetProc) _XtInherit)
-diff --git a/include/X11/ConstrainP.h b/include/X11/ConstrainP.h
-index a90d19a..7030a34 100644
---- a/include/X11/ConstrainP.h
-+++ b/include/X11/ConstrainP.h
-@@ -52,6 +52,8 @@ SOFTWARE.
- 
- #include <X11/Constraint.h>
- 
-+_XFUNCPROTOBEGIN
-+
- typedef struct _ConstraintPart {
-     XtPointer   mumble;		/* No new fields, keep C compiler happy */
- } ConstraintPart;
-@@ -88,6 +90,8 @@ typedef struct _ConstraintClassRec {
- 
- externalref ConstraintClassRec constraintClassRec;
- 
-+_XFUNCPROTOEND
-+
- #define XtConstraintExtensionVersion 1L
- 
- #endif /* _XtConstraintP_h */
-diff --git a/include/X11/Constraint.h b/include/X11/Constraint.h
-index 9bb962e..b8bd902 100644
---- a/include/X11/Constraint.h
-+++ b/include/X11/Constraint.h
-@@ -50,11 +50,15 @@ SOFTWARE.
- #ifndef _XtConstraint_h
- #define _XtConstraint_h
- 
-+_XFUNCPROTOBEGIN
-+
- typedef struct _ConstraintClassRec *ConstraintWidgetClass;
- 
- #ifndef CONSTRAINT
- externalref WidgetClass constraintWidgetClass;
- #endif
- 
-+_XFUNCPROTOEND
-+
- #endif /* _XtConstraint_h */
- /* DON'T ADD STUFF AFTER THIS #endif */
-diff --git a/include/X11/ConvertI.h b/include/X11/ConvertI.h
-index 02c0e5c..f3f7fb0 100644
---- a/include/X11/ConvertI.h
-+++ b/include/X11/ConvertI.h
-@@ -48,6 +48,8 @@ SOFTWARE.
- ******************************************************************/
- /* $XFree86: xc/lib/Xt/ConvertI.h,v 1.3 2001/12/14 19:56:09 dawes Exp $ */
- 
-+_XFUNCPROTOBEGIN
-+
- /* Representation types */
- 
- extern	XrmQuark  _XtQString;
-@@ -94,3 +96,4 @@ extern Boolean _XtConvert(
- 
- void _XtConvertInitialize(void);
- 
-+_XFUNCPROTOEND
-diff --git a/include/X11/Core.h b/include/X11/Core.h
-index ff6cb75..e1a7c28 100644
---- a/include/X11/Core.h
-+++ b/include/X11/Core.h
-@@ -53,6 +53,8 @@ SOFTWARE.
- #ifndef _XtCore_h
- #define _XtCore_h
- 
-+_XFUNCPROTOBEGIN
-+
- typedef struct _WidgetClassRec *CoreWidgetClass;
- typedef struct _WidgetRec *CoreWidget;
- externalref WidgetClass coreWidgetClass;
-@@ -62,5 +64,7 @@ externalref WidgetClass widgetClass;
- 
- #endif
- 
-+_XFUNCPROTOEND
-+
- #endif /* _XtCore_h */
- /* DON'T ADD STUFF AFTER THIS #endif */
-diff --git a/include/X11/CoreP.h b/include/X11/CoreP.h
-index e07f085..57836e6 100644
---- a/include/X11/CoreP.h
-+++ b/include/X11/CoreP.h
-@@ -55,6 +55,8 @@ SOFTWARE.
- 
- #include <X11/Core.h>
- 
-+_XFUNCPROTOBEGIN
-+
- externalref int _XtInheritTranslations;
- 
- #define XtInheritTranslations  ((String) &_XtInheritTranslations)
-@@ -167,5 +169,7 @@ typedef struct _WidgetClassRec {
- externalref WidgetClassRec widgetClassRec;
- #define coreClassRec widgetClassRec
- 
-+_XFUNCPROTOEND
-+
- #endif /* _XtCoreP_h */
- /* DON'T ADD STUFF AFTER THIS #endif */
-diff --git a/include/X11/CreateI.h b/include/X11/CreateI.h
-index 87abb1d..e0ca9a3 100644
---- a/include/X11/CreateI.h
-+++ b/include/X11/CreateI.h
-@@ -3,6 +3,8 @@
- #ifndef _XtcreateI_h
- #define _XtcreateI_h
- 
-+_XFUNCPROTOBEGIN
-+
- extern Widget _XtCreateWidget(String name, WidgetClass widget_class,
- 			      Widget parent, ArgList args, Cardinal num_args,
- 			      XtTypedArgList typed_args,
-@@ -18,9 +20,12 @@ extern Widget _XtAppCreateShell(String name, String class,
- 				Cardinal num_typed_args);
- extern Widget _XtCreateHookObj(Screen *screen);
- 
-+_XFUNCPROTOEND
- 
- #include <stdarg.h>
- 
-+_XFUNCPROTOBEGIN
-+
- /* VarCreate.c */
- extern Widget _XtVaOpenApplication(XtAppContext *app_context_return,
- 			_Xconst char* application_class,
-@@ -34,4 +39,6 @@ extern Widget _XtVaAppInitialize(XtAppContext *app_context_return,
- 			int *argc_in_out, String *argv_in_out,
- 			String *fallback_resources, va_list var_args);
- 
-+_XFUNCPROTOEND
-+
- #endif /* _XtcreateI_h */
-diff --git a/include/X11/EventI.h b/include/X11/EventI.h
-index 00858e7..d2d1d0f 100644
---- a/include/X11/EventI.h
-+++ b/include/X11/EventI.h
-@@ -65,6 +65,8 @@ typedef struct _XtGrabRec  *XtGrabList;
- 
- #include "PassivGraI.h"
- 
-+_XFUNCPROTOBEGIN
-+
- extern void _XtEventInitialize(
-     void
- );
-@@ -131,4 +133,6 @@ extern void _XtFillAncestorList(Widget **listPtr, int *maxElemsPtr,
- /* NextEvent.c */
- extern Boolean XtAppPeekEvent_SkipTimer;
- 
-+_XFUNCPROTOEND
-+
- #endif /* _Event_h_ */
-diff --git a/include/X11/HookObjI.h b/include/X11/HookObjI.h
-index c9a22a2..c0858c2 100644
---- a/include/X11/HookObjI.h
-+++ b/include/X11/HookObjI.h
-@@ -29,6 +29,8 @@ in this Software without prior written authorization from The Open Group.
- #ifndef _XtHookObjI_h
- #define _XtHookObjI_h
- 
-+_XFUNCPROTOBEGIN
-+
- /* This object is implementation-dependent and private to the library. */
- 
- typedef struct _HookObjRec *HookObject;
-@@ -66,6 +68,8 @@ typedef struct _HookObjClassRec {
- 
- externalref HookObjClassRec hookObjClassRec;
- 
-+_XFUNCPROTOEND
-+
- #endif /* ifndef _Xt_HookObjI_h */
- 
- 
-diff --git a/include/X11/InitialI.h b/include/X11/InitialI.h
-index c2fe47c..2ae9b74 100644
---- a/include/X11/InitialI.h
-+++ b/include/X11/InitialI.h
-@@ -84,6 +84,8 @@ SOFTWARE.
- #include <X11/Xos.h>
- #include <X11/Xpoll.h>
- 
-+_XFUNCPROTOBEGIN
-+
- typedef struct _TimerEventRec {
-         struct timeval        te_timer_value;
- 	struct _TimerEventRec *te_next;
-@@ -426,4 +428,6 @@ extern XrmDatabase _XtPreparseCommandLine(XrmOptionDescRec *urlist,
- 			String *applName, String *displayName,
- 			String *language);
- 
-+_XFUNCPROTOEND
-+
- #endif /* _XtinitialI_h */
-diff --git a/include/X11/IntrinsicI.h b/include/X11/IntrinsicI.h
-index d749867..d88166f 100644
---- a/include/X11/IntrinsicI.h
-+++ b/include/X11/IntrinsicI.h
-@@ -194,6 +194,8 @@ SOFTWARE.
- #define ERRORDB "/usr/lib/X11/XtErrorDB"
- #endif
- 
-+_XFUNCPROTOBEGIN
-+
- extern String XtCXtToolkitError;
- 
- extern void _XtAllocError(
-@@ -257,5 +259,7 @@ extern char* __XtCalloc (
- #define __XtCalloc XtCalloc
- #endif
- 
-+_XFUNCPROTOEND
-+
- #endif /* _XtintrinsicI_h */
- /* DON'T ADD STUFF AFTER THIS #endif */
-diff --git a/include/X11/Object.h b/include/X11/Object.h
-index 96723b1..2c84aaf 100644
---- a/include/X11/Object.h
-+++ b/include/X11/Object.h
-@@ -50,11 +50,16 @@ SOFTWARE.
- #ifndef _XtObject_h
- #define _XtObject_h
- 
-+_XFUNCPROTOBEGIN
-+
- typedef struct _ObjectRec *Object;
- typedef struct _ObjectClassRec *ObjectClass;
- 
- #ifndef OBJECT
- externalref WidgetClass objectClass;
- #endif
-+
-+_XFUNCPROTOEND
-+
- #endif /* _XtObject_h */
- /* DON'T ADD STUFF AFTER THIS #endif */
-diff --git a/include/X11/ObjectP.h b/include/X11/ObjectP.h
-index a24564e..0f484d2 100644
---- a/include/X11/ObjectP.h
-+++ b/include/X11/ObjectP.h
-@@ -52,6 +52,8 @@ SOFTWARE.
- 
- #include <X11/Object.h>
- 
-+_XFUNCPROTOBEGIN
-+
- /**********************************************************
-  * Object Instance Data Structures
-  *
-@@ -132,6 +134,8 @@ typedef struct _ObjectClassRec {
- 
- externalref ObjectClassRec objectClassRec;
- 
-+_XFUNCPROTOEND
-+
- #define XtObjectExtensionVersion 1L
- #define XtInheritAllocate ((XtAllocateProc) _XtInherit)
- #define XtInheritDeallocate ((XtDeallocateProc) _XtInherit)
-diff --git a/include/X11/PassivGraI.h b/include/X11/PassivGraI.h
-index 02e2964..10591ac 100644
---- a/include/X11/PassivGraI.h
-+++ b/include/X11/PassivGraI.h
-@@ -60,6 +60,8 @@ in this Software without prior written authorization from The Open Group.
- #define KEYBOARD TRUE
- #define POINTER  FALSE
- 
-+_XFUNCPROTOBEGIN
-+
- typedef enum {
-     XtNoServerGrab, 
-     XtPassiveServerGrab,
-@@ -183,4 +185,6 @@ extern void _XtClearAncestorCache(
-     Widget		/* widget */
- );
- 
-+_XFUNCPROTOEND
-+
- #endif /* _PDI_h_ */
-diff --git a/include/X11/RectObj.h b/include/X11/RectObj.h
-index 07615fa..dced5c3 100644
---- a/include/X11/RectObj.h
-+++ b/include/X11/RectObj.h
-@@ -50,11 +50,16 @@ SOFTWARE.
- #ifndef _XtRect_h
- #define _XtRect_h
- 
-+_XFUNCPROTOBEGIN
-+
- typedef struct _RectObjRec *RectObj;
- typedef struct _RectObjClassRec *RectObjClass;
- 
- #ifndef RECTOBJ
- externalref WidgetClass rectObjClass;
- #endif
-+
-+_XFUNCPROTOEND
-+
- #endif /* _XtRect_h */
- /* DON'T ADD STUFF AFTER THIS #endif */
-diff --git a/include/X11/RectObjP.h b/include/X11/RectObjP.h
-index ca3b8ad..d6ffb78 100644
---- a/include/X11/RectObjP.h
-+++ b/include/X11/RectObjP.h
-@@ -53,6 +53,8 @@ SOFTWARE.
- #include <X11/RectObj.h>
- #include <X11/ObjectP.h>
- 
-+_XFUNCPROTOBEGIN
-+
- /**********************************************************
-  * Rectangle Object Instance Data Structures
-  *
-@@ -126,4 +128,6 @@ typedef struct _RectObjClassRec {
- 
- externalref RectObjClassRec rectObjClassRec;
- 
-+_XFUNCPROTOEND
-+
- #endif /*_Xt_RectObjP_h_*/
-diff --git a/include/X11/ResourceI.h b/include/X11/ResourceI.h
-index d6ed1df..3db97f8 100644
---- a/include/X11/ResourceI.h
-+++ b/include/X11/ResourceI.h
-@@ -61,6 +61,8 @@ SOFTWARE.
- #define StringToName(string) XrmStringToName(string)
- #define StringToClass(string) XrmStringToClass(string)
- 
-+_XFUNCPROTOBEGIN
-+
- extern void _XtDependencies(
-     XtResourceList  * /* class_resp */,
-     Cardinal	    * /* class_num_resp */,
-@@ -96,5 +98,6 @@ extern XrmResourceList* _XtCreateIndirectionTable(XtResourceList resources,
- 						  Cardinal num_resources);
- extern void _XtResourceListInitialize(void);
- 
-+_XFUNCPROTOEND
- 
- #endif /* _XtresourceI_h */
-diff --git a/include/X11/ShellP.h b/include/X11/ShellP.h
-index 2b08c3f..7297d33 100644
---- a/include/X11/ShellP.h
-+++ b/include/X11/ShellP.h
-@@ -67,6 +67,8 @@ SOFTWARE.
-  * *****
-  */
- 
-+_XFUNCPROTOBEGIN
-+
- /***********************************************************************
-  *
-  * Shell Widget Private Data
-@@ -214,8 +216,12 @@ typedef  struct {
- 	WMShellPart	wm;
- } WMShellRec, *WMShellWidget;
- 
-+_XFUNCPROTOEND
-+
- #include <X11/VendorP.h>
- 
-+_XFUNCPROTOBEGIN
-+
- /***********************************************************************
-  *
-  * TransientShell Widget Private Data
-@@ -425,4 +431,6 @@ typedef  struct {
- 	SessionShellPart session;
- } SessionShellRec, *SessionShellWidget;
- 
-+_XFUNCPROTOEND
-+
- #endif /* _XtShellPrivate_h */
-diff --git a/include/X11/ThreadsI.h b/include/X11/ThreadsI.h
-index 1492d77..28cbc98 100644
---- a/include/X11/ThreadsI.h
-+++ b/include/X11/ThreadsI.h
-@@ -81,6 +81,8 @@ typedef void (*ThreadAppRestoreLockProc)(
-     Boolean* /* pushed_thread */
- );
- 
-+_XFUNCPROTOBEGIN
-+
- extern void (*_XtProcessLock)(
-     void
- );
-@@ -93,6 +95,8 @@ extern void (*_XtInitAppLock)(
-     XtAppContext /* app */
- );
- 
-+_XFUNCPROTOEND
-+
- #define INIT_APP_LOCK(app) if(_XtInitAppLock) (*_XtInitAppLock)(app)
- #define FREE_APP_LOCK(app) if(app && app->free_lock)(*app->free_lock)(app)
- 
-diff --git a/include/X11/TranslateI.h b/include/X11/TranslateI.h
-index 1224875..6cc3099 100644
---- a/include/X11/TranslateI.h
-+++ b/include/X11/TranslateI.h
-@@ -342,6 +342,8 @@ typedef struct _TMGlobalRec{
- #endif /* TRACE_TM */
- }TMGlobalRec;
- 
-+_XFUNCPROTOBEGIN
-+
- extern TMGlobalRec _XtGlobalTM;
- 
- #define TM_MOD_SEGMENT_SIZE 	16
-@@ -604,3 +606,4 @@ extern void _XtUnmergeTranslations(
- /* TMKey.c */
- extern void _XtAllocTMContext(XtPerDisplay pd);
- 
-+_XFUNCPROTOEND
-diff --git a/include/X11/VarargsI.h b/include/X11/VarargsI.h
-index e15404a..76ce9bc 100644
---- a/include/X11/VarargsI.h
-+++ b/include/X11/VarargsI.h
-@@ -34,6 +34,8 @@ in this Software without prior written authorization from The Open Group.
-  
- /* private routines */
- 
-+_XFUNCPROTOBEGIN
-+
- extern void _XtCountVaList(
-     va_list /*var*/, int* /*total_count*/, int* /*typed_count*/
- );
-@@ -62,4 +64,6 @@ extern void _XtGetSubresources(
-     Widget /*w*/, XtPointer /*base*/, const char* /*name*/, const char* /*class*/, XtResourceList /*resources*/, Cardinal /*num_resources*/, ArgList /*args*/, Cardinal /*num_args*/, XtTypedArgList /*typed_args*/, Cardinal /*num_typed_args*/
- );
- 
-+_XFUNCPROTOEND
-+
- #endif /* _VarargsI_h_ */
-diff --git a/include/X11/Vendor.h b/include/X11/Vendor.h
-index 65e7c38..633d17a 100644
---- a/include/X11/Vendor.h
-+++ b/include/X11/Vendor.h
-@@ -65,7 +65,11 @@ SOFTWARE.
- 
- typedef struct _VendorShellClassRec *VendorShellWidgetClass;
- 
-+_XFUNCPROTOBEGIN
-+
- externalref WidgetClass vendorShellWidgetClass;
- 
-+_XFUNCPROTOEND
-+
- #endif /* _XtVendor_h */
- /* DON'T ADD STUFF AFTER THIS #endif */
-diff --git a/include/X11/VendorP.h b/include/X11/VendorP.h
-index 08bf689..e60857d 100644
---- a/include/X11/VendorP.h
-+++ b/include/X11/VendorP.h
-@@ -72,6 +72,8 @@ SOFTWARE.
- 
- /* New fields for the VendorShell widget class record */
- 
-+_XFUNCPROTOBEGIN
-+
- typedef struct {
-     XtPointer       extension;          /* pointer to extension record      */
- } VendorShellClassPart;
-@@ -100,4 +102,6 @@ typedef  struct {
- 	VendorShellPart	vendor;
- } VendorShellRec, *VendorShellWidget;
- 
-+_XFUNCPROTOEND
-+
- #endif  /* _XtVendorPrivate_h */
diff --git a/recipes/xorg-lib/libxt_1.0.4.bb b/recipes/xorg-lib/libxt_1.0.4.bb
deleted file mode 100644
index 7dd9863..0000000
--- a/recipes/xorg-lib/libxt_1.0.4.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Toolkit Intrinsics"
-PRIORITY = "optional"
-DEPENDS += " libsm virtual/libx11 xproto kbproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://pr10970-header-fix.patch"
-SRC_URI[archive.md5sum] = "937735f342c046db239852fec0413f6c"
-SRC_URI[archive.sha256sum] = "ec7088b2ffe8f56c177525283601fb048decaf6f175d9ee5db01e12810a4d345"
-
-EXTRA_OECONF = "--enable-malloc0returnsnull --disable-install-makestrs --disable-xkb"
-
-do_compile() {
-        (
-                unset CC LD CXX CCLD
-                oe_runmake -C util 'XT_CFLAGS=' 'CC=${BUILD_CC}' 'LD=${BUILD_LD}' 'CXX=${BUILD_CXX}' 'CCLD=${BUILD_CCLD}' 'CFLAGS=-D_GNU_SOURCE ${BUILD_CFLAGS}' 'LDFLAGS=${BUILD_LDFLAGS}' 'CXXFLAGS=${BUILD_CXXFLAGS}' 'CPPFLAGS=${BUILD_CPPFLAGS}' makestrs
-        ) || exit 1
-        oe_runmake
-}
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libXt"
diff --git a/recipes/xorg-lib/libxt_1.0.5.bb b/recipes/xorg-lib/libxt_1.0.5.bb
deleted file mode 100644
index 7bdf252..0000000
--- a/recipes/xorg-lib/libxt_1.0.5.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 toolkit intrinsics library"
-DEPENDS += "libsm virtual/libx11 kbproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://pr10970-header-fix.patch"
-SRC_URI[archive.md5sum] = "f3bdd67785ace8cd0b23249e9d8c9975"
-SRC_URI[archive.sha256sum] = "43c472ada59a04428a463225cd4cd42cb81bc43eb687cc1890f2f1c81a3e9cf4"
-
-EXTRA_OECONF += "--disable-install-makestrs --disable-xkb"
-
-do_compile() {
-        (
-                unset CC LD CXX CCLD
-                oe_runmake -C util 'XT_CFLAGS=' 'CC=${BUILD_CC}' 'LD=${BUILD_LD}' 'CXX=${BUILD_CXX}' 'CCLD=${BUILD_CCLD}' 'CFLAGS=-D_GNU_SOURCE -I${STAGING_INCDIR_NATIVE} ${BUILD_CFLAGS}' 'LDFLAGS=${BUILD_LDFLAGS}' 'CXXFLAGS=${BUILD_CXXFLAGS}' 'CPPFLAGS=${BUILD_CPPFLAGS}' makestrs
-        ) || exit 1
-        oe_runmake
-}
-
-BBCLASSEXTEND = "native"
-
-XORG_PN = "libXt"
diff --git a/recipes/xorg-lib/libxtst_1.0.2.bb b/recipes/xorg-lib/libxtst_1.0.2.bb
deleted file mode 100644
index ff87f7c..0000000
--- a/recipes/xorg-lib/libxtst_1.0.2.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Test Extension: client side library"
-DEPENDS += "libxext recordproto inputproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "032d5c1d3914fc0224837328c88aef96"
-SRC_URI[archive.sha256sum] = "eef98ad3d35254384c3714cd63826fc2009f9b394f2b489718aba9be7be0a10b"
-
-XORG_PN = "libXtst"
diff --git a/recipes/xorg-lib/libxtst_1.0.3.bb b/recipes/xorg-lib/libxtst_1.0.3.bb
deleted file mode 100644
index 56dfae5..0000000
--- a/recipes/xorg-lib/libxtst_1.0.3.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Test Extension: client side library"
-DEPENDS += "libxext recordproto inputproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "090c1ad04e34982eada5cf3b1a0792fd"
-SRC_URI[archive.sha256sum] = "b4a8dd3d9ceb04cd7322c1f7e5d2320d6ccf85ba8c81d736fd6d6c83c658c905"
-
-XORG_PN = "libXtst"
diff --git a/recipes/xorg-lib/libxv_1.0.3.bb b/recipes/xorg-lib/libxv_1.0.3.bb
deleted file mode 100644
index 4f19126..0000000
--- a/recipes/xorg-lib/libxv_1.0.3.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Video extension library"
-LICENSE = "GPL"
-DEPENDS += "libxext videoproto"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "f1c4109fa804aeaf7188b66c5cdd9f57"
-SRC_URI[archive.sha256sum] = "f87ae65be39a3c26dc3c87159d9126daf2af1b8c5e7f2ffc38b9f72b9236261b"
-
-XORG_PN = "libXv"
diff --git a/recipes/xorg-lib/libxv_1.0.4.bb b/recipes/xorg-lib/libxv_1.0.4.bb
deleted file mode 100644
index be5a50c..0000000
--- a/recipes/xorg-lib/libxv_1.0.4.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Video extension library"
-LICENSE = "GPL"
-DEPENDS += "libxext videoproto"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "723a0275227165383e967a1ca8899b52"
-SRC_URI[archive.sha256sum] = "4d3cc49b6f4da6d396196054eca23a91df1a41001c736dcfd22fec5a5c7428c8"
-
-XORG_PN = "libXv"
diff --git a/recipes/xorg-lib/libxvmc/drm.patch b/recipes/xorg-lib/libxvmc/drm.patch
deleted file mode 100644
index d48cdb3..0000000
--- a/recipes/xorg-lib/libxvmc/drm.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- XvMC/hw/via/Makefile.am.old	2005-03-06 11:25:11.000000000 +0000
-+++ XvMC/hw/via/Makefile.am	2005-03-06 11:25:22.000000000 +0000
-@@ -1,5 +1,5 @@
- AM_CFLAGS = $(XVMC_CFLAGS)
--libviaXvMC_la_LIBADD = $(XVMC_LIBS) -lxf86drm
-+libviaXvMC_la_LIBADD = $(XVMC_LIBS) -ldrm
- 
- lib_LTLIBRARIES = libviaXvMC.la
- 
diff --git a/recipes/xorg-lib/libxvmc/true.patch b/recipes/xorg-lib/libxvmc/true.patch
deleted file mode 100644
index 7059295..0000000
--- a/recipes/xorg-lib/libxvmc/true.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- XvMC/hw/via/viaXvMC.c.old	2004-10-18 20:54:49.000000000 +0100
-+++ XvMC/hw/via/viaXvMC.c	2004-10-18 20:55:03.000000000 +0100
-@@ -43,6 +43,8 @@
- #include <xf86drm.h>
- #include <pthread.h>
- #include "vldXvMC.h"
-+
-+#define TRUE 1
-     
- #define SAREAPTR(ctx) ((ViaXvMCSAreaPriv *) \
- 		       (((CARD8 *)(ctx)->sAreaAddress) +	\
diff --git a/recipes/xorg-lib/libxvmc/via.patch b/recipes/xorg-lib/libxvmc/via.patch
deleted file mode 100644
index 21cdfbd..0000000
--- a/recipes/xorg-lib/libxvmc/via.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- XvMC/configure.ac.old	2004-09-18 13:16:31.000000000 +0100
-+++ XvMC/configure.ac	2004-09-18 13:16:32.000000000 +0100
-@@ -14,4 +14,5 @@
- AC_OUTPUT([Makefile
-            hw/Makefile
- 	   hw/i810/Makefile
-+	   hw/via/Makefile
-            xvmc.pc])
---- /dev/null	2004-06-13 02:32:19.000000000 +0100
-+++ XvMC/hw/via/Makefile.am	2004-09-18 13:16:01.000000000 +0100
-@@ -0,0 +1,7 @@
-+AM_CFLAGS = $(XVMC_CFLAGS)
-+libviaXvMC_la_LIBADD = $(XVMC_LIBS) -lxf86drm
-+
-+lib_LTLIBRARIES = libviaXvMC.la
-+
-+libviaXvMC_la_SOURCES = viaXvMC.c viaXvMC.h viaLowLevel.c viaLowLevel.h \
-+		viaXvMCPriv.h
---- XvMC/hw/Makefile.am.old	2004-10-17 22:34:27.000000000 +0100
-+++ XvMC/hw/Makefile.am	2004-10-17 22:34:31.000000000 +0100
-@@ -1 +1 @@
--SUBDIRS = i810
-+SUBDIRS = i810 via
diff --git a/recipes/xorg-lib/libxvmc_1.0.4.bb b/recipes/xorg-lib/libxvmc_1.0.4.bb
deleted file mode 100644
index 003c5be..0000000
--- a/recipes/xorg-lib/libxvmc_1.0.4.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Video Motion Compensation extension library"
-DEPENDS += "libxext libxv videoproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "b54600573daf9d1a29b952e8d35b389e"
-SRC_URI[archive.sha256sum] = "1217825ba8d66198466ee8306d0d6d237d2dd80d0f0783c98701296791833abb"
-
-XORG_PN = "libXvMC"
diff --git a/recipes/xorg-lib/libxvmc_1.0.5.bb b/recipes/xorg-lib/libxvmc_1.0.5.bb
deleted file mode 100644
index cdd965a..0000000
--- a/recipes/xorg-lib/libxvmc_1.0.5.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X Video Motion Compensation extension library"
-DEPENDS += "libxext libxv videoproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "16c3a11add14979beb7510e44623cac6"
-SRC_URI[archive.sha256sum] = "0644c768d28343af0efe0cb09fc9e0220b8ad755642bb498a3038cee328fde7f"
-
-XORG_PN = "libXvMC"
diff --git a/recipes/xorg-lib/libxxf86dga_1.0.1.bb b/recipes/xorg-lib/libxxf86dga_1.0.1.bb
deleted file mode 100644
index 6d51967..0000000
--- a/recipes/xorg-lib/libxxf86dga_1.0.1.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Direct Graphics Access extension library"
-DEPENDS += "libxext xf86dgaproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "5b0e752c71a23e9d1290cad44a7c7c75"
-SRC_URI[archive.sha256sum] = "8c68f429942b1258cff0fb27505645a463690374ecf318ae660ff4cde7a03db9"
-
-XORG_PN = "libXxf86dga"
diff --git a/recipes/xorg-lib/libxxf86dga_1.0.2.bb b/recipes/xorg-lib/libxxf86dga_1.0.2.bb
deleted file mode 100644
index b311537..0000000
--- a/recipes/xorg-lib/libxxf86dga_1.0.2.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 Direct Graphics Access extension library"
-DEPENDS += "libxext xf86dgaproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "6f5f621804ee652b6cc6f2025c517c78"
-SRC_URI[archive.sha256sum] = "59175230a00a1fb359148f36eadb50fc6cb080849379ccb0e43c6cbb97309a25"
-
-XORG_PN = "libXxf86dga"
diff --git a/recipes/xorg-lib/libxxf86misc_1.0.1.bb b/recipes/xorg-lib/libxxf86misc_1.0.1.bb
deleted file mode 100644
index 91a7123..0000000
--- a/recipes/xorg-lib/libxxf86misc_1.0.1.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 XFree86 miscellaneous extension library"
-DEPENDS += "libxext xf86miscproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "7cee0df63903cef7f7a3fb68cdd99eef"
-SRC_URI[archive.sha256sum] = "2122d67d49aaa06eeaeb3db173ea8a7048f3b52665e5135874bc5cadada91289"
-
-XORG_PN = "libXxf86misc"
diff --git a/recipes/xorg-lib/libxxf86vm_1.0.1.bb b/recipes/xorg-lib/libxxf86vm_1.0.1.bb
deleted file mode 100644
index b13707c..0000000
--- a/recipes/xorg-lib/libxxf86vm_1.0.1.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 XFree86 video mode extension library"
-DEPENDS += "libxext xf86vidmodeproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "8de1ca6c55aaad7d8cae19b4f0b3da32"
-SRC_URI[archive.sha256sum] = "e08fc2c1611c422f751ed02810491b45bf7faa4207d762a11f11815263c9285a"
-
-XORG_PN = "libXxf86vm"
diff --git a/recipes/xorg-lib/libxxf86vm_1.0.2.bb b/recipes/xorg-lib/libxxf86vm_1.0.2.bb
deleted file mode 100644
index e693362..0000000
--- a/recipes/xorg-lib/libxxf86vm_1.0.2.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "X11 XFree86 video mode extension library"
-DEPENDS += "libxext xf86vidmodeproto"
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "304d37bd0a10d9b58aa9b64469ad73e5"
-SRC_URI[archive.sha256sum] = "3cb3c3c6552a4fbc686ba6c2dbeb6e4ba2a27103279908831d56363de73951de"
-
-XORG_PN = "libXxf86vm"
diff --git a/recipes/xorg-lib/pixman-0.12.0/pixman-arm.patch b/recipes/xorg-lib/pixman-0.12.0/pixman-arm.patch
new file mode 100644
index 0000000..91dda03
--- /dev/null
+++ b/recipes/xorg-lib/pixman-0.12.0/pixman-arm.patch
@@ -0,0 +1,632 @@
+From: Jeff Muizelaar <jmuizelaar at mozilla.com>
+Date: Wed, 17 Sep 2008 19:53:20 +0000 (-0400)
+Subject: Add support for ARMv6 SIMD fastpaths.
+X-Git-Url: http://gitweb.freedesktop.org/?p=pixman.git;a=commitdiff;h=d0b181f347ef4720d130beee3f03196afbd28aba
+
+Add support for ARMv6 SIMD fastpaths.
+---
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -277,6 +277,44 @@ AC_SUBST(VMX_CFLAGS)
+ 
+ AM_CONDITIONAL(USE_VMX, test $have_vmx_intrinsics = yes)
+ 
++dnl Check for ARM
++
++have_armv6_simd=no
++AC_MSG_CHECKING(whether to use ARM assembler)
++xserver_save_CFLAGS=$CFLAGS
++CFLAGS="$CFLAGS $ARM_CFLAGS"
++AC_COMPILE_IFELSE([
++int main () {
++    asm("uqadd8 r1, r1, r2");
++    return 0;
++}], have_armv6_simd=yes)
++CFLAGS=$xserver_save_CFLAGS
++
++AC_ARG_ENABLE(arm,
++   [AC_HELP_STRING([--disable-arm],
++                   [disable ARM fast paths])],
++   [enable_arm=$enableval], [enable_arm=auto])
++
++if test $enable_arm = no ; then
++   have_armv6_simd=disabled
++fi
++
++if test $have_armv6_simd = yes ; then
++   AC_DEFINE(USE_ARM, 1, [use ARM compiler intrinsics])
++else
++   ARM_CFLAGS=
++fi
++
++AC_MSG_RESULT($have_armv6_simd)
++if test $enable_arm = yes && test $have_armv6_simd = no ; then
++   AC_MSG_ERROR([ARM intrinsics not detected])
++fi
++
++AC_SUBST(ARM_CFLAGS)
++
++AM_CONDITIONAL(USE_ARM, test $have_armv6_simd = yes)
++
++
+ AC_ARG_ENABLE(gtk,
+    [AC_HELP_STRING([--enable-gtk],
+                    [enable tests using GTK+ [default=auto]])],
+--- a/pixman/Makefile.am
++++ b/pixman/Makefile.am
+@@ -79,3 +79,15 @@ libpixman_sse2_la_LIBADD = $(DEP_LIBS)
+ libpixman_1_la_LIBADD += libpixman-sse2.la
+ endif
+ 
++# arm code
++if USE_ARM
++noinst_LTLIBRARIES += libpixman-arm.la
++libpixman_arm_la_SOURCES = \
++	pixman-arm.c \
++	pixman-arm.h
++libpixman_arm_la_CFLAGS = $(DEP_CFLAGS) $(ARM_CFLAGS)
++libpixman_arm_la_LIBADD = $(DEP_LIBS)
++libpixman_1_la_LIBADD += libpixman-arm.la
++endif
++
++
+--- /dev/null
++++ b/pixman/pixman-arm.c
+@@ -0,0 +1,409 @@
++/*
++ * Copyright © 2008 Mozilla Corporation
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that
++ * copyright notice and this permission notice appear in supporting
++ * documentation, and that the name of Mozilla Corporation not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission.  Mozilla Corporation makes no
++ * representations about the suitability of this software for any purpose.  It
++ * is provided "as is" without express or implied warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
++ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
++ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
++ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
++ * SOFTWARE.
++ *
++ * Author:  Jeff Muizelaar (jeff at infidigm.net)
++ *
++ */
++#ifdef HAVE_CONFIG_H
++#include <config.h>
++#endif
++
++#include "pixman-arm.h"
++
++void
++fbCompositeSrcAdd_8000x8000arm (pixman_op_t op,
++				pixman_image_t * pSrc,
++				pixman_image_t * pMask,
++				pixman_image_t * pDst,
++				int16_t      xSrc,
++				int16_t      ySrc,
++				int16_t      xMask,
++				int16_t      yMask,
++				int16_t      xDst,
++				int16_t      yDst,
++				uint16_t     width,
++				uint16_t     height)
++{
++    uint8_t	*dstLine, *dst;
++    uint8_t	*srcLine, *src;
++    int	dstStride, srcStride;
++    uint16_t	w;
++    uint8_t	s, d;
++
++    fbComposeGetStart (pSrc, xSrc, ySrc, uint8_t, srcStride, srcLine, 1);
++    fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 1);
++
++    while (height--)
++    {
++	dst = dstLine;
++	dstLine += dstStride;
++	src = srcLine;
++	srcLine += srcStride;
++	w = width;
++
++	while (w && (unsigned long)dst & 3)
++	{
++	    s = *src;
++	    d = *dst;
++	    asm("uqadd8 %0, %1, %2" : "+r"(d) : "r"(s));
++	    *dst = d;
++
++	    dst++;
++	    src++;
++	    w--;
++	}
++
++	while (w >= 4)
++	{
++	    asm("uqadd8 %0, %1, %2" : "=r"(*(uint32_t*)dst) : "r"(*(uint32_t*)src), "r"(*(uint32_t*)dst));
++	    dst += 4;
++	    src += 4;
++	    w -= 4;
++	}
++
++	while (w)
++	{
++	    s = *src;
++	    d = *dst;
++	    asm("uqadd8 %0, %1, %2" : "+r"(d) : "r"(s));
++	    *dst = d;
++
++	    dst++;
++	    src++;
++	    w--;
++	}
++    }
++
++}
++
++void
++fbCompositeSrc_8888x8888arm (pixman_op_t op,
++			 pixman_image_t * pSrc,
++			 pixman_image_t * pMask,
++			 pixman_image_t * pDst,
++			 int16_t      xSrc,
++			 int16_t      ySrc,
++			 int16_t      xMask,
++			 int16_t      yMask,
++			 int16_t      xDst,
++			 int16_t      yDst,
++			 uint16_t     width,
++			 uint16_t     height)
++{
++    uint32_t	*dstLine, *dst;
++    uint32_t	*srcLine, *src;
++    int	dstStride, srcStride;
++    uint16_t	w;
++    uint32_t component_half = 0x800080;
++    uint32_t upper_component_mask = 0xff00ff00;
++    uint32_t alpha_mask = 0xff;
++
++    fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
++    fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
++
++    while (height--)
++    {
++	dst = dstLine;
++	dstLine += dstStride;
++	src = srcLine;
++	srcLine += srcStride;
++	w = width;
++
++//#define inner_branch
++	asm volatile (
++			"cmp %[w], #0\n\t"
++			"beq 2f\n\t"
++			"1:\n\t"
++			/* load dest */
++			"ldr r5, [%[src]], #4\n\t"
++#ifdef inner_branch
++			/* We can avoid doing the multiplication in two cases: 0x0 or 0xff.
++			 * The 0x0 case also allows us to avoid doing an unecessary data
++			 * write which is more valuable so we only check for that */
++			"cmp r5, #0x1000000\n\t"
++			"blt 3f\n\t"
++
++			/* = 255 - alpha */
++			"sub r8, %[alpha_mask], r5, lsr #24\n\t"
++
++			"ldr r4, [%[dest]] \n\t"
++
++#else
++			"ldr r4, [%[dest]] \n\t"
++
++			/* = 255 - alpha */
++			"sub r8, %[alpha_mask], r5, lsr #24\n\t"
++#endif
++			"uxtb16 r6, r4\n\t"
++			"uxtb16 r7, r4, ror #8\n\t"
++
++			/* multiply by 257 and divide by 65536 */
++			"mla r6, r6, r8, %[component_half]\n\t"
++			"mla r7, r7, r8, %[component_half]\n\t"
++
++			"uxtab16 r6, r6, r6, ror #8\n\t"
++			"uxtab16 r7, r7, r7, ror #8\n\t"
++
++			/* recombine the 0xff00ff00 bytes of r6 and r7 */
++			"and r7, %[upper_component_mask]\n\t"
++			"uxtab16 r6, r7, r6, ror #8\n\t"
++
++			"uqadd8 r5, r6, r5\n\t"
++
++#ifdef inner_branch
++			"3:\n\t"
++
++#endif
++			"str r5, [%[dest]], #4\n\t"
++			/* increment counter and jmp to top */
++			"subs	%[w], %[w], #1\n\t"
++			"bne	1b\n\t"
++			"2:\n\t"
++			: [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src)
++			: [component_half] "r" (component_half), [upper_component_mask] "r" (upper_component_mask),
++			  [alpha_mask] "r" (alpha_mask)
++			: "r4", "r5", "r6", "r7", "r8", "cc", "memory"
++			);
++    }
++}
++
++void
++fbCompositeSrc_8888x8x8888arm (pixman_op_t op,
++			       pixman_image_t * pSrc,
++			       pixman_image_t * pMask,
++			       pixman_image_t * pDst,
++			       int16_t	xSrc,
++			       int16_t	ySrc,
++			       int16_t      xMask,
++			       int16_t      yMask,
++			       int16_t      xDst,
++			       int16_t      yDst,
++			       uint16_t     width,
++			       uint16_t     height)
++{
++    uint32_t	*dstLine, *dst;
++    uint32_t	*srcLine, *src;
++    uint32_t	mask;
++    int	dstStride, srcStride;
++    uint16_t	w;
++    uint32_t component_half = 0x800080;
++    uint32_t alpha_mask = 0xff;
++
++    fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
++    fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
++
++    fbComposeGetSolid (pMask, mask, pDst->bits.format);
++    mask = (mask) >> 24;
++
++    while (height--)
++    {
++	dst = dstLine;
++	dstLine += dstStride;
++	src = srcLine;
++	srcLine += srcStride;
++	w = width;
++
++//#define inner_branch
++	asm volatile (
++			"cmp %[w], #0\n\t"
++			"beq 2f\n\t"
++			"1:\n\t"
++			/* load dest */
++			"ldr r5, [%[src]], #4\n\t"
++#ifdef inner_branch
++			/* We can avoid doing the multiplication in two cases: 0x0 or 0xff.
++			 * The 0x0 case also allows us to avoid doing an unecessary data
++			 * write which is more valuable so we only check for that */
++			"cmp r5, #0x1000000\n\t"
++			"blt 3f\n\t"
++
++#endif
++			"ldr r4, [%[dest]] \n\t"
++
++			"uxtb16 r6, r5\n\t"
++			"uxtb16 r7, r5, ror #8\n\t"
++
++			/* multiply by alpha (r8) then by 257 and divide by 65536 */
++			"mla r6, r6, %[mask_alpha], %[component_half]\n\t"
++			"mla r7, r7, %[mask_alpha], %[component_half]\n\t"
++
++			"uxtab16 r6, r6, r6, ror #8\n\t"
++			"uxtab16 r7, r7, r7, ror #8\n\t"
++
++			"uxtb16 r6, r6, ror #8\n\t"
++			"uxtb16 r7, r7, ror #8\n\t"
++
++			/* recombine */
++			"orr r5, r6, r7, lsl #8\n\t"
++
++			"uxtb16 r6, r4\n\t"
++			"uxtb16 r7, r4, ror #8\n\t"
++
++			/* 255 - alpha */
++			"sub r8, %[alpha_mask], r5, lsr #24\n\t"
++
++			/* multiply by alpha (r8) then by 257 and divide by 65536 */
++			"mla r6, r6, r8, %[component_half]\n\t"
++			"mla r7, r7, r8, %[component_half]\n\t"
++
++			"uxtab16 r6, r6, r6, ror #8\n\t"
++			"uxtab16 r7, r7, r7, ror #8\n\t"
++
++			"uxtb16 r6, r6, ror #8\n\t"
++			"uxtb16 r7, r7, ror #8\n\t"
++
++			/* recombine */
++			"orr r6, r6, r7, lsl #8\n\t"
++
++			"uqadd8 r5, r6, r5\n\t"
++
++#ifdef inner_branch
++			"3:\n\t"
++
++#endif
++			"str r5, [%[dest]], #4\n\t"
++			/* increment counter and jmp to top */
++			"subs	%[w], %[w], #1\n\t"
++			"bne	1b\n\t"
++			"2:\n\t"
++			: [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src)
++			: [component_half] "r" (component_half), [mask_alpha] "r" (mask),
++			  [alpha_mask] "r" (alpha_mask)
++			: "r4", "r5", "r6", "r7", "r8", "r9", "cc", "memory"
++			);
++    }
++}
++
++void
++fbCompositeSolidMask_nx8x8888arm (pixman_op_t      op,
++			       pixman_image_t * pSrc,
++			       pixman_image_t * pMask,
++			       pixman_image_t * pDst,
++			       int16_t      xSrc,
++			       int16_t      ySrc,
++			       int16_t      xMask,
++			       int16_t      yMask,
++			       int16_t      xDst,
++			       int16_t      yDst,
++			       uint16_t     width,
++			       uint16_t     height)
++{
++    uint32_t	 src, srca;
++    uint32_t	*dstLine, *dst;
++    uint8_t	*maskLine, *mask;
++    int		 dstStride, maskStride;
++    uint16_t	 w;
++
++    fbComposeGetSolid(pSrc, src, pDst->bits.format);
++
++    srca = src >> 24;
++    if (src == 0)
++	return;
++
++    uint32_t component_mask = 0xff00ff;
++    uint32_t component_half = 0x800080;
++
++    uint32_t src_hi = (src >> 8) & component_mask;
++    uint32_t src_lo = src & component_mask;
++
++    fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
++    fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1);
++
++    while (height--)
++    {
++	dst = dstLine;
++	dstLine += dstStride;
++	mask = maskLine;
++	maskLine += maskStride;
++	w = width;
++
++//#define inner_branch
++	asm volatile (
++			"cmp %[w], #0\n\t"
++			"beq 2f\n\t"
++			"1:\n\t"
++			/* load mask */
++			"ldrb r5, [%[mask]], #1\n\t"
++#ifdef inner_branch
++			/* We can avoid doing the multiplication in two cases: 0x0 or 0xff.
++			 * The 0x0 case also allows us to avoid doing an unecessary data
++			 * write which is more valuable so we only check for that */
++			/* 0x1000000 is the least value that contains alpha all values
++			 * less than it have a 0 alpha value */
++			"cmp r5, #0x0\n\t"
++			"beq 3f\n\t"
++
++#endif
++			"ldr r4, [%[dest]] \n\t"
++
++			/* multiply by alpha (r8) then by 257 and divide by 65536 */
++			"mla r6, %[src_lo], r5, %[component_half]\n\t"
++			"mla r7, %[src_hi], r5, %[component_half]\n\t"
++
++			"uxtab16 r6, r6, r6, ror #8\n\t"
++			"uxtab16 r7, r7, r7, ror #8\n\t"
++
++			"uxtb16 r6, r6, ror #8\n\t"
++			"uxtb16 r7, r7, ror #8\n\t"
++
++			/* recombine */
++			"orr r5, r6, r7, lsl #8\n\t"
++
++			"uxtb16 r6, r4\n\t"
++			"uxtb16 r7, r4, ror #8\n\t"
++
++			/* we could simplify this to use 'sub' if we were
++			 * willing to give up a register for alpha_mask */
++			"mvn r8, r5\n\t"
++			"mov r8, r8, lsr #24\n\t"
++
++			/* multiply by alpha (r8) then by 257 and divide by 65536 */
++			"mla r6, r6, r8, %[component_half]\n\t"
++			"mla r7, r7, r8, %[component_half]\n\t"
++
++			"uxtab16 r6, r6, r6, ror #8\n\t"
++			"uxtab16 r7, r7, r7, ror #8\n\t"
++
++			"uxtb16 r6, r6, ror #8\n\t"
++			"uxtb16 r7, r7, ror #8\n\t"
++
++			/* recombine */
++			"orr r6, r6, r7, lsl #8\n\t"
++
++			"uqadd8 r5, r6, r5\n\t"
++
++#ifdef inner_branch
++			"3:\n\t"
++
++#endif
++			"str r5, [%[dest]], #4\n\t"
++			/* increment counter and jmp to top */
++			"subs	%[w], %[w], #1\n\t"
++			"bne	1b\n\t"
++			"2:\n\t"
++			: [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src), [mask] "+r" (mask)
++			: [component_half] "r" (component_half),
++			  [src_hi] "r" (src_hi), [src_lo] "r" (src_lo)
++			: "r4", "r5", "r6", "r7", "r8", "cc", "memory"
++			);
++    }
++}
+--- /dev/null
++++ b/pixman/pixman-arm.h
+@@ -0,0 +1,94 @@
++/*
++ * Copyright © 2008 Mozilla Corporation
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that
++ * copyright notice and this permission notice appear in supporting
++ * documentation, and that the name of Mozilla Corporation not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission.  Mozilla Corporation makes no
++ * representations about the suitability of this software for any purpose.  It
++ * is provided "as is" without express or implied warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
++ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
++ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
++ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
++ * SOFTWARE.
++ *
++ * Author:  Jeff Muizelaar (jeff at infidigm.net)
++ *
++ */
++
++#include "pixman-private.h"
++
++#ifdef USE_ARM
++
++static inline pixman_bool_t pixman_have_arm(void) { return TRUE; }
++
++#else
++#define pixman_have_arm() FALSE
++#endif
++
++#ifdef USE_ARM
++
++void
++fbCompositeSrcAdd_8000x8000arm (pixman_op_t op,
++				pixman_image_t * pSrc,
++				pixman_image_t * pMask,
++				pixman_image_t * pDst,
++				int16_t      xSrc,
++				int16_t      ySrc,
++				int16_t      xMask,
++				int16_t      yMask,
++				int16_t      xDst,
++				int16_t      yDst,
++				uint16_t     width,
++				uint16_t     height);
++void
++fbCompositeSrc_8888x8888arm (pixman_op_t op,
++			 pixman_image_t * pSrc,
++			 pixman_image_t * pMask,
++			 pixman_image_t * pDst,
++			 int16_t      xSrc,
++			 int16_t      ySrc,
++			 int16_t      xMask,
++			 int16_t      yMask,
++			 int16_t      xDst,
++			 int16_t      yDst,
++			 uint16_t     width,
++			 uint16_t     height);
++
++void
++fbCompositeSrc_8888x8x8888arm (pixman_op_t op,
++			 pixman_image_t * pSrc,
++			 pixman_image_t * pMask,
++			 pixman_image_t * pDst,
++			 int16_t      xSrc,
++			 int16_t      ySrc,
++			 int16_t      xMask,
++			 int16_t      yMask,
++			 int16_t      xDst,
++			 int16_t      yDst,
++			 uint16_t     width,
++			 uint16_t     height);
++void
++fbCompositeSolidMask_nx8x8888arm (pixman_op_t op,
++			 pixman_image_t * pSrc,
++			 pixman_image_t * pMask,
++			 pixman_image_t * pDst,
++			 int16_t      xSrc,
++			 int16_t      ySrc,
++			 int16_t      xMask,
++			 int16_t      yMask,
++			 int16_t      xDst,
++			 int16_t      yDst,
++			 uint16_t     width,
++			 uint16_t     height);
++
++
++#endif /* USE_ARM */
+--- a/pixman/pixman-pict.c
++++ b/pixman/pixman-pict.c
+@@ -34,6 +34,7 @@
+ #include "pixman-mmx.h"
+ #include "pixman-vmx.h"
+ #include "pixman-sse2.h"
++#include "pixman-arm.h"
+ #include "pixman-combine32.h"
+ 
+ #ifdef __GNUC__
+@@ -1479,6 +1480,26 @@ static const FastPathInfo vmx_fast_paths
+ };
+ #endif
+ 
++#ifdef USE_ARM
++static const FastPathInfo arm_fast_paths[] =
++{
++    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null,     PIXMAN_a8r8g8b8, fbCompositeSrc_8888x8888arm,      0 },
++    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null,	PIXMAN_x8r8g8b8, fbCompositeSrc_8888x8888arm,	   0 },
++    { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null,	PIXMAN_a8b8g8r8, fbCompositeSrc_8888x8888arm,	   0 },
++    { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null,	PIXMAN_x8b8g8r8, fbCompositeSrc_8888x8888arm,	   0 },
++    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8,       PIXMAN_a8r8g8b8, fbCompositeSrc_8888x8x8888arm,    NEED_SOLID_MASK },
++    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8,       PIXMAN_x8r8g8b8, fbCompositeSrc_8888x8x8888arm,	   NEED_SOLID_MASK },
++
++    { PIXMAN_OP_ADD, PIXMAN_a8,        PIXMAN_null,     PIXMAN_a8,       fbCompositeSrcAdd_8000x8000arm,   0 },
++
++    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_a8r8g8b8, fbCompositeSolidMask_nx8x8888arm,     0 },
++    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_x8r8g8b8, fbCompositeSolidMask_nx8x8888arm,     0 },
++    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_a8b8g8r8, fbCompositeSolidMask_nx8x8888arm,     0 },
++    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_x8b8g8r8, fbCompositeSolidMask_nx8x8888arm,     0 },
++
++    { PIXMAN_OP_NONE },
++};
++#endif
+ 
+ static const FastPathInfo c_fast_paths[] =
+ {
+@@ -1829,6 +1850,12 @@ pixman_image_composite (pixman_op_t     
+ 	if (!info && pixman_have_vmx())
+ 	    info = get_fast_path (vmx_fast_paths, op, pSrc, pMask, pDst, pixbuf);
+ #endif
++
++#ifdef USE_ARM
++	if (!info && pixman_have_arm())
++	    info = get_fast_path (arm_fast_paths, op, pSrc, pMask, pDst, pixbuf);
++#endif
++
+         if (!info)
+ 	    info = get_fast_path (c_fast_paths, op, pSrc, pMask, pDst, pixbuf);
+ 
diff --git a/recipes/xorg-lib/pixman-0.12.0/pixman-x888-565.patch b/recipes/xorg-lib/pixman-0.12.0/pixman-x888-565.patch
new file mode 100644
index 0000000..a3fa331
--- /dev/null
+++ b/recipes/xorg-lib/pixman-0.12.0/pixman-x888-565.patch
@@ -0,0 +1,68 @@
+From: Vladimir Vukicevic <vladimir at slide.(none)>
+Date: Wed, 17 Sep 2008 20:01:31 +0000 (-0400)
+Subject: Add SRC x888x0565 C fast path
+X-Git-Url: http://gitweb.freedesktop.org/?p=pixman.git;a=commitdiff;h=7180230d4d87c55dfef1e17a0cc3b125d45aa3a0
+
+Add SRC x888x0565 C fast path
+---
+
+--- a/pixman/pixman-pict.c
++++ b/pixman/pixman-pict.c
+@@ -759,6 +759,46 @@ fbCompositeSrc_8888x0565 (pixman_op_t op
+     }
+ }
+ 
++
++void
++fbCompositeSrc_x888x0565 (pixman_op_t op,
++                          pixman_image_t * pSrc,
++                          pixman_image_t * pMask,
++                          pixman_image_t * pDst,
++                          int16_t      xSrc,
++                          int16_t      ySrc,
++                          int16_t      xMask,
++                          int16_t      yMask,
++                          int16_t      xDst,
++                          int16_t      yDst,
++                          uint16_t     width,
++                          uint16_t     height)
++{
++    uint16_t	*dstLine, *dst;
++    uint32_t	*srcLine, *src, s;
++    int	dstStride, srcStride;
++    uint16_t	w;
++
++    fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
++    fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
++
++    while (height--)
++    {
++	dst = dstLine;
++	dstLine += dstStride;
++	src = srcLine;
++	srcLine += srcStride;
++	w = width;
++
++	while (w--)
++	{
++	    s = READ(pSrc, src++);
++	    WRITE(pDst, dst, cvt8888to0565(s));
++	    dst++;
++	}
++    }
++}
++
+ void
+ fbCompositeSrcAdd_8000x8000 (pixman_op_t	op,
+ 			     pixman_image_t * pSrc,
+@@ -1568,6 +1608,10 @@ static const FastPathInfo c_fast_paths[]
+     { PIXMAN_OP_SRC, PIXMAN_r5g6b5,    PIXMAN_null,     PIXMAN_r5g6b5,   fbCompositeSrcSrc_nxn, 0 },
+     { PIXMAN_OP_SRC, PIXMAN_b5g6r5,    PIXMAN_null,     PIXMAN_b5g6r5,   fbCompositeSrcSrc_nxn, 0 },
+ #endif
++    { PIXMAN_OP_SRC, PIXMAN_a8r8g8b8,  PIXMAN_null,     PIXMAN_r5g6b5,   fbCompositeSrc_x888x0565, 0 },
++    { PIXMAN_OP_SRC, PIXMAN_x8r8g8b8,  PIXMAN_null,     PIXMAN_r5g6b5,   fbCompositeSrc_x888x0565, 0 },
++    { PIXMAN_OP_SRC, PIXMAN_a8b8g8r8,  PIXMAN_null,     PIXMAN_b5g6r5,   fbCompositeSrc_x888x0565, 0 },
++    { PIXMAN_OP_SRC, PIXMAN_x8b8g8r8,  PIXMAN_null,     PIXMAN_b5g6r5,   fbCompositeSrc_x888x0565, 0 },
+     { PIXMAN_OP_IN,  PIXMAN_a8,        PIXMAN_null,     PIXMAN_a8,       fbCompositeSrcIn_8x8,   0 },
+     { PIXMAN_OP_IN,  PIXMAN_solid,     PIXMAN_a8,	PIXMAN_a8,	 fbCompositeSolidMaskIn_nx8x8, 0 },
+     { PIXMAN_OP_NONE },
diff --git a/recipes/xorg-lib/pixman-0.13.2/pixman-0.13.2-neon1.patch b/recipes/xorg-lib/pixman-0.13.2/pixman-0.13.2-neon1.patch
new file mode 100644
index 0000000..b3bb762
--- /dev/null
+++ b/recipes/xorg-lib/pixman-0.13.2/pixman-0.13.2-neon1.patch
@@ -0,0 +1,1702 @@
+diff --git a/configure.ac b/configure.ac
+index 063f6eb..bada55c 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -278,11 +278,12 @@ AC_SUBST(VMX_CFLAGS)
+ AM_CONDITIONAL(USE_VMX, test $have_vmx_intrinsics = yes)
+ 
+ dnl Check for ARM SIMD instructions
++ARM_SIMD_CFLAGS=""
+ 
+ have_arm_simd=no
+ AC_MSG_CHECKING(whether to use ARM SIMD assembler)
+ xserver_save_CFLAGS=$CFLAGS
+-CFLAGS="$CFLAGS $ARM_CFLAGS"
++CFLAGS="$CFLAGS $ARM_SIMD_CFLAGS"
+ AC_COMPILE_IFELSE([
+ int main () {
+     asm("uqadd8 r1, r1, r2");
+@@ -302,7 +303,7 @@ fi
+ if test $have_arm_simd = yes ; then
+    AC_DEFINE(USE_ARM_SIMD, 1, [use ARM SIMD compiler intrinsics])
+ else
+-   ARM_CFLAGS=
++   ARM_SIMD_CFLAGS=
+ fi
+ 
+ AC_MSG_RESULT($have_arm_simd)
+@@ -310,9 +311,48 @@ if test $enable_arm_simd = yes && test $have_arm_simd = no ; then
+    AC_MSG_ERROR([ARM SIMD intrinsics not detected])
+ fi
+ 
+-AC_SUBST(ARM_CFLAGS)
++dnl Check for ARM NEON instructions
++ARM_NEON_CFLAGS="-mcpu=cortex-a8 -mfpu=neon"
++
++have_arm_neon=no
++AC_MSG_CHECKING(whether to use ARM NEON)
++xserver_save_CFLAGS=$CFLAGS
++CFLAGS="$CFLAGS $ARM_NEON_CFLAGS"
++AC_COMPILE_IFELSE([
++#include <arm_neon.h>
++int main () {
++    uint8x8_t neon_test=vmov_n_u8(0);
++    return 0;
++}], have_arm_neon=yes)
++CFLAGS=$xserver_save_CFLAGS
++
++AC_ARG_ENABLE(arm-neon,
++   [AC_HELP_STRING([--disable-arm-neon],
++                   [disable ARM NEON fast paths])],
++   [enable_arm_neon=$enableval], [enable_arm_neon=auto])
++
++if test $enable_arm_neon = no ; then
++   have_arm_neon=disabled
++fi
++
++if test $have_arm_neon = yes ; then
++   AC_DEFINE(USE_ARM_NEON, 1, [use ARM NEON compiler intrinsics])
++else
++   ARM_NEON_CFLAGS=
++fi
++
++AC_MSG_RESULT($have_arm_neon)
++if test $enable_arm_neon = yes && test $have_arm_neon = no ; then
++   AC_MSG_ERROR([ARM NEON intrinsics not detected])
++fi
++
++
++AC_SUBST(ARM_SIMD_CFLAGS)
++AC_SUBST(ARM_NEON_CFLAGS)
+ 
+ AM_CONDITIONAL(USE_ARM_SIMD, test $have_arm_simd = yes)
++AM_CONDITIONAL(USE_ARM_NEON, test $have_arm_neon = yes)
++
+ 
+ 
+ AC_ARG_ENABLE(gtk,
+diff --git a/pixman/Makefile.am b/pixman/Makefile.am
+index c4612ea..4c1ec6b 100644
+--- a/pixman/Makefile.am
++++ b/pixman/Makefile.am
+@@ -80,15 +80,26 @@ libpixman_sse2_la_LIBADD = $(DEP_LIBS)
+ libpixman_1_la_LIBADD += libpixman-sse2.la
+ endif
+ 
+-# arm code
++# arm simd code
+ if USE_ARM_SIMD
+ noinst_LTLIBRARIES += libpixman-arm-simd.la
+ libpixman_arm_simd_la_SOURCES = \
+ 	pixman-arm-simd.c \
+ 	pixman-arm-simd.h
+-libpixman_arm_simd_la_CFLAGS = $(DEP_CFLAGS) $(ARM_CFLAGS)
++libpixman_arm_simd_la_CFLAGS = $(DEP_CFLAGS) $(ARM_SIMD_CFLAGS)
+ libpixman_arm_simd_la_LIBADD = $(DEP_LIBS)
+ libpixman_1_la_LIBADD += libpixman-arm-simd.la
+ endif
+ 
++# arm neon code
++if USE_ARM_NEON
++noinst_LTLIBRARIES += libpixman-arm-neon.la
++libpixman_arm_neon_la_SOURCES = \
++        pixman-arm-neon.c \
++        pixman-arm-neon.h
++libpixman_arm_neon_la_CFLAGS = $(DEP_CFLAGS) $(ARM_NEON_CFLAGS)
++libpixman_arm_neon_la_LIBADD = $(DEP_LIBS)
++libpixman_1_la_LIBADD += libpixman-arm-neon.la
++endif
++
+ 
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+new file mode 100644
+index 0000000..10050e4
+--- /dev/null
++++ b/pixman/pixman-arm-neon.c
+@@ -0,0 +1,1387 @@
++/*
++ * Copyright © 2009 Mozilla Corporation
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that
++ * copyright notice and this permission notice appear in supporting
++ * documentation, and that the name of Mozilla Corporation not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission.  Mozilla Corporation makes no
++ * representations about the suitability of this software for any purpose.  It
++ * is provided "as is" without express or implied warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
++ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
++ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
++ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
++ * SOFTWARE.
++ *
++ * Author:  Ian Rickards (ian.rickards at arm.com) 
++ *
++ */
++
++#ifdef HAVE_CONFIG_H
++#include <config.h>
++#endif
++
++#include "pixman-arm-neon.h"
++
++#include <arm_neon.h>
++
++
++#if !defined(__ARMCC_VERSION) && !defined(FORCE_NO_NEON_INLINE_ASM)
++// [both armcc & gcc set __GNUC__]
++// Use GNU style inline asm on gcc, for best performance
++// Use intrinsics on armcc
++// This switch determines if any GNU style inline asm is allowed
++#define USE_NEON_INLINE_ASM
++#endif
++
++
++static force_inline uint8x8x4_t unpack0565(uint16x8_t rgb)
++{
++    uint16x8_t gb, b;
++    uint8x8x4_t res;
++
++    res.val[3] = vdup_n_u8(0);
++    gb = vshrq_n_u16(rgb, 5);
++    b = vshrq_n_u16(rgb, 5+6);
++    res.val[0] = vmovn_u16(rgb);  // get low 5 bits
++    res.val[1] = vmovn_u16(gb);   // get mid 6 bits
++    res.val[2] = vmovn_u16(b);    // get top 5 bits
++
++    res.val[0] = vshl_n_u8(res.val[0], 3); // shift to top
++    res.val[1] = vshl_n_u8(res.val[1], 2); // shift to top
++    res.val[2] = vshl_n_u8(res.val[2], 3); // shift to top
++
++    res.val[0] = vsri_n_u8(res.val[0], res.val[0], 5); 
++    res.val[1] = vsri_n_u8(res.val[1], res.val[1], 6);
++    res.val[2] = vsri_n_u8(res.val[2], res.val[2], 5);
++
++    return res;
++}
++
++static force_inline uint16x8_t pack0565(uint8x8x4_t s)
++{
++    uint16x8_t rgb, val_g, val_r;
++
++    rgb = vshll_n_u8(s.val[2],8);
++    val_g = vshll_n_u8(s.val[1],8);
++    val_r = vshll_n_u8(s.val[0],8);
++    rgb = vsriq_n_u16(rgb, val_g, 5);
++    rgb = vsriq_n_u16(rgb, val_r, 5+6);
++
++    return rgb;
++}
++
++static force_inline uint8x8_t neon2mul(uint8x8_t x, uint8x8_t alpha)
++{
++    uint16x8_t tmp,tmp2;
++    uint8x8_t res;
++
++    tmp = vmull_u8(x,alpha);
++    tmp2 = vrshrq_n_u16(tmp,8);
++    res = vraddhn_u16(tmp,tmp2);
++
++    return res;
++}
++
++static force_inline uint8x8x4_t neon8mul(uint8x8x4_t x, uint8x8_t alpha)
++{
++    uint16x8x4_t tmp;
++    uint8x8x4_t res;
++    uint16x8_t qtmp1,qtmp2;
++
++    tmp.val[0] = vmull_u8(x.val[0],alpha);
++    tmp.val[1] = vmull_u8(x.val[1],alpha);
++    tmp.val[2] = vmull_u8(x.val[2],alpha);
++    tmp.val[3] = vmull_u8(x.val[3],alpha);
++
++    qtmp1 = vrshrq_n_u16(tmp.val[0],8);
++    qtmp2 = vrshrq_n_u16(tmp.val[1],8);
++    res.val[0] = vraddhn_u16(tmp.val[0],qtmp1);
++    qtmp1 = vrshrq_n_u16(tmp.val[2],8);
++    res.val[1] = vraddhn_u16(tmp.val[1],qtmp2);
++    qtmp2 = vrshrq_n_u16(tmp.val[3],8);
++    res.val[2] = vraddhn_u16(tmp.val[2],qtmp1);
++    res.val[3] = vraddhn_u16(tmp.val[3],qtmp2);
++
++    return res;
++}
++
++static force_inline uint8x8x4_t neon8qadd(uint8x8x4_t x, uint8x8x4_t y)
++{
++    uint8x8x4_t res;
++
++    res.val[0] = vqadd_u8(x.val[0],y.val[0]);
++    res.val[1] = vqadd_u8(x.val[1],y.val[1]);
++    res.val[2] = vqadd_u8(x.val[2],y.val[2]);
++    res.val[3] = vqadd_u8(x.val[3],y.val[3]);
++
++    return res;
++}
++
++
++void
++fbCompositeSrcAdd_8000x8000neon (pixman_op_t op,
++                                pixman_image_t * pSrc,
++                                pixman_image_t * pMask,
++                                pixman_image_t * pDst,
++                                int16_t      xSrc,
++                                int16_t      ySrc,
++                                int16_t      xMask,
++                                int16_t      yMask,
++                                int16_t      xDst,
++                                int16_t      yDst,
++                                uint16_t     width,
++                                uint16_t     height)
++{
++    uint8_t     *dstLine, *dst;
++    uint8_t     *srcLine, *src;
++    int dstStride, srcStride;
++    uint16_t    w;
++
++    fbComposeGetStart (pSrc, xSrc, ySrc, uint8_t, srcStride, srcLine, 1);
++    fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 1);
++
++    if (width>=8)
++    {
++        // Use overlapping 8-pixel method
++        while (height--)
++        {
++            dst = dstLine;
++            dstLine += dstStride;
++            src = srcLine;
++            srcLine += srcStride;
++            w = width;
++
++            uint8_t *keep_dst;
++
++#ifndef USE_NEON_INLINE_ASM
++            uint8x8_t sval,dval,temp;
++
++            sval = vld1_u8((void*)src);
++            dval = vld1_u8((void*)dst);
++            keep_dst = dst;
++
++            temp = vqadd_u8(dval,sval);
++
++            src += (w & 7);
++            dst += (w & 7);
++            w -= (w & 7);
++
++            while (w)
++            {
++                sval = vld1_u8((void*)src);
++                dval = vld1_u8((void*)dst);
++
++                vst1_u8((void*)keep_dst,temp);
++                keep_dst = dst;
++
++                temp = vqadd_u8(dval,sval);
++
++                src+=8;
++                dst+=8;
++                w-=8;
++            }
++            vst1_u8((void*)keep_dst,temp);
++#else
++            asm volatile (
++// avoid using d8-d15 (q4-q7) aapcs callee-save registers
++                        "vld1.8  {d0}, [%[src]]\n\t"
++                        "vld1.8  {d4}, [%[dst]]\n\t"
++                        "mov     %[keep_dst], %[dst]\n\t"
++
++                        "and ip, %[w], #7\n\t"
++                        "add %[src], %[src], ip\n\t"
++                        "add %[dst], %[dst], ip\n\t"
++                        "subs %[w], %[w], ip\n\t"
++                        "b 9f\n\t"
++// LOOP
++                        "2:\n\t"
++                        "vld1.8  {d0}, [%[src]]!\n\t"
++                        "vld1.8  {d4}, [%[dst]]!\n\t"
++                        "vst1.8  {d20}, [%[keep_dst]]\n\t"
++                        "sub     %[keep_dst], %[dst], #8\n\t"
++                        "subs %[w], %[w], #8\n\t"
++                        "9:\n\t"
++                        "vqadd.u8 d20, d0, d4\n\t"
++
++                        "bne 2b\n\t"
++
++                        "1:\n\t"
++                        "vst1.8  {d20}, [%[keep_dst]]\n\t"
++
++                        : [w] "+r" (w), [src] "+r" (src), [dst] "+r" (dst), [keep_dst] "+r" (keep_dst)
++                        :
++                        : "ip", "cc", "memory", "d0","d4",
++                          "d20"
++                        );
++#endif
++        }
++    }
++    else
++    {
++        while (height--)
++        {
++            dst = dstLine;
++            dstLine += dstStride;
++            src = srcLine;
++            srcLine += srcStride;
++            w = width;
++            uint8x8_t sval, dval;
++            uint8_t *dst4, *dst2;
++
++            if (w&4)
++            {
++                sval = vreinterpret_u8_u32(vld1_lane_u32((void*)src,vreinterpret_u32_u8(sval),1));
++                dval = vreinterpret_u8_u32(vld1_lane_u32((void*)dst,vreinterpret_u32_u8(dval),1));
++                dst4=dst;
++                src+=4;
++                dst+=4;
++            }
++            if (w&2)
++            {
++                sval = vreinterpret_u8_u16(vld1_lane_u16((void*)src,vreinterpret_u16_u8(sval),1));
++                dval = vreinterpret_u8_u16(vld1_lane_u16((void*)dst,vreinterpret_u16_u8(dval),1));
++                dst2=dst;
++                src+=2;
++                dst+=2;
++            }
++            if (w&1)
++            {
++                sval = vld1_lane_u8((void*)src,sval,1);
++                dval = vld1_lane_u8((void*)dst,dval,1);
++            }
++
++            dval = vqadd_u8(dval,sval);
++
++            if (w&1)
++                vst1_lane_u8((void*)dst,dval,1);
++            if (w&2)
++                vst1_lane_u16((void*)dst2,vreinterpret_u16_u8(dval),1);
++            if (w&4)
++                vst1_lane_u32((void*)dst4,vreinterpret_u32_u8(dval),1);
++        }
++    }
++}
++
++
++void
++fbCompositeSrc_8888x8888neon (pixman_op_t op,
++			 pixman_image_t * pSrc,
++			 pixman_image_t * pMask,
++			 pixman_image_t * pDst,
++			 int16_t      xSrc,
++			 int16_t      ySrc,
++			 int16_t      xMask,
++			 int16_t      yMask,
++			 int16_t      xDst,
++			 int16_t      yDst,
++			 uint16_t     width,
++			 uint16_t     height)
++{
++    uint32_t	*dstLine, *dst;
++    uint32_t	*srcLine, *src;
++    int	dstStride, srcStride;
++    uint32_t	w;
++
++    fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
++    fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
++
++    if (width>=8)
++    {
++        // Use overlapping 8-pixel method  
++        while (height--)
++        {
++	    dst = dstLine;
++	    dstLine += dstStride;
++	    src = srcLine;
++	    srcLine += srcStride;
++	    w = width;
++
++            uint32_t *keep_dst;
++
++#ifndef USE_NEON_INLINE_ASM
++            uint8x8x4_t sval,dval,temp;
++
++            sval = vld4_u8((void*)src);
++            dval = vld4_u8((void*)dst);
++            keep_dst = dst;
++
++            temp = neon8mul(dval,vmvn_u8(sval.val[3]));
++            temp = neon8qadd(sval,temp);
++
++            src += (w & 7);
++            dst += (w & 7);
++            w -= (w & 7);
++
++            while (w)
++            {
++                sval = vld4_u8((void*)src);
++                dval = vld4_u8((void*)dst);
++
++                vst4_u8((void*)keep_dst,temp);
++                keep_dst = dst;
++
++                temp = neon8mul(dval,vmvn_u8(sval.val[3]));
++                temp = neon8qadd(sval,temp);
++
++                src+=8;
++                dst+=8;
++                w-=8;
++            }
++            vst4_u8((void*)keep_dst,temp);
++#else
++            asm volatile (
++// avoid using d8-d15 (q4-q7) aapcs callee-save registers
++                        "vld4.8  {d0-d3}, [%[src]]\n\t"
++                        "vld4.8  {d4-d7}, [%[dst]]\n\t"
++                        "mov     %[keep_dst], %[dst]\n\t"
++
++                        "and ip, %[w], #7\n\t"
++                        "add %[src], %[src], ip, LSL#2\n\t"
++                        "add %[dst], %[dst], ip, LSL#2\n\t"
++                        "subs %[w], %[w], ip\n\t"
++                        "b 9f\n\t"
++// LOOP
++                        "2:\n\t"
++                        "vld4.8  {d0-d3}, [%[src]]!\n\t"
++                        "vld4.8  {d4-d7}, [%[dst]]!\n\t"
++                        "vst4.8  {d20-d23}, [%[keep_dst]]\n\t"
++                        "sub     %[keep_dst], %[dst], #8*4\n\t"
++                        "subs %[w], %[w], #8\n\t"
++                        "9:\n\t"
++                        "vmvn.8  d31, d3\n\t"
++                        "vmull.u8 q10, d31, d4\n\t"
++                        "vmull.u8 q11, d31, d5\n\t"
++                        "vmull.u8 q12, d31, d6\n\t"
++                        "vmull.u8 q13, d31, d7\n\t"
++                        "vrshr.u16 q8, q10, #8\n\t"
++                        "vrshr.u16 q9, q11, #8\n\t"
++                        "vraddhn.u16 d20, q10, q8\n\t"
++                        "vraddhn.u16 d21, q11, q9\n\t"
++                        "vrshr.u16 q8, q12, #8\n\t"
++                        "vrshr.u16 q9, q13, #8\n\t"
++                        "vraddhn.u16 d22, q12, q8\n\t"
++                        "vraddhn.u16 d23, q13, q9\n\t"
++// result in d20-d23
++                        "vqadd.u8 d20, d0, d20\n\t"
++                        "vqadd.u8 d21, d1, d21\n\t"
++                        "vqadd.u8 d22, d2, d22\n\t"
++                        "vqadd.u8 d23, d3, d23\n\t"
++
++                        "bne 2b\n\t"
++
++                        "1:\n\t"
++                        "vst4.8  {d20-d23}, [%[keep_dst]]\n\t"
++
++                        : [w] "+r" (w), [src] "+r" (src), [dst] "+r" (dst), [keep_dst] "+r" (keep_dst)
++                        : 
++                        : "ip", "cc", "memory", "d0","d1","d2","d3","d4","d5","d6","d7",
++                          "d16","d17","d18","d19","d20","d21","d22","d23"
++                        );
++#endif
++        }
++    }
++    else
++    {
++        uint8x8_t    alpha_selector=vreinterpret_u8_u64(vcreate_u64(0x0707070703030303ULL));
++
++        // Handle width<8
++        while (height--)
++        {
++            dst = dstLine;
++            dstLine += dstStride;
++            src = srcLine;
++            srcLine += srcStride;
++            w = width;
++
++            while (w>=2)
++            {
++                uint8x8_t sval,dval;
++
++                /* two 32-bit pixels packed into D-reg; ad-hoc vectorization */
++                sval = vreinterpret_u8_u32(vld1_u32((void*)src));
++                dval = vreinterpret_u8_u32(vld1_u32((void*)dst));
++                dval = neon2mul(dval,vtbl1_u8(vmvn_u8(sval),alpha_selector));
++                vst1_u8((void*)dst,vqadd_u8(sval,dval));
++
++                src+=2;
++                dst+=2;
++                w-=2;
++            }
++
++            if (w)
++            {
++                uint8x8_t sval,dval;
++
++                /* single 32-bit pixel in lane 0 */
++                sval = vreinterpret_u8_u32(vld1_dup_u32((void*)src));  // only interested in lane 0
++                dval = vreinterpret_u8_u32(vld1_dup_u32((void*)dst));  // only interested in lane 0
++                dval = neon2mul(dval,vtbl1_u8(vmvn_u8(sval),alpha_selector));
++                vst1_lane_u32((void*)dst,vreinterpret_u32_u8(vqadd_u8(sval,dval)),0);
++            }
++        }
++    }
++}
++
++
++
++void
++fbCompositeSrc_x888x0565neon (pixman_op_t op,
++                          pixman_image_t * pSrc,
++                          pixman_image_t * pMask,
++                          pixman_image_t * pDst,
++                          int16_t      xSrc,
++                          int16_t      ySrc,
++                          int16_t      xMask,
++                          int16_t      yMask,
++                          int16_t      xDst,
++                          int16_t      yDst,
++                          uint16_t     width,
++                          uint16_t     height)
++{
++    uint16_t    *dstLine, *dst;
++    uint32_t    *srcLine, *src;
++    int dstStride, srcStride;
++    uint32_t    w;
++
++    fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
++    fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
++
++    if (width>=8)
++    {
++        while (height--)
++        {
++            dst = dstLine;
++            dstLine += dstStride;
++            src = srcLine;
++            srcLine += srcStride;
++            w = width;
++
++	    do {
++	        while (w>=8)
++	        {
++#ifndef USE_NEON_INLINE_ASM
++	            vst1q_u16(dst, pack0565(vld4_u8((void*)src)));
++#else
++                    asm volatile (
++                        "vld4.8       {d4-d7}, [%[src]]\n\t"
++                        "vshll.u8     q0, d6, #8\n\t"
++                        "vshll.u8     q1, d5, #8\n\t"
++                        "vsriq.u16    q0, q1, #5\t\n"
++                        "vshll.u8     q1, d4, #8\n\t"
++                        "vsriq.u16    q0, q1, #11\t\n"
++                        "vst1.16      {q0}, [%[dst]]\n\t"
++                        :
++                        : [dst] "r" (dst), [src] "r" (src)
++                        : "memory", "d0","d1","d2","d3","d4","d5","d6","d7"
++                        );
++#endif
++	            src+=8;
++	            dst+=8;
++	            w-=8;
++          	}
++                if (w != 0)
++                {
++                    src -= (8-w);
++                    dst -= (8-w);
++                    w = 8;  // do another vector
++                }
++            } while (w!=0);
++        }
++    }
++    else
++    {
++        // Handle width<8
++        while (height--)
++        {
++            dst = dstLine;
++            dstLine += dstStride;
++            src = srcLine;
++            srcLine += srcStride;
++            w = width;
++
++	    while (w>=2)
++	    {
++	        uint32x2_t sval, rgb, g, b;
++	        sval = vld1_u32(src);
++	        rgb = vshr_n_u32(sval,8-5); // r (5 bits) 
++	        g = vshr_n_u32(sval,8+8-6);  // g to bottom byte
++	        rgb = vsli_n_u32(rgb, g, 5);
++	        b = vshr_n_u32(sval,8+8+8-5);  // b to bottom byte
++                rgb = vsli_n_u32(rgb, b, 11);
++	        vst1_lane_u16(dst++,vreinterpret_u16_u32(rgb),0);
++	        vst1_lane_u16(dst++,vreinterpret_u16_u32(rgb),2);
++	        src+=2;
++	        w-=2;
++	    }
++            if (w)
++            {
++                uint32x2_t sval, rgb, g, b;
++                sval = vld1_dup_u32(src);
++                rgb = vshr_n_u32(sval,8-5); // r (5 bits)
++                g = vshr_n_u32(sval,8+8-6);  // g to bottom byte
++                rgb = vsli_n_u32(rgb, g, 5);
++                b = vshr_n_u32(sval,8+8+8-5);  // b to bottom byte
++                rgb = vsli_n_u32(rgb, b, 11);
++                vst1_lane_u16(dst++,vreinterpret_u16_u32(rgb),0);
++            }
++	}
++    }
++}
++
++
++void
++fbCompositeSrc_8888x8x8888neon (pixman_op_t op,
++			       pixman_image_t * pSrc,
++			       pixman_image_t * pMask,
++			       pixman_image_t * pDst,
++			       int16_t	xSrc,
++			       int16_t	ySrc,
++			       int16_t      xMask,
++			       int16_t      yMask,
++			       int16_t      xDst,
++			       int16_t      yDst,
++			       uint16_t     width,
++			       uint16_t     height)
++{
++    uint32_t	*dstLine, *dst;
++    uint32_t	*srcLine, *src;
++    uint32_t	mask;
++    int	dstStride, srcStride;
++    uint32_t	w;
++    uint8x8_t mask_alpha;
++
++    fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
++    fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
++
++    fbComposeGetSolid (pMask, mask, pDst->bits.format);
++    mask_alpha = vdup_n_u8((mask) >> 24);
++
++    if (width>=8)
++    {
++        // Use overlapping 8-pixel method
++        while (height--)
++        {
++            dst = dstLine;
++            dstLine += dstStride;
++            src = srcLine;
++            srcLine += srcStride;
++            w = width;
++
++            uint32_t *keep_dst;
++
++#ifndef USE_NEON_INLINE_ASM
++            uint8x8x4_t sval,dval,temp;
++
++            sval = vld4_u8((void*)src);
++            dval = vld4_u8((void*)dst);
++            keep_dst = dst;
++
++            sval = neon8mul(sval,mask_alpha);
++            temp = neon8mul(dval,vmvn_u8(sval.val[3]));
++            temp = neon8qadd(sval,temp);
++
++            src += (w & 7);
++            dst += (w & 7);
++            w -= (w & 7);
++
++            while (w)
++            {
++                sval = vld4_u8((void*)src);
++                dval = vld4_u8((void*)dst);
++
++                vst4_u8((void*)keep_dst,temp);
++                keep_dst = dst;
++
++                sval = neon8mul(sval,mask_alpha);
++                temp = neon8mul(dval,vmvn_u8(sval.val[3]));
++                temp = neon8qadd(sval,temp);
++
++                src+=8;
++                dst+=8;
++                w-=8;
++            }
++            vst4_u8((void*)keep_dst,temp);
++#else
++            asm volatile (
++// avoid using d8-d15 (q4-q7) aapcs callee-save registers
++                        "vdup.32      d30, %[mask]\n\t"
++                        "vdup.8       d30, d30[3]\n\t"
++
++                        "vld4.8       {d0-d3}, [%[src]]\n\t"
++                        "vld4.8       {d4-d7}, [%[dst]]\n\t"
++                        "mov  %[keep_dst], %[dst]\n\t"
++
++                        "and  ip, %[w], #7\n\t"
++                        "add  %[src], %[src], ip, LSL#2\n\t"
++                        "add  %[dst], %[dst], ip, LSL#2\n\t"
++                        "subs  %[w], %[w], ip\n\t"
++                        "b 9f\n\t"
++// LOOP
++                        "2:\n\t"
++                        "vld4.8       {d0-d3}, [%[src]]!\n\t"
++                        "vld4.8       {d4-d7}, [%[dst]]!\n\t"
++                        "vst4.8       {d20-d23}, [%[keep_dst]]\n\t"
++                        "sub  %[keep_dst], %[dst], #8*4\n\t"
++                        "subs  %[w], %[w], #8\n\t"
++
++                        "9:\n\t"
++                        "vmull.u8     q10, d30, d0\n\t"
++                        "vmull.u8     q11, d30, d1\n\t"
++                        "vmull.u8     q12, d30, d2\n\t"
++                        "vmull.u8     q13, d30, d3\n\t"
++                        "vrshr.u16    q8, q10, #8\n\t"
++                        "vrshr.u16    q9, q11, #8\n\t"
++                        "vraddhn.u16  d0, q10, q8\n\t"
++                        "vraddhn.u16  d1, q11, q9\n\t"
++                        "vrshr.u16    q9, q13, #8\n\t"
++                        "vrshr.u16    q8, q12, #8\n\t"
++                        "vraddhn.u16  d3, q13, q9\n\t"
++                        "vraddhn.u16  d2, q12, q8\n\t"
++
++                        "vmvn.8       d31, d3\n\t"
++                        "vmull.u8     q10, d31, d4\n\t"
++                        "vmull.u8     q11, d31, d5\n\t"
++                        "vmull.u8     q12, d31, d6\n\t"
++                        "vmull.u8     q13, d31, d7\n\t"
++                        "vrshr.u16    q8, q10, #8\n\t"
++                        "vrshr.u16    q9, q11, #8\n\t"
++                        "vraddhn.u16  d20, q10, q8\n\t"
++                        "vrshr.u16    q8, q12, #8\n\t"
++                        "vraddhn.u16  d21, q11, q9\n\t"
++                        "vrshr.u16    q9, q13, #8\n\t"
++                        "vraddhn.u16  d22, q12, q8\n\t"
++                        "vraddhn.u16  d23, q13, q9\n\t"
++// result in d20-d23
++                        "vqadd.u8     d20, d0, d20\n\t"
++                        "vqadd.u8     d21, d1, d21\n\t"
++                        "vqadd.u8     d22, d2, d22\n\t"
++                        "vqadd.u8     d23, d3, d23\n\t"
++
++                        "bne  2b\n\t"
++
++                        "1:\n\t"
++                        "vst4.8       {d20-d23}, [%[keep_dst]]\n\t"
++
++                        : [w] "+r" (w), [src] "+r" (src), [dst] "+r" (dst), [keep_dst] "+r" (keep_dst)
++                        : [mask] "r" (mask)
++                        : "ip", "cc", "memory", "d0","d1","d2","d3","d4","d5","d6","d7",
++                          "d16","d17","d18","d19","d20","d21","d22","d23","d24","d25","d26","d27",
++                          "d30","d31"
++                        );
++#endif
++        }
++    }
++    else
++    {
++        uint8x8_t    alpha_selector=vreinterpret_u8_u64(vcreate_u64(0x0707070703030303ULL));
++
++        // Handle width<8
++        while (height--)
++        {
++            dst = dstLine;
++            dstLine += dstStride;
++            src = srcLine;
++            srcLine += srcStride;
++            w = width;
++
++            while (w>=2)
++            {
++                uint8x8_t sval,dval;
++
++                sval = vreinterpret_u8_u32(vld1_u32((void*)src));
++                dval = vreinterpret_u8_u32(vld1_u32((void*)dst));
++
++                /* sval * const alpha_mul */
++                sval = neon2mul(sval,mask_alpha);
++
++                /* dval * 255-(src alpha) */
++                dval = neon2mul(dval,vtbl1_u8(vmvn_u8(sval), alpha_selector));
++
++                vst1_u8((void*)dst,vqadd_u8(sval,dval));
++
++                src+=2;
++                dst+=2;
++                w-=2;
++            }
++
++            if (w)
++            {
++                uint8x8_t sval,dval;
++
++                sval = vreinterpret_u8_u32(vld1_dup_u32((void*)src));
++                dval = vreinterpret_u8_u32(vld1_dup_u32((void*)dst));
++
++                /* sval * const alpha_mul */
++                sval = neon2mul(sval,mask_alpha);
++
++                /* dval * 255-(src alpha) */
++                dval = neon2mul(dval,vtbl1_u8(vmvn_u8(sval), alpha_selector));
++
++                vst1_lane_u32((void*)dst,vreinterpret_u32_u8(vqadd_u8(sval,dval)),0);
++            }
++        }
++    }
++}
++
++
++
++void
++fbCompositeSolidMask_nx8x0565neon (pixman_op_t op,
++                               pixman_image_t * pSrc,
++                               pixman_image_t * pMask,
++                               pixman_image_t * pDst,
++                               int16_t      xSrc,
++                               int16_t      ySrc,
++                               int16_t      xMask,
++                               int16_t      yMask,
++                               int16_t      xDst,
++                               int16_t      yDst,
++                               uint16_t     width,
++                               uint16_t     height)
++{
++    uint32_t     src, srca;
++    uint16_t    *dstLine, *dst;
++    uint8_t     *maskLine, *mask;
++    int          dstStride, maskStride;
++    uint32_t     w;
++    uint8x8_t    sval2;
++    uint8x8x4_t  sval8;
++
++    fbComposeGetSolid(pSrc, src, pDst->bits.format);
++
++    srca = src >> 24;
++    if (src == 0)
++        return;
++
++    sval2=vreinterpret_u8_u32(vdup_n_u32(src));
++    sval8.val[0]=vdup_lane_u8(sval2,0);
++    sval8.val[1]=vdup_lane_u8(sval2,1);
++    sval8.val[2]=vdup_lane_u8(sval2,2);
++    sval8.val[3]=vdup_lane_u8(sval2,3);
++
++    fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
++    fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1);
++
++    if (width>=8)
++    {
++        // Use overlapping 8-pixel method, modified to avoid rewritten dest being reused
++        while (height--)
++        {
++            uint16_t *keep_dst;
++
++            dst = dstLine;
++            dstLine += dstStride;
++            mask = maskLine;
++            maskLine += maskStride;
++            w = width;
++
++#ifndef USE_NEON_INLINE_ASM
++            uint8x8_t alpha;
++            uint16x8_t dval, temp; 
++            uint8x8x4_t sval8temp;
++
++            alpha = vld1_u8((void*)mask);
++            dval = vld1q_u16((void*)dst);
++            keep_dst = dst;
++
++            sval8temp = neon8mul(sval8,alpha);
++            temp = pack0565(neon8qadd(sval8temp,neon8mul(unpack0565(dval),vmvn_u8(sval8temp.val[3]))));
++
++            mask += (w & 7);
++            dst += (w & 7);
++            w -= (w & 7);
++
++            while (w)
++            {
++                dval = vld1q_u16((void*)dst);
++	        alpha = vld1_u8((void*)mask);
++
++                vst1q_u16((void*)keep_dst,temp);
++                keep_dst = dst;
++
++                sval8temp = neon8mul(sval8,alpha);
++                temp = pack0565(neon8qadd(sval8temp,neon8mul(unpack0565(dval),vmvn_u8(sval8temp.val[3]))));
++
++                mask+=8;
++                dst+=8;
++                w-=8;
++            }
++            vst1q_u16((void*)keep_dst,temp);
++#else
++        asm volatile (
++                        "vdup.32      d0, %[src]\n\t"
++                        "vdup.8       d1, d0[1]\n\t"
++                        "vdup.8       d2, d0[2]\n\t"
++                        "vdup.8       d3, d0[3]\n\t"
++                        "vdup.8       d0, d0[0]\n\t"
++
++                        "vld1.8       {q12}, [%[dst]]\n\t"
++                        "vld1.8       {d31}, [%[mask]]\n\t"
++                        "mov  %[keep_dst], %[dst]\n\t"
++
++                        "and  ip, %[w], #7\n\t"
++                        "add  %[mask], %[mask], ip\n\t"
++                        "add  %[dst], %[dst], ip, LSL#1\n\t"
++                        "subs  %[w], %[w], ip\n\t"
++                        "b  9f\n\t"
++// LOOP
++                        "2:\n\t"
++
++                        "vld1.16      {q12}, [%[dst]]!\n\t"
++                        "vld1.8       {d31}, [%[mask]]!\n\t"
++                        "vst1.16      {q10}, [%[keep_dst]]\n\t"
++                        "sub  %[keep_dst], %[dst], #8*2\n\t"
++                        "subs  %[w], %[w], #8\n\t"
++                        "9:\n\t"
++// expand 0565 q12 to 8888 {d4-d7}
++                        "vmovn.u16    d4, q12\t\n"
++                        "vshr.u16     q11, q12, #5\t\n"
++                        "vshr.u16     q10, q12, #6+5\t\n"
++                        "vmovn.u16    d5, q11\t\n"
++                        "vmovn.u16    d6, q10\t\n"
++                        "vshl.u8      d4, d4, #3\t\n"
++                        "vshl.u8      d5, d5, #2\t\n"
++                        "vshl.u8      d6, d6, #3\t\n"
++                        "vsri.u8      d4, d4, #5\t\n"
++                        "vsri.u8      d5, d5, #6\t\n"
++                        "vsri.u8      d6, d6, #5\t\n"
++
++                        "vmull.u8     q10, d31, d0\n\t"
++                        "vmull.u8     q11, d31, d1\n\t"
++                        "vmull.u8     q12, d31, d2\n\t"
++                        "vmull.u8     q13, d31, d3\n\t"
++                        "vrshr.u16    q8, q10, #8\n\t"
++                        "vrshr.u16    q9, q11, #8\n\t"
++                        "vraddhn.u16  d20, q10, q8\n\t"
++                        "vraddhn.u16  d21, q11, q9\n\t"
++                        "vrshr.u16    q9, q13, #8\n\t"
++                        "vrshr.u16    q8, q12, #8\n\t"
++                        "vraddhn.u16  d23, q13, q9\n\t"
++                        "vraddhn.u16  d22, q12, q8\n\t"
++
++// duplicate in 4/2/1 & 8pix vsns
++                        "vmvn.8       d30, d23\n\t"
++                        "vmull.u8     q14, d30, d6\n\t"
++                        "vmull.u8     q13, d30, d5\n\t"
++                        "vmull.u8     q12, d30, d4\n\t"
++                        "vrshr.u16    q8, q14, #8\n\t"
++                        "vrshr.u16    q9, q13, #8\n\t"
++                        "vraddhn.u16  d6, q14, q8\n\t"
++                        "vrshr.u16    q8, q12, #8\n\t"
++                        "vraddhn.u16  d5, q13, q9\n\t"
++                        "vqadd.u8     d6, d6, d22\n\t"  // moved up
++                        "vraddhn.u16  d4, q12, q8\n\t"
++// intentionally don't calculate alpha
++// result in d4-d6
++
++//                      "vqadd.u8     d6, d6, d22\n\t"  ** moved up
++                        "vqadd.u8     d5, d5, d21\n\t"
++                        "vqadd.u8     d4, d4, d20\n\t"
++
++// pack 8888 {d20-d23} to 0565 q10
++                        "vshll.u8     q10, d6, #8\n\t"
++                        "vshll.u8     q3, d5, #8\n\t"
++                        "vshll.u8     q2, d4, #8\n\t"
++                        "vsri.u16     q10, q3, #5\t\n"
++                        "vsri.u16     q10, q2, #11\t\n"
++
++                        "bne 2b\n\t"
++
++                        "1:\n\t"
++                        "vst1.16      {q10}, [%[keep_dst]]\n\t"
++
++                        : [w] "+r" (w), [dst] "+r" (dst), [mask] "+r" (mask), [keep_dst] "+r" (keep_dst)
++                        : [src] "r" (src)
++                        : "ip", "cc", "memory", "d0","d1","d2","d3","d4","d5","d6","d7",
++                          "d16","d17","d18","d19","d20","d21","d22","d23","d24","d25","d26","d27","d28","d29",
++                          "d30","d31"
++                        );
++#endif
++        }
++    }
++    else
++    {
++        while (height--)
++        {
++            void *dst4, *dst2;
++
++            dst = dstLine;
++            dstLine += dstStride;
++            mask = maskLine;
++            maskLine += maskStride;
++            w = width;
++
++
++#ifndef USE_NEON_INLINE_ASM
++            uint8x8_t alpha;
++            uint16x8_t dval, temp;
++            uint8x8x4_t sval8temp;
++
++            if (w&4)
++            {
++                alpha = vreinterpret_u8_u32(vld1_lane_u32((void*)mask,vreinterpret_u32_u8(alpha),1));
++                dval = vreinterpretq_u16_u64(vld1q_lane_u64((void*)dst,vreinterpretq_u64_u16(dval),1));
++                dst4=dst;
++                mask+=4;
++                dst+=4;
++            }
++            if (w&2)
++            {
++                alpha = vreinterpret_u8_u16(vld1_lane_u16((void*)mask,vreinterpret_u16_u8(alpha),1));
++                dval = vreinterpretq_u16_u32(vld1q_lane_u32((void*)dst,vreinterpretq_u32_u16(dval),1));
++                dst2=dst;
++                mask+=2;
++                dst+=2;
++            }
++            if (w&1)
++            {
++                alpha = vld1_lane_u8((void*)mask,alpha,1);
++                dval = vld1q_lane_u16((void*)dst,dval,1);
++            }
++
++            sval8temp = neon8mul(sval8,alpha);
++            temp = pack0565(neon8qadd(sval8temp,neon8mul(unpack0565(dval),vmvn_u8(sval8temp.val[3]))));
++
++            if (w&1)
++                vst1q_lane_u16((void*)dst,temp,1);
++            if (w&2)
++                vst1q_lane_u32((void*)dst2,vreinterpretq_u32_u16(temp),1);
++            if (w&4)
++                vst1q_lane_u64((void*)dst4,vreinterpretq_u64_u16(temp),1);
++#else
++            asm volatile (
++                        "vdup.32      d0, %[src]\n\t"
++                        "vdup.8       d1, d0[1]\n\t"
++                        "vdup.8       d2, d0[2]\n\t"
++                        "vdup.8       d3, d0[3]\n\t"
++                        "vdup.8       d0, d0[0]\n\t"
++
++                        "tst  %[w], #4\t\n"
++                        "beq  skip_load4\t\n"
++
++                        "vld1.64      {d25}, [%[dst]]\n\t"
++                        "vld1.32      {d31[1]}, [%[mask]]\n\t"
++                        "mov  %[dst4], %[dst]\t\n"
++                        "add  %[mask], %[mask], #4\t\n"
++                        "add  %[dst], %[dst], #4*2\t\n"
++
++                        "skip_load4:\t\n"
++                        "tst  %[w], #2\t\n"
++                        "beq  skip_load2\t\n"
++                        "vld1.32      {d24[1]}, [%[dst]]\n\t"
++                        "vld1.16      {d31[1]}, [%[mask]]\n\t"
++                        "mov  %[dst2], %[dst]\t\n"
++                        "add  %[mask], %[mask], #2\t\n"
++                        "add  %[dst], %[dst], #2*2\t\n"
++
++                        "skip_load2:\t\n"
++                        "tst  %[w], #1\t\n"
++                        "beq  skip_load1\t\n"
++                        "vld1.16      {d24[1]}, [%[dst]]\n\t"
++                        "vld1.8       {d31[1]}, [%[mask]]\n\t"
++
++                        "skip_load1:\t\n"
++// expand 0565 q12 to 8888 {d4-d7}
++                        "vmovn.u16    d4, q12\t\n"
++                        "vshr.u16     q11, q12, #5\t\n"
++                        "vshr.u16     q10, q12, #6+5\t\n"
++                        "vmovn.u16    d5, q11\t\n"
++                        "vmovn.u16    d6, q10\t\n"
++                        "vshl.u8      d4, d4, #3\t\n"
++                        "vshl.u8      d5, d5, #2\t\n"
++                        "vshl.u8      d6, d6, #3\t\n"
++                        "vsri.u8      d4, d4, #5\t\n"
++                        "vsri.u8      d5, d5, #6\t\n"
++                        "vsri.u8      d6, d6, #5\t\n"
++
++                        "vmull.u8     q10, d31, d0\n\t"
++                        "vmull.u8     q11, d31, d1\n\t"
++                        "vmull.u8     q12, d31, d2\n\t"
++                        "vmull.u8     q13, d31, d3\n\t"
++                        "vrshr.u16    q8, q10, #8\n\t"
++                        "vrshr.u16    q9, q11, #8\n\t"
++                        "vraddhn.u16  d20, q10, q8\n\t"
++                        "vraddhn.u16  d21, q11, q9\n\t"
++                        "vrshr.u16    q9, q13, #8\n\t"
++                        "vrshr.u16    q8, q12, #8\n\t"
++                        "vraddhn.u16  d23, q13, q9\n\t"
++                        "vraddhn.u16  d22, q12, q8\n\t"
++
++// duplicate in 4/2/1 & 8pix vsns
++                        "vmvn.8       d30, d23\n\t"
++                        "vmull.u8     q14, d30, d6\n\t"
++                        "vmull.u8     q13, d30, d5\n\t"
++                        "vmull.u8     q12, d30, d4\n\t"
++                        "vrshr.u16    q8, q14, #8\n\t"
++                        "vrshr.u16    q9, q13, #8\n\t"
++                        "vraddhn.u16  d6, q14, q8\n\t"
++                        "vrshr.u16    q8, q12, #8\n\t"
++                        "vraddhn.u16  d5, q13, q9\n\t"
++                        "vqadd.u8     d6, d6, d22\n\t"  // moved up
++                        "vraddhn.u16  d4, q12, q8\n\t"
++// intentionally don't calculate alpha
++// result in d4-d6
++
++//                      "vqadd.u8     d6, d6, d22\n\t"  ** moved up
++                        "vqadd.u8     d5, d5, d21\n\t"
++                        "vqadd.u8     d4, d4, d20\n\t"
++
++// pack 8888 {d20-d23} to 0565 q10
++                        "vshll.u8     q10, d6, #8\n\t"
++                        "vshll.u8     q3, d5, #8\n\t"
++                        "vshll.u8     q2, d4, #8\n\t"
++                        "vsri.u16     q10, q3, #5\t\n"
++                        "vsri.u16     q10, q2, #11\t\n"
++
++                        "tst  %[w], #1\n\t"
++                        "beq skip_store1\t\n"
++                        "vst1.16      {d20[1]}, [%[dst]]\t\n"
++                        "skip_store1:\t\n"
++                        "tst  %[w], #2\n\t"
++                        "beq  skip_store2\t\n"
++                        "vst1.32      {d20[1]}, [%[dst2]]\t\n"
++                        "skip_store2:\t\n"
++                        "tst  %[w], #4\n\t"
++                        "beq skip_store4\t\n"
++                        "vst1.16      {d21}, [%[dst4]]\t\n"
++                        "skip_store4:\t\n"
++
++                        : [w] "+r" (w), [dst] "+r" (dst), [mask] "+r" (mask), [dst4] "+r" (dst4), [dst2] "+r" (dst2)
++                        : [src] "r" (src)
++                        : "ip", "cc", "memory", "d0","d1","d2","d3","d4","d5","d6","d7",
++                          "d16","d17","d18","d19","d20","d21","d22","d23","d24","d25","d26","d27","d28","d29",
++                          "d30","d31"
++                        );
++#endif
++        }
++    }
++}
++
++
++void
++fbCompositeSolidMask_nx8x8888neon (pixman_op_t      op,
++			       pixman_image_t * pSrc,
++			       pixman_image_t * pMask,
++			       pixman_image_t * pDst,
++			       int16_t      xSrc,
++			       int16_t      ySrc,
++			       int16_t      xMask,
++			       int16_t      yMask,
++			       int16_t      xDst,
++			       int16_t      yDst,
++			       uint16_t     width,
++			       uint16_t     height)
++{
++    uint32_t	 src, srca;
++    uint32_t	*dstLine, *dst;
++    uint8_t	*maskLine, *mask;
++    int		 dstStride, maskStride;
++    uint32_t	 w;
++    uint8x8_t    sval2;
++    uint8x8x4_t  sval8;
++    uint8x8_t    mask_selector=vreinterpret_u8_u64(vcreate_u64(0x0101010100000000ULL));
++    uint8x8_t    alpha_selector=vreinterpret_u8_u64(vcreate_u64(0x0707070703030303ULL));
++
++    fbComposeGetSolid(pSrc, src, pDst->bits.format);
++
++    srca = src >> 24;
++    if (src == 0)
++	return;
++
++    sval2=vreinterpret_u8_u32(vdup_n_u32(src));
++    sval8.val[0]=vdup_lane_u8(sval2,0);
++    sval8.val[1]=vdup_lane_u8(sval2,1);
++    sval8.val[2]=vdup_lane_u8(sval2,2);
++    sval8.val[3]=vdup_lane_u8(sval2,3);
++
++    fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
++    fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1);
++
++    if (width>=8)
++    {
++        // Use overlapping 8-pixel method, modified to avoid rewritten dest being reused
++        while (height--)
++        {
++            uint32_t *keep_dst;
++
++            dst = dstLine;
++            dstLine += dstStride;
++            mask = maskLine;
++            maskLine += maskStride;
++            w = width;
++
++#ifndef USE_NEON_INLINE_ASM
++            uint8x8_t alpha;
++            uint8x8x4_t dval, temp;
++
++            alpha = vld1_u8((void*)mask);
++            dval = vld4_u8((void*)dst);
++            keep_dst = dst;
++
++            temp = neon8mul(sval8,alpha);
++            dval = neon8mul(dval,vmvn_u8(temp.val[3]));
++            temp = neon8qadd(temp,dval);
++
++            mask += (w & 7);
++            dst += (w & 7);
++            w -= (w & 7);
++
++            while (w)
++            {
++                alpha = vld1_u8((void*)mask);
++                dval = vld4_u8((void*)dst);
++
++                vst4_u8((void*)keep_dst,temp);
++                keep_dst = dst;
++
++                temp = neon8mul(sval8,alpha);
++                dval = neon8mul(dval,vmvn_u8(temp.val[3]));
++                temp = neon8qadd(temp,dval);
++
++                mask+=8;
++                dst+=8;
++                w-=8;
++            }
++            vst4_u8((void*)keep_dst,temp);
++#else
++        asm volatile (
++                        "vdup.32      d0, %[src]\n\t"
++                        "vdup.8       d1, d0[1]\n\t"
++                        "vdup.8       d2, d0[2]\n\t"
++                        "vdup.8       d3, d0[3]\n\t"
++                        "vdup.8       d0, d0[0]\n\t"
++
++                        "vld4.8       {d4-d7}, [%[dst]]\n\t"
++                        "vld1.8       {d31}, [%[mask]]\n\t"
++                        "mov  %[keep_dst], %[dst]\n\t"
++
++                        "and  ip, %[w], #7\n\t"
++                        "add  %[mask], %[mask], ip\n\t"
++                        "add  %[dst], %[dst], ip, LSL#2\n\t"
++                        "subs  %[w], %[w], ip\n\t"
++                        "b 9f\n\t"
++// LOOP
++                        "2:\n\t" 
++                        "vld4.8       {d4-d7}, [%[dst]]!\n\t"
++                        "vld1.8       {d31}, [%[mask]]!\n\t"
++                        "vst4.8       {d20-d23}, [%[keep_dst]]\n\t"
++                        "sub  %[keep_dst], %[dst], #8*4\n\t"
++                        "subs  %[w], %[w], #8\n\t"
++                        "9:\n\t"
++
++                        "vmull.u8     q10, d31, d0\n\t"
++                        "vmull.u8     q11, d31, d1\n\t"
++                        "vmull.u8     q12, d31, d2\n\t"
++                        "vmull.u8     q13, d31, d3\n\t"
++                        "vrshr.u16    q8, q10, #8\n\t"
++                        "vrshr.u16    q9, q11, #8\n\t"
++                        "vraddhn.u16  d20, q10, q8\n\t"
++                        "vraddhn.u16  d21, q11, q9\n\t"
++                        "vrshr.u16    q9, q13, #8\n\t"
++                        "vrshr.u16    q8, q12, #8\n\t"
++                        "vraddhn.u16  d23, q13, q9\n\t"
++                        "vraddhn.u16  d22, q12, q8\n\t"
++
++                        "vmvn.8       d30, d23\n\t"
++                        "vmull.u8     q12, d30, d4\n\t"
++                        "vmull.u8     q13, d30, d5\n\t"
++                        "vmull.u8     q14, d30, d6\n\t"
++                        "vmull.u8     q15, d30, d7\n\t"
++
++                        "vrshr.u16    q8, q12, #8\n\t"
++                        "vrshr.u16    q9, q13, #8\n\t"
++                        "vraddhn.u16  d4, q12, q8\n\t"
++                        "vrshr.u16    q8, q14, #8\n\t"
++                        "vraddhn.u16  d5, q13, q9\n\t"
++                        "vrshr.u16    q9, q15, #8\n\t"
++                        "vraddhn.u16  d6, q14, q8\n\t"
++                        "vraddhn.u16  d7, q15, q9\n\t"
++// result in d4-d7
++
++                        "vqadd.u8     d20, d4, d20\n\t"
++                        "vqadd.u8     d21, d5, d21\n\t"
++                        "vqadd.u8     d22, d6, d22\n\t"
++                        "vqadd.u8     d23, d7, d23\n\t"
++
++                        "bne 2b\n\t"
++
++                        "1:\n\t"
++                        "vst4.8       {d20-d23}, [%[keep_dst]]\n\t"
++
++                        : [w] "+r" (w), [dst] "+r" (dst), [mask] "+r" (mask), [keep_dst] "+r" (keep_dst)
++                        : [src] "r" (src) 
++                        : "ip", "cc", "memory", "d0","d1","d2","d3","d4","d5","d6","d7",
++                          "d16","d17","d18","d19","d20","d21","d22","d23","d24","d25","d26","d27","d28","d29",
++                          "d30","d31"
++                        );
++#endif
++        }
++    }
++    else
++    {
++        while (height--)
++        {
++            uint8x8_t alpha;
++
++            dst = dstLine;
++            dstLine += dstStride;
++            mask = maskLine;
++            maskLine += maskStride;
++            w = width;
++
++            while (w>=2)
++            {
++                uint8x8_t dval, temp, res;
++
++                alpha = vtbl1_u8(vreinterpret_u8_u16(vld1_dup_u16((void*)mask)), mask_selector);
++                dval = vld1_u8((void*)dst);
++
++                temp = neon2mul(sval2,alpha);
++                res = vqadd_u8(temp,neon2mul(dval,vtbl1_u8(vmvn_u8(temp), alpha_selector)));
++
++                vst1_u8((void*)dst,res);
++
++                mask+=2;
++                dst+=2;
++                w-=2;
++            }
++            if (w)
++            {
++                uint8x8_t dval, temp, res;
++
++                alpha = vtbl1_u8(vld1_dup_u8((void*)mask), mask_selector);
++                dval = vreinterpret_u8_u32(vld1_dup_u32((void*)dst));
++
++                temp = neon2mul(sval2,alpha);
++                res = vqadd_u8(temp,neon2mul(dval,vtbl1_u8(vmvn_u8(temp), alpha_selector)));
++
++                vst1_lane_u32((void*)dst,vreinterpret_u32_u8(res),0);
++            }
++        }
++    }
++}
++
++
++void
++fbCompositeSrcAdd_8888x8x8neon (pixman_op_t op,
++                            pixman_image_t * pSrc,
++                            pixman_image_t * pMask,
++                            pixman_image_t * pDst,
++                            int16_t      xSrc,
++                            int16_t      ySrc,
++                            int16_t      xMask,
++                            int16_t      yMask,
++                            int16_t      xDst,
++                            int16_t      yDst,
++                            uint16_t     width,
++                            uint16_t     height)
++{
++    uint8_t     *dstLine, *dst;
++    uint8_t     *maskLine, *mask;
++    int dstStride, maskStride;
++    uint32_t    w;
++    uint32_t    src;
++    uint8x8_t   sa;
++
++    fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 1);
++    fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1);
++    fbComposeGetSolid (pSrc, src, pDst->bits.format);
++    sa = vdup_n_u8((src) >> 24);
++
++    if (width>=8)
++    {
++        // Use overlapping 8-pixel method, modified to avoid rewritten dest being reused
++        while (height--)
++        {
++            dst = dstLine;
++            dstLine += dstStride;
++            mask = maskLine;
++            maskLine += maskStride;
++            w = width;
++
++            uint8x8_t mval, dval, res;
++            uint8_t     *keep_dst;
++
++            mval = vld1_u8((void *)mask);
++            dval = vld1_u8((void *)dst);
++            keep_dst = dst;
++
++            res = vqadd_u8(neon2mul(mval,sa),dval);
++
++            mask += (w & 7);
++            dst += (w & 7);
++            w -= w & 7;
++
++            while (w)
++            {
++                mval = vld1_u8((void *)mask);
++                dval = vld1_u8((void *)dst);
++                vst1_u8((void *)keep_dst, res);
++                keep_dst = dst;
++
++                res = vqadd_u8(neon2mul(mval,sa),dval);
++
++                mask += 8;
++                dst += 8;
++                w -= 8;
++            }
++            vst1_u8((void *)keep_dst, res);
++        }
++    }
++    else
++    {
++        // Use 4/2/1 load/store method to handle 1-7 pixels
++        while (height--)
++        {
++            dst = dstLine;
++            dstLine += dstStride;
++            mask = maskLine;
++            maskLine += maskStride;
++            w = width;
++
++            uint8x8_t mval, dval, res;
++            uint8_t *dst4, *dst2;
++
++            if (w&4)
++            {
++                mval = vreinterpret_u8_u32(vld1_lane_u32((void *)mask, vreinterpret_u32_u8(mval), 1));
++                dval = vreinterpret_u8_u32(vld1_lane_u32((void *)dst, vreinterpret_u32_u8(dval), 1));
++
++                dst4 = dst;
++                mask += 4;
++                dst += 4;
++            }
++            if (w&2)
++            {
++                mval = vreinterpret_u8_u16(vld1_lane_u16((void *)mask, vreinterpret_u16_u8(mval), 1));
++                dval = vreinterpret_u8_u16(vld1_lane_u16((void *)dst, vreinterpret_u16_u8(dval), 1));
++                dst2 = dst;
++                mask += 2;
++                dst += 2;
++            }
++            if (w&1)
++            {
++                mval = vld1_lane_u8((void *)mask, mval, 1);
++                dval = vld1_lane_u8((void *)dst, dval, 1);
++            }
++
++            res = vqadd_u8(neon2mul(mval,sa),dval);
++
++            if (w&1)
++                vst1_lane_u8((void *)dst, res, 1);
++            if (w&2)
++                vst1_lane_u16((void *)dst2, vreinterpret_u16_u8(res), 1);
++            if (w&4)
++                vst1_lane_u32((void *)dst4, vreinterpret_u32_u8(res), 1);
++        }
++    }
++}
++
+diff --git a/pixman/pixman-arm-neon.h b/pixman/pixman-arm-neon.h
+new file mode 100644
+index 0000000..bab4dee
+--- /dev/null
++++ b/pixman/pixman-arm-neon.h
+@@ -0,0 +1,137 @@
++/*
++ * Copyright © 2009 Mozilla Corporation
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that
++ * copyright notice and this permission notice appear in supporting
++ * documentation, and that the name of Mozilla Corporation not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission.  Mozilla Corporation makes no
++ * representations about the suitability of this software for any purpose.  It
++ * is provided "as is" without express or implied warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
++ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
++ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
++ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
++ * SOFTWARE.
++ *
++ * Author:  Ian Rickards (ian.rickards at arm.com)
++ *
++ */
++
++#include "pixman-private.h"
++
++#ifdef USE_ARM_NEON
++
++static inline pixman_bool_t pixman_have_arm_neon(void) { return TRUE; }
++
++#else
++#define pixman_have_arm_neon() FALSE
++#endif
++
++#ifdef USE_ARM_NEON
++
++void
++fbCompositeSrcAdd_8000x8000neon (pixman_op_t op,
++                        pixman_image_t * pSrc,
++                        pixman_image_t * pMask,
++                        pixman_image_t * pDst,
++                        int16_t      xSrc,
++                        int16_t      ySrc,
++                        int16_t      xMask,
++                        int16_t      yMask,
++                        int16_t      xDst,
++                        int16_t      yDst,
++                        uint16_t     width,
++                        uint16_t     height);
++
++void
++fbCompositeSrc_8888x8888neon (pixman_op_t op,
++			pixman_image_t * pSrc,
++			pixman_image_t * pMask,
++			pixman_image_t * pDst,
++			int16_t      xSrc,
++			int16_t      ySrc,
++			int16_t      xMask,
++			int16_t      yMask,
++			int16_t      xDst,
++			int16_t      yDst,
++			uint16_t     width,
++			uint16_t     height);
++
++void
++fbCompositeSrc_8888x8x8888neon (pixman_op_t op,
++			pixman_image_t * pSrc,
++			pixman_image_t * pMask,
++			pixman_image_t * pDst,
++			int16_t      xSrc,
++			int16_t      ySrc,
++			int16_t      xMask,
++			int16_t      yMask,
++			int16_t      xDst,
++			int16_t      yDst,
++			uint16_t     width,
++			uint16_t     height);
++
++void
++fbCompositeSolidMask_nx8x0565neon (pixman_op_t op,
++                        pixman_image_t * pSrc,
++                        pixman_image_t * pMask,
++                        pixman_image_t * pDst,
++                        int16_t      xSrc,
++                        int16_t      ySrc,
++                        int16_t      xMask,
++                        int16_t      yMask,
++                        int16_t      xDst,
++                        int16_t      yDst,
++                        uint16_t     width,
++                        uint16_t     height);
++
++void
++fbCompositeSolidMask_nx8x8888neon (pixman_op_t op,
++			pixman_image_t * pSrc,
++			pixman_image_t * pMask,
++			pixman_image_t * pDst,
++			int16_t      xSrc,
++			int16_t      ySrc,
++			int16_t      xMask,
++			int16_t      yMask,
++			int16_t      xDst,
++			int16_t      yDst,
++		 	uint16_t     width,
++			uint16_t     height);
++
++void
++fbCompositeSrc_x888x0565neon (pixman_op_t op,
++                        pixman_image_t * pSrc,
++                        pixman_image_t * pMask,
++                        pixman_image_t * pDst,
++                        int16_t      xSrc,
++                        int16_t      ySrc,
++                        int16_t      xMask,
++                        int16_t      yMask,
++                        int16_t      xDst,
++                        int16_t      yDst,
++                        uint16_t     width,
++                        uint16_t     height);
++
++void
++fbCompositeSrcAdd_8888x8x8neon (pixman_op_t op,
++                        pixman_image_t * pSrc,
++                        pixman_image_t * pMask,
++                        pixman_image_t * pDst,
++                        int16_t      xSrc,
++                        int16_t      ySrc,
++                        int16_t      xMask,
++                        int16_t      yMask,
++                        int16_t      xDst,
++                        int16_t      yDst,
++                        uint16_t     width,
++                        uint16_t     height);
++
++#endif /* USE_ARM_NEON */
+diff --git a/pixman/pixman-pict.c b/pixman/pixman-pict.c
+index 1388517..b13947a 100644
+--- a/pixman/pixman-pict.c
++++ b/pixman/pixman-pict.c
+@@ -34,6 +34,7 @@
+ #include "pixman-mmx.h"
+ #include "pixman-vmx.h"
+ #include "pixman-sse2.h"
++#include "pixman-arm-neon.h"
+ #include "pixman-arm-simd.h"
+ #include "pixman-combine32.h"
+ 
+@@ -1518,6 +1519,31 @@ static const FastPathInfo vmx_fast_paths[] =
+ };
+ #endif
+ 
++#ifdef USE_ARM_NEON
++static const FastPathInfo arm_neon_fast_paths[] =
++{
++    { PIXMAN_OP_ADD,  PIXMAN_solid,    PIXMAN_a8,       PIXMAN_a8,       fbCompositeSrcAdd_8888x8x8neon,        0 },
++    { PIXMAN_OP_ADD,  PIXMAN_a8,       PIXMAN_null,     PIXMAN_a8,       fbCompositeSrcAdd_8000x8000neon,       0 },
++    { PIXMAN_OP_SRC,  PIXMAN_a8r8g8b8, PIXMAN_null,     PIXMAN_r5g6b5,   fbCompositeSrc_x888x0565neon,          0 },
++    { PIXMAN_OP_SRC,  PIXMAN_x8r8g8b8, PIXMAN_null,     PIXMAN_r5g6b5,   fbCompositeSrc_x888x0565neon,          0 },
++    { PIXMAN_OP_SRC,  PIXMAN_a8b8g8r8, PIXMAN_null,     PIXMAN_b5g6r5,   fbCompositeSrc_x888x0565neon,          0 },
++    { PIXMAN_OP_SRC,  PIXMAN_x8b8g8r8, PIXMAN_null,     PIXMAN_b5g6r5,   fbCompositeSrc_x888x0565neon,          0 },
++    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null,     PIXMAN_a8r8g8b8, fbCompositeSrc_8888x8888neon,          0 },
++    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null,     PIXMAN_x8r8g8b8, fbCompositeSrc_8888x8888neon,          0 },
++    { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null,     PIXMAN_a8b8g8r8, fbCompositeSrc_8888x8888neon,          0 },
++    { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null,     PIXMAN_x8b8g8r8, fbCompositeSrc_8888x8888neon,          0 },
++    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8,       PIXMAN_a8r8g8b8, fbCompositeSrc_8888x8x8888neon,        NEED_SOLID_MASK },
++    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8,       PIXMAN_x8r8g8b8, fbCompositeSrc_8888x8x8888neon,        NEED_SOLID_MASK },
++    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_r5g6b5,   fbCompositeSolidMask_nx8x0565neon,     0 },
++    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_b5g6r5,   fbCompositeSolidMask_nx8x0565neon,     0 },
++    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_a8r8g8b8, fbCompositeSolidMask_nx8x8888neon,     0 },
++    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_x8r8g8b8, fbCompositeSolidMask_nx8x8888neon,     0 },
++    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_a8b8g8r8, fbCompositeSolidMask_nx8x8888neon,     0 },
++    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_x8b8g8r8, fbCompositeSolidMask_nx8x8888neon,     0 },
++    { PIXMAN_OP_NONE },
++};
++#endif
++
+ #ifdef USE_ARM_SIMD
+ static const FastPathInfo arm_simd_fast_paths[] =
+ {
+@@ -1893,6 +1919,11 @@ pixman_image_composite (pixman_op_t      op,
+ 	    info = get_fast_path (vmx_fast_paths, op, pSrc, pMask, pDst, pixbuf);
+ #endif
+ 
++#ifdef USE_ARM_NEON
++        if (!info && pixman_have_arm_neon())
++            info = get_fast_path (arm_neon_fast_paths, op, pSrc, pMask, pDst, pixbuf);
++#endif
++
+ #ifdef USE_ARM_SIMD
+ 	if (!info && pixman_have_arm_simd())
+ 	    info = get_fast_path (arm_simd_fast_paths, op, pSrc, pMask, pDst, pixbuf);
diff --git a/recipes/xorg-lib/pixman-0.17.8/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/recipes/xorg-lib/pixman-0.17.8/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
deleted file mode 100644
index 25ce7ee..0000000
--- a/recipes/xorg-lib/pixman-0.17.8/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From c29c9fa826b7112156fd6150b5f1564227935c05 Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Thu, 22 Oct 2009 05:27:33 +0300
-Subject: [PATCH 3/6] Generic C implementation of pixman_blt with overlapping support
-
-Uses memcpy/memmove functions to copy pixels, can handle the
-case when both source and destination areas are in the same
-image (this is useful for scrolling).
-
-It is assumed that copying direction is only important when
-using the same image for both source and destination (and
-src_stride == dst_stride). Copying direction is undefined
-for the images with different source and destination stride
-which happen to be in the overlapped areas (but this is an
-unrealistic case anyway).
----
- pixman/pixman-general.c |   21 ++++++++++++++++++---
- pixman/pixman-private.h |   43 +++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 61 insertions(+), 3 deletions(-)
-
-diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c
-index c96a3f9..d71a299 100644
---- a/pixman/pixman-general.c
-+++ b/pixman/pixman-general.c
-@@ -300,9 +300,24 @@ general_blt (pixman_implementation_t *imp,
-              int                      width,
-              int                      height)
- {
--    /* We can't blit unless we have sse2 or mmx */
--
--    return FALSE;
-+    uint8_t *dst_bytes = (uint8_t *)dst_bits;
-+    uint8_t *src_bytes = (uint8_t *)src_bits;
-+    int bpp;
-+
-+    if (src_bpp != dst_bpp || src_bpp & 7)
-+	return FALSE;
-+
-+    bpp = src_bpp >> 3;
-+    width *= bpp;
-+    src_stride *= 4;
-+    dst_stride *= 4;
-+    pixman_blt_helper (src_bytes + src_y * src_stride + src_x * bpp,
-+                       dst_bytes + dst_y * dst_stride + dst_x * bpp,
-+                       src_stride,
-+                       dst_stride,
-+                       width,
-+                       height);
-+    return TRUE;
- }
- 
- static pixman_bool_t
-diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
-index 5000f91..8c5d4fd 100644
---- a/pixman/pixman-private.h
-+++ b/pixman/pixman-private.h
-@@ -10,6 +10,7 @@
- 
- #include "pixman.h"
- #include <time.h>
-+#include <string.h>
- #include <assert.h>
- 
- #include "pixman-compiler.h"
-@@ -794,4 +795,46 @@ void pixman_timer_register (pixman_timer_t *timer);
- 
- #endif /* PIXMAN_TIMERS */
- 
-+/* a helper function, can blit 8-bit images with src/dst overlapping support */
-+static inline void
-+pixman_blt_helper (uint8_t *src_bytes,
-+                   uint8_t *dst_bytes,
-+                   int      src_stride,
-+                   int      dst_stride,
-+                   int      width,
-+                   int      height)
-+{
-+    /*
-+     * The second part of this check is not strictly needed, but it prevents
-+     * unnecessary upside-down processing of areas which belong to different
-+     * images. Upside-down processing can be slower with fixed-distance-ahead
-+     * prefetch and perceived as having more tearing.
-+     */
-+    if (src_bytes < dst_bytes + width &&
-+	src_bytes + src_stride * height > dst_bytes)
-+    {
-+	src_bytes += src_stride * height - src_stride;
-+	dst_bytes += dst_stride * height - dst_stride;
-+	dst_stride = -dst_stride;
-+	src_stride = -src_stride;
-+	/* Horizontal scrolling to the left needs memmove */
-+	if (src_bytes + width > dst_bytes)
-+	{
-+	    while (--height >= 0)
-+	    {
-+		memmove (dst_bytes, src_bytes, width);
-+		dst_bytes += dst_stride;
-+		src_bytes += src_stride;
-+	    }
-+	    return;
-+	}
-+    }
-+    while (--height >= 0)
-+    {
-+	memcpy (dst_bytes, src_bytes, width);
-+	dst_bytes += dst_stride;
-+	src_bytes += src_stride;
-+    }
-+}
-+
- #endif /* PIXMAN_PRIVATE_H */
--- 
-1.6.2.4
-
diff --git a/recipes/xorg-lib/pixman-0.17.8/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/recipes/xorg-lib/pixman-0.17.8/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
deleted file mode 100644
index 74c7b45..0000000
--- a/recipes/xorg-lib/pixman-0.17.8/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 7ca32542c957ff308a6ca7e3715e6552a65ae395 Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Thu, 22 Oct 2009 05:45:47 +0300
-Subject: [PATCH 4/6] Support of overlapping src/dst for pixman_blt_mmx
-
----
- pixman/pixman-mmx.c |   55 +++++++++++++++++++++++++++++---------------------
- 1 files changed, 32 insertions(+), 23 deletions(-)
-
-diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
-index 819e3a0..dcccadb 100644
---- a/pixman/pixman-mmx.c
-+++ b/pixman/pixman-mmx.c
-@@ -3002,34 +3002,43 @@ pixman_blt_mmx (uint32_t *src_bits,
- {
-     uint8_t *   src_bytes;
-     uint8_t *   dst_bytes;
--    int byte_width;
-+    int         bpp;
- 
--    if (src_bpp != dst_bpp)
-+    if (src_bpp != dst_bpp || src_bpp & 7)
- 	return FALSE;
- 
--    if (src_bpp == 16)
--    {
--	src_stride = src_stride * (int) sizeof (uint32_t) / 2;
--	dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
--	src_bytes = (uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
--	dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
--	byte_width = 2 * width;
--	src_stride *= 2;
--	dst_stride *= 2;
--    }
--    else if (src_bpp == 32)
-+    bpp = src_bpp >> 3;
-+    width *= bpp;
-+    src_stride *= 4;
-+    dst_stride *= 4;
-+    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
-+    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
-+
-+    if (src_bpp != 16 && src_bpp != 32)
-     {
--	src_stride = src_stride * (int) sizeof (uint32_t) / 4;
--	dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
--	src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
--	dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
--	byte_width = 4 * width;
--	src_stride *= 4;
--	dst_stride *= 4;
-+	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
-+	                   width, height);
-+	return TRUE;
-     }
--    else
-+
-+    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
-     {
--	return FALSE;
-+	src_bytes += src_stride * height - src_stride;
-+	dst_bytes += dst_stride * height - dst_stride;
-+	dst_stride = -dst_stride;
-+	src_stride = -src_stride;
-+
-+	if (src_bytes + width > dst_bytes)
-+	{
-+	    /* TODO: reverse scanline copy using MMX */
-+	    while (--height >= 0)
-+	    {
-+		memmove (dst_bytes, src_bytes, width);
-+		dst_bytes += dst_stride;
-+		src_bytes += src_stride;
-+	    }
-+	    return TRUE;
-+	}
-     }
- 
-     while (height--)
-@@ -3039,7 +3048,7 @@ pixman_blt_mmx (uint32_t *src_bits,
- 	uint8_t *d = dst_bytes;
- 	src_bytes += src_stride;
- 	dst_bytes += dst_stride;
--	w = byte_width;
-+	w = width;
- 
- 	while (w >= 2 && ((unsigned long)d & 3))
- 	{
--- 
-1.6.2.4
-
diff --git a/recipes/xorg-lib/pixman-0.17.8/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/recipes/xorg-lib/pixman-0.17.8/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
deleted file mode 100644
index 3704fbf..0000000
--- a/recipes/xorg-lib/pixman-0.17.8/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From edc80b41c6480b7c80ec5f7c835c92b2debb3774 Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Thu, 22 Oct 2009 05:45:54 +0300
-Subject: [PATCH 5/6] Support of overlapping src/dst for pixman_blt_sse2
-
----
- pixman/pixman-sse2.c |   55 +++++++++++++++++++++++++++++--------------------
- 1 files changed, 32 insertions(+), 23 deletions(-)
-
-diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
-index 78b0ad1..b84636b 100644
---- a/pixman/pixman-sse2.c
-+++ b/pixman/pixman-sse2.c
-@@ -5300,34 +5300,43 @@ pixman_blt_sse2 (uint32_t *src_bits,
- {
-     uint8_t *   src_bytes;
-     uint8_t *   dst_bytes;
--    int byte_width;
-+    int         bpp;
- 
--    if (src_bpp != dst_bpp)
-+    if (src_bpp != dst_bpp || src_bpp & 7)
- 	return FALSE;
- 
--    if (src_bpp == 16)
--    {
--	src_stride = src_stride * (int) sizeof (uint32_t) / 2;
--	dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
--	src_bytes =(uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
--	dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
--	byte_width = 2 * width;
--	src_stride *= 2;
--	dst_stride *= 2;
--    }
--    else if (src_bpp == 32)
-+    bpp = src_bpp >> 3;
-+    width *= bpp;
-+    src_stride *= 4;
-+    dst_stride *= 4;
-+    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
-+    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
-+
-+    if (src_bpp != 16 && src_bpp != 32)
-     {
--	src_stride = src_stride * (int) sizeof (uint32_t) / 4;
--	dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
--	src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
--	dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
--	byte_width = 4 * width;
--	src_stride *= 4;
--	dst_stride *= 4;
-+	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
-+	                   width, height);
-+	return TRUE;
-     }
--    else
-+
-+    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
-     {
--	return FALSE;
-+	src_bytes += src_stride * height - src_stride;
-+	dst_bytes += dst_stride * height - dst_stride;
-+	dst_stride = -dst_stride;
-+	src_stride = -src_stride;
-+
-+	if (src_bytes + width > dst_bytes)
-+	{
-+	    /* TODO: reverse scanline copy using SSE2 */
-+	    while (--height >= 0)
-+	    {
-+		memmove (dst_bytes, src_bytes, width);
-+		dst_bytes += dst_stride;
-+		src_bytes += src_stride;
-+	    }
-+	    return TRUE;
-+	}
-     }
- 
-     cache_prefetch ((__m128i*)src_bytes);
-@@ -5340,7 +5349,7 @@ pixman_blt_sse2 (uint32_t *src_bits,
- 	uint8_t *d = dst_bytes;
- 	src_bytes += src_stride;
- 	dst_bytes += dst_stride;
--	w = byte_width;
-+	w = width;
- 
- 	cache_prefetch_next ((__m128i*)s);
- 	cache_prefetch_next ((__m128i*)d);
--- 
-1.6.2.4
-
diff --git a/recipes/xorg-lib/pixman-0.17.8/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/recipes/xorg-lib/pixman-0.17.8/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
deleted file mode 100644
index 7c22483..0000000
--- a/recipes/xorg-lib/pixman-0.17.8/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 86870ff530b5e435034bd80207e5758466d96cff Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Wed, 18 Nov 2009 06:08:48 +0200
-Subject: [PATCH 6/6] Support of overlapping src/dst for pixman_blt_neon
-
----
- pixman/pixman-arm-neon.c |   63 ++++++++++++++++++++++++++++++++++++++-------
- 1 files changed, 53 insertions(+), 10 deletions(-)
-
-diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
-index 495fda4..c632ff5 100644
---- a/pixman/pixman-arm-neon.c
-+++ b/pixman/pixman-arm-neon.c
-@@ -357,26 +357,66 @@
-                  int       width,
-                  int       height)
- {
--    if (src_bpp != dst_bpp)
-+    uint8_t *   src_bytes;
-+    uint8_t *   dst_bytes;
-+    int         bpp;
-+
-+    if (src_bpp != dst_bpp || src_bpp & 7)
- 	return FALSE;
- 
-+    bpp = src_bpp >> 3;
-+    width *= bpp;
-+    src_stride *= 4;
-+    dst_stride *= 4;
-+    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
-+    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
-+
-+    if (src_bpp != 16 && src_bpp != 32)
-+    {
-+	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
-+	                   width, height);
-+	return TRUE;
-+    }
-+
-+    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
-+    {
-+	src_bytes += src_stride * height - src_stride;
-+	dst_bytes += dst_stride * height - dst_stride;
-+	dst_stride = -dst_stride;
-+	src_stride = -src_stride;
-+
-+	if (src_bytes + width > dst_bytes)
-+	{
-+	    /* TODO: reverse scanline copy using NEON */
-+	    while (--height >= 0)
-+	    {
-+		memmove (dst_bytes, src_bytes, width);
-+		dst_bytes += dst_stride;
-+		src_bytes += src_stride;
-+	    }
-+	    return TRUE;
-+	}
-+    }
-+
-     switch (src_bpp)
-     {
-     case 16:
- 	pixman_composite_src_0565_0565_asm_neon (
--		width, height,
--		(uint16_t *)(((char *) dst_bits) +
--		dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2,
--		(uint16_t *)(((char *) src_bits) +
--		src_y * src_stride * 4 + src_x * 2), src_stride * 2);
-+		width >> 1,
-+		height,
-+		(uint16_t *) dst_bytes,
-+		dst_stride >> 1,
-+		(uint16_t *) src_bytes,
-+		src_stride >> 1);
- 	return TRUE;
-     case 32:
- 	pixman_composite_src_8888_8888_asm_neon (
--		width, height,
--		(uint32_t *)(((char *) dst_bits) +
--		dst_y * dst_stride * 4 + dst_x * 4), dst_stride,
--		(uint32_t *)(((char *) src_bits) +
--		src_y * src_stride * 4 + src_x * 4), src_stride);
-+		width >> 2,
-+		height,
-+		(uint32_t *) dst_bytes,
-+		dst_stride >> 2,
-+		(uint32_t *) src_bytes,
-+		src_stride >> 2);
- 	return TRUE;
-     default:
- 	return FALSE;
--- 
-1.6.2.4
-
diff --git a/recipes/xorg-lib/pixman-0.17.8/1-composite.patch b/recipes/xorg-lib/pixman-0.17.8/1-composite.patch
deleted file mode 100644
index 31bfa39..0000000
--- a/recipes/xorg-lib/pixman-0.17.8/1-composite.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-From 78652135f48c6a304fc2e75bc0e440b8b2034a4d Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Tue, 23 Feb 2010 23:44:00 +0000
-Subject: ARM: added 'neon_composite_over_n_8888_8888_ca' fast path
-
-This fast path function improves performance of 'firefox-talos-gfx'
-cairo-perf trace.
-
-Benchmark from ARM Cortex-A8 @720MHz
-
-before:
-
-[ # ]  backend                         test   min(s) median(s) stddev. count
-[  0]    image            firefox-talos-gfx  139.969  141.176   0.35%    6/6
-
-after:
-
-[ # ]  backend                         test   min(s) median(s) stddev. count
-[  0]    image            firefox-talos-gfx  111.810  112.196   0.23%    6/6
----
-diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
-index 2986884..e90d662 100644
---- a/pixman/pixman-arm-neon-asm.S
-+++ b/pixman/pixman-arm-neon-asm.S
-@@ -1026,6 +1026,111 @@ generate_composite_function \
- 
- /******************************************************************************/
- 
-+.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_head
-+    /*
-+     * 'combine_mask_ca' replacement
-+     *
-+     * input:  solid src (n) in {d8,  d9,  d10, d11}
-+     *         dest in          {d4,  d5,  d6,  d7 }
-+     *         mask in          {d24, d25, d26, d27}
-+     * output: updated src in   {d0,  d1,  d2,  d3 }
-+     *         updated mask in  {d24, d25, d26, d3 }
-+     */
-+    vmull.u8    q0,  d24, d8
-+    vmull.u8    q1,  d25, d9
-+    vmull.u8    q6,  d26, d10
-+    vmull.u8    q7,  d27, d11
-+    vmull.u8    q9,  d11, d25
-+    vmull.u8    q12, d11, d24
-+    vmull.u8    q13, d11, d26
-+    vrshr.u16   q8,  q0,  #8
-+    vrshr.u16   q10, q1,  #8
-+    vrshr.u16   q11, q6,  #8
-+    vraddhn.u16 d0,  q0,  q8
-+    vraddhn.u16 d1,  q1,  q10
-+    vraddhn.u16 d2,  q6,  q11
-+    vrshr.u16   q11, q12, #8
-+    vrshr.u16   q8,  q9,  #8
-+    vrshr.u16   q6,  q13, #8
-+    vrshr.u16   q10, q7,  #8
-+    vraddhn.u16 d24, q12, q11
-+    vraddhn.u16 d25, q9,  q8
-+    vraddhn.u16 d26, q13, q6
-+    vraddhn.u16 d3,  q7,  q10
-+    /*
-+     * 'combine_over_ca' replacement
-+     *
-+     * output: updated dest in {d28, d29, d30, d31}
-+     */
-+    vmvn.8      d24, d24
-+    vmvn.8      d25, d25
-+    vmull.u8    q8,  d24, d4
-+    vmull.u8    q9,  d25, d5
-+    vmvn.8      d26, d26
-+    vmvn.8      d27, d3
-+    vmull.u8    q10, d26, d6
-+    vmull.u8    q11, d27, d7
-+.endm
-+
-+.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail
-+    /* ... continue 'combine_over_ca' replacement */
-+    vrshr.u16   q14, q8,  #8
-+    vrshr.u16   q15, q9,  #8
-+    vrshr.u16   q6,  q10, #8
-+    vrshr.u16   q7,  q11, #8
-+    vraddhn.u16 d28, q14, q8
-+    vraddhn.u16 d29, q15, q9
-+    vraddhn.u16 d30, q6,  q10
-+    vraddhn.u16 d31, q7,  q11
-+    vqadd.u8    q14, q0,  q14
-+    vqadd.u8    q15, q1,  q15
-+.endm
-+
-+.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head
-+        vrshr.u16   q14, q8, #8
-+        vrshr.u16   q15, q9, #8
-+    vld4.8      {d4, d5, d6, d7}, [DST_R, :128]!
-+        vrshr.u16   q6, q10, #8
-+        vrshr.u16   q7, q11, #8
-+        vraddhn.u16 d28, q14, q8
-+        vraddhn.u16 d29, q15, q9
-+        vraddhn.u16 d30, q6, q10
-+        vraddhn.u16 d31, q7, q11
-+    vld4.8      {d24, d25, d26, d27}, [MASK]!
-+        vqadd.u8    q14, q0, q14
-+        vqadd.u8    q15, q1, q15
-+    cache_preload 8, 8
-+    pixman_composite_over_n_8888_8888_ca_process_pixblock_head
-+    vst4.8      {d28, d29, d30, d31}, [DST_W, :128]!
-+.endm
-+
-+.macro pixman_composite_over_n_8888_8888_ca_init
-+    add         DUMMY, sp, #ARGS_STACK_OFFSET
-+    vpush       {d8-d15}
-+    vld1.32     {d11[0]}, [DUMMY]
-+    vdup.8      d8, d11[0]
-+    vdup.8      d9, d11[1]
-+    vdup.8      d10, d11[2]
-+    vdup.8      d11, d11[3]
-+.endm
-+
-+.macro pixman_composite_over_n_8888_8888_ca_cleanup
-+    vpop        {d8-d15}
-+.endm
-+
-+generate_composite_function \
-+    pixman_composite_over_n_8888_8888_ca_asm_neon, 0, 32, 32, \
-+    FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
-+    8, /* number of pixels, processed in a single block */ \
-+    5, /* prefetch distance */ \
-+    pixman_composite_over_n_8888_8888_ca_init, \
-+    pixman_composite_over_n_8888_8888_ca_cleanup, \
-+    pixman_composite_over_n_8888_8888_ca_process_pixblock_head, \
-+    pixman_composite_over_n_8888_8888_ca_process_pixblock_tail, \
-+    pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head
-+
-+/******************************************************************************/
-+
- .macro pixman_composite_add_n_8_8_process_pixblock_head
-     /* expecting source data in {d8, d9, d10, d11} */
-     /* d8 - blue, d9 - green, d10 - red, d11 - alpha */
-diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
-index 557301e..3f0e18e 100644
---- a/pixman/pixman-arm-neon.c
-+++ b/pixman/pixman-arm-neon.c
-@@ -269,6 +269,7 @@ BIND_SRC_NULL_DST(over_8888_8888, uint32_t, 1, uint32_t, 1)
- 
- BIND_N_MASK_DST(over_n_8_0565, uint8_t, 1, uint16_t, 1)
- BIND_N_MASK_DST(over_n_8_8888, uint8_t, 1, uint32_t, 1)
-+BIND_N_MASK_DST(over_n_8888_8888_ca, uint32_t, 1, uint32_t, 1)
- BIND_N_MASK_DST(add_n_8_8, uint8_t, 1, uint8_t, 1)
- 
- BIND_SRC_N_DST(over_8888_n_8888, uint32_t, 1, uint32_t, 1)
-@@ -412,6 +413,10 @@ static const pixman_fast_path_t arm_neon_fast_paths[] =
-     PIXMAN_STD_FAST_PATH (OVER, solid,    null,     r5g6b5,   neon_composite_over_n_0565),
-     PIXMAN_STD_FAST_PATH (OVER, solid,    null,     a8r8g8b8, neon_composite_over_n_8888),
-     PIXMAN_STD_FAST_PATH (OVER, solid,    null,     x8r8g8b8, neon_composite_over_n_8888),
-+    PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, a8r8g8b8, neon_composite_over_n_8888_8888_ca),
-+    PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, x8r8g8b8, neon_composite_over_n_8888_8888_ca),
-+    PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, a8b8g8r8, neon_composite_over_n_8888_8888_ca),
-+    PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, x8b8g8r8, neon_composite_over_n_8888_8888_ca),
-     PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid,    a8r8g8b8, neon_composite_over_8888_n_8888),
-     PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid,    x8r8g8b8, neon_composite_over_8888_n_8888),
-     PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8,       a8r8g8b8, neon_composite_over_8888_8_8888),
---
-cgit v0.8.3-6-g21f6
diff --git a/recipes/xorg-lib/pixman-0.17.8/2-composite.patch b/recipes/xorg-lib/pixman-0.17.8/2-composite.patch
deleted file mode 100644
index 84d4d9c..0000000
--- a/recipes/xorg-lib/pixman-0.17.8/2-composite.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From 6e0df74dbfca26f92a18d968e1bf410bae134c8a Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Wed, 24 Feb 2010 00:26:57 +0000
-Subject: ARM: added 'neon_composite_src_x888_8888' fast path
-
-This fast path function improves performance of 'gnome-system-monitor'
-cairo-perf trace.
-
-Benchmark from ARM Cortex-A8 @720MHz
-
-before:
-
-[ # ]  backend                         test   min(s) median(s) stddev. count
-[  0]    image         gnome-system-monitor   68.838   68.899   0.05%    5/6
-
-after:
-
-[ # ]  backend                         test   min(s) median(s) stddev. count
-[  0]    image         gnome-system-monitor   53.336   53.384   0.09%    6/6
----
-diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
-index e90d662..f2643de 100644
---- a/pixman/pixman-arm-neon-asm.S
-+++ b/pixman/pixman-arm-neon-asm.S
-@@ -947,6 +947,44 @@ generate_composite_function \
- 
- /******************************************************************************/
- 
-+.macro pixman_composite_src_x888_8888_process_pixblock_head
-+    vorr     q0, q0, q2
-+    vorr     q1, q1, q2
-+.endm
-+
-+.macro pixman_composite_src_x888_8888_process_pixblock_tail
-+.endm
-+
-+.macro pixman_composite_src_x888_8888_process_pixblock_tail_head
-+    vst1.32 {d0, d1, d2, d3}, [DST_W, :128]!
-+    vld1.32 {d0, d1, d2, d3}, [SRC]!
-+    vorr     q0, q0, q2
-+    vorr     q1, q1, q2
-+    cache_preload 8, 8
-+.endm
-+
-+.macro pixman_composite_src_x888_8888_init
-+    vmov.u8  q2, #0xFF
-+    vshl.u32 q2, q2, #24
-+.endm
-+
-+generate_composite_function \
-+    pixman_composite_src_x888_8888_asm_neon, 32, 0, 32, \
-+    FLAG_DST_WRITEONLY, \
-+    8, /* number of pixels, processed in a single block */ \
-+    10, /* prefetch distance */ \
-+    pixman_composite_src_x888_8888_init, \
-+    default_cleanup, \
-+    pixman_composite_src_x888_8888_process_pixblock_head, \
-+    pixman_composite_src_x888_8888_process_pixblock_tail, \
-+    pixman_composite_src_x888_8888_process_pixblock_tail_head, \
-+    0, /* dst_w_basereg */ \
-+    0, /* dst_r_basereg */ \
-+    0, /* src_basereg   */ \
-+    0  /* mask_basereg  */
-+
-+/******************************************************************************/
-+
- .macro pixman_composite_over_n_8_8888_process_pixblock_head
-     /* expecting deinterleaved source data in {d8, d9, d10, d11} */
-     /* d8 - blue, d9 - green, d10 - red, d11 - alpha */
-diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
-index 3f0e18e..0a7ac31 100644
---- a/pixman/pixman-arm-neon.c
-+++ b/pixman/pixman-arm-neon.c
-@@ -251,6 +251,7 @@ neon_composite_##name (pixman_implementation_t *imp,                    \
- 
- 
- BIND_SRC_NULL_DST(src_8888_8888, uint32_t, 1, uint32_t, 1)
-+BIND_SRC_NULL_DST(src_x888_8888, uint32_t, 1, uint32_t, 1)
- BIND_SRC_NULL_DST(src_0565_0565, uint16_t, 1, uint16_t, 1)
- BIND_SRC_NULL_DST(src_0888_0888, uint8_t, 3, uint8_t, 3)
- BIND_SRC_NULL_DST(src_8888_0565, uint32_t, 1, uint16_t, 1)
-@@ -400,6 +401,10 @@ static const pixman_fast_path_t arm_neon_fast_paths[] =
-     PIXMAN_STD_FAST_PATH (SRC,  x8r8g8b8, null,     x8r8g8b8, neon_composite_src_8888_8888),
-     PIXMAN_STD_FAST_PATH (SRC,  a8b8g8r8, null,     x8b8g8r8, neon_composite_src_8888_8888),
-     PIXMAN_STD_FAST_PATH (SRC,  x8b8g8r8, null,     x8b8g8r8, neon_composite_src_8888_8888),
-+    PIXMAN_STD_FAST_PATH (SRC,  a8r8g8b8, null,     a8r8g8b8, neon_composite_src_8888_8888),
-+    PIXMAN_STD_FAST_PATH (SRC,  a8b8g8r8, null,     a8b8g8r8, neon_composite_src_8888_8888),
-+    PIXMAN_STD_FAST_PATH (SRC,  x8r8g8b8, null,     a8r8g8b8, neon_composite_src_x888_8888),
-+    PIXMAN_STD_FAST_PATH (SRC,  x8b8g8r8, null,     a8b8g8r8, neon_composite_src_x888_8888),
-     PIXMAN_STD_FAST_PATH (SRC,  r8g8b8,   null,     r8g8b8,   neon_composite_src_0888_0888),
-     PIXMAN_STD_FAST_PATH (SRC,  b8g8r8,   null,     x8r8g8b8, neon_composite_src_0888_8888_rev),
-     PIXMAN_STD_FAST_PATH (SRC,  b8g8r8,   null,     r5g6b5,   neon_composite_src_0888_0565_rev),
-@@ -430,6 +435,7 @@ static const pixman_fast_path_t arm_neon_fast_paths[] =
-     PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null,     x8r8g8b8, neon_composite_over_8888_8888),
-     PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null,     a8b8g8r8, neon_composite_over_8888_8888),
-     PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null,     x8b8g8r8, neon_composite_over_8888_8888),
-+    PIXMAN_STD_FAST_PATH (OVER, x8r8g8b8, null,     a8r8g8b8, neon_composite_src_x888_8888),
-     PIXMAN_STD_FAST_PATH (ADD,  solid,    a8,       a8,       neon_composite_add_n_8_8),
-     PIXMAN_STD_FAST_PATH (ADD,  a8,       a8,       a8,       neon_composite_add_8_8_8),
-     PIXMAN_STD_FAST_PATH (ADD,  a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_add_8888_8888_8888),
---
-cgit v0.8.3-6-g21f6
diff --git a/recipes/xorg-lib/pixman-0.17.8/3-composite.patch b/recipes/xorg-lib/pixman-0.17.8/3-composite.patch
deleted file mode 100644
index 06e40fe..0000000
--- a/recipes/xorg-lib/pixman-0.17.8/3-composite.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From 19fc0c4c8d28796f0fbc2c8f47edc130851ae3a5 Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Wed, 24 Feb 2010 02:14:45 +0000
-Subject: ARM: added 'neon_composite_over_reverse_n_8888' fast path
-
-This fast path function improves performance of 'poppler' cairo-perf trace.
-
-Benchmark from ARM Cortex-A8 @720MHz
-
-before:
-
-[ # ]  backend                         test   min(s) median(s) stddev. count
-[  0]    image                      poppler   38.986   39.158   0.23%    6/6
-
-after:
-
-[ # ]  backend                         test   min(s) median(s) stddev. count
-[  0]    image                      poppler   24.981   25.136   0.28%    6/6
----
-diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
-index f2643de..eb8cc4c 100644
---- a/pixman/pixman-arm-neon-asm.S
-+++ b/pixman/pixman-arm-neon-asm.S
-@@ -680,6 +680,61 @@ generate_composite_function \
- 
- /******************************************************************************/
- 
-+.macro pixman_composite_over_reverse_n_8888_process_pixblock_tail_head
-+        vrshr.u16   q14, q8, #8
-+                                    PF add PF_X, PF_X, #8
-+                                    PF tst PF_CTL, #0xF
-+        vrshr.u16   q15, q9, #8
-+        vrshr.u16   q12, q10, #8
-+        vrshr.u16   q13, q11, #8
-+                                    PF addne PF_X, PF_X, #8
-+                                    PF subne PF_CTL, PF_CTL, #1
-+        vraddhn.u16 d28, q14, q8
-+        vraddhn.u16 d29, q15, q9
-+                                    PF cmp PF_X, ORIG_W
-+        vraddhn.u16 d30, q12, q10
-+        vraddhn.u16 d31, q13, q11
-+        vqadd.u8    q14, q0, q14
-+        vqadd.u8    q15, q1, q15
-+    vld4.8      {d0, d1, d2, d3}, [DST_R, :128]!
-+    vmvn.8      d22, d3
-+                                    PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
-+        vst4.8      {d28, d29, d30, d31}, [DST_W, :128]!
-+                                    PF subge PF_X, PF_X, ORIG_W
-+    vmull.u8    q8, d22, d4
-+                                    PF subges PF_CTL, PF_CTL, #0x10
-+    vmull.u8    q9, d22, d5
-+    vmull.u8    q10, d22, d6
-+                                    PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
-+    vmull.u8    q11, d22, d7
-+.endm
-+
-+.macro pixman_composite_over_reverse_n_8888_init
-+    add         DUMMY, sp, #ARGS_STACK_OFFSET
-+    vld1.32     {d7[0]}, [DUMMY]
-+    vdup.8      d4, d7[0]
-+    vdup.8      d5, d7[1]
-+    vdup.8      d6, d7[2]
-+    vdup.8      d7, d7[3]
-+.endm
-+
-+generate_composite_function \
-+    pixman_composite_over_reverse_n_8888_asm_neon, 0, 0, 32, \
-+    FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
-+    8, /* number of pixels, processed in a single block */ \
-+    5, /* prefetch distance */ \
-+    pixman_composite_over_reverse_n_8888_init, \
-+    default_cleanup, \
-+    pixman_composite_over_8888_8888_process_pixblock_head, \
-+    pixman_composite_over_8888_8888_process_pixblock_tail, \
-+    pixman_composite_over_reverse_n_8888_process_pixblock_tail_head, \
-+    28, /* dst_w_basereg */ \
-+    0,  /* dst_r_basereg */ \
-+    4,  /* src_basereg   */ \
-+    24  /* mask_basereg  */
-+
-+/******************************************************************************/
-+
- .macro pixman_composite_over_n_8_0565_process_pixblock_head
-     /* in */
-     vmull.u8    q0, d24, d8
-diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
-index 0a7ac31..30c5056 100644
---- a/pixman/pixman-arm-neon.c
-+++ b/pixman/pixman-arm-neon.c
-@@ -264,6 +264,7 @@ BIND_SRC_NULL_DST(add_8888_8888, uint32_t, 1, uint32_t, 1)
- 
- BIND_N_NULL_DST(over_n_0565, uint16_t, 1)
- BIND_N_NULL_DST(over_n_8888, uint32_t, 1)
-+BIND_N_NULL_DST(over_reverse_n_8888, uint32_t, 1)
- 
- BIND_SRC_NULL_DST(over_8888_0565, uint32_t, 1, uint16_t, 1)
- BIND_SRC_NULL_DST(over_8888_8888, uint32_t, 1, uint32_t, 1)
-@@ -442,6 +443,8 @@ static const pixman_fast_path_t arm_neon_fast_paths[] =
-     PIXMAN_STD_FAST_PATH (ADD,  a8,       null,     a8,       neon_composite_add_8000_8000),
-     PIXMAN_STD_FAST_PATH (ADD,  a8r8g8b8, null,     a8r8g8b8, neon_composite_add_8888_8888),
-     PIXMAN_STD_FAST_PATH (ADD,  a8b8g8r8, null,     a8b8g8r8, neon_composite_add_8888_8888),
-+    PIXMAN_STD_FAST_PATH (OVER_REVERSE, solid, null, a8r8g8b8, neon_composite_over_reverse_n_8888),
-+    PIXMAN_STD_FAST_PATH (OVER_REVERSE, solid, null, a8b8g8r8, neon_composite_over_reverse_n_8888),
- 
-     { PIXMAN_OP_NONE },
- };
---
-cgit v0.8.3-6-g21f6
diff --git a/recipes/xorg-lib/pixman-0.18.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/recipes/xorg-lib/pixman-0.18.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
deleted file mode 100644
index 06b07a3..0000000
--- a/recipes/xorg-lib/pixman-0.18.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From 5234e3c2c161ed5fc92caa336ae78f89112c7d77 Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Tue, 16 Mar 2010 16:55:28 +0100
-Subject: [PATCH 1/5] Generic C implementation of pixman_blt with overlapping support
-
-Uses memcpy/memmove functions to copy pixels, can handle the
-case when both source and destination areas are in the same
-image (this is useful for scrolling).
-
-It is assumed that copying direction is only important when
-using the same image for both source and destination (and
-src_stride == dst_stride). Copying direction is undefined
-for the images with different source and destination stride
-which happen to be in the overlapped areas (but this is an
-unrealistic case anyway).
----
- pixman/pixman-general.c |   21 ++++++++++++++++++---
- pixman/pixman-private.h |   43 +++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 61 insertions(+), 3 deletions(-)
-
-diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c
-index bddf79a..f525744 100644
---- a/pixman/pixman-general.c
-+++ b/pixman/pixman-general.c
-@@ -285,9 +285,24 @@ general_blt (pixman_implementation_t *imp,
-              int                      width,
-              int                      height)
- {
--    /* We can't blit unless we have sse2 or mmx */
--
--    return FALSE;
-+    uint8_t *dst_bytes = (uint8_t *)dst_bits;
-+    uint8_t *src_bytes = (uint8_t *)src_bits;
-+    int bpp;
-+
-+    if (src_bpp != dst_bpp || src_bpp & 7)
-+	return FALSE;
-+
-+    bpp = src_bpp >> 3;
-+    width *= bpp;
-+    src_stride *= 4;
-+    dst_stride *= 4;
-+    pixman_blt_helper (src_bytes + src_y * src_stride + src_x * bpp,
-+                       dst_bytes + dst_y * dst_stride + dst_x * bpp,
-+                       src_stride,
-+                       dst_stride,
-+                       width,
-+                       height);
-+    return TRUE;
- }
- 
- static pixman_bool_t
-diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
-index d5767af..eeb677d 100644
---- a/pixman/pixman-private.h
-+++ b/pixman/pixman-private.h
-@@ -10,6 +10,7 @@
- 
- #include "pixman.h"
- #include <time.h>
-+#include <string.h>
- #include <assert.h>
- #include <stdio.h>
- #include <string.h>
-@@ -867,4 +868,46 @@ void pixman_timer_register (pixman_timer_t *timer);
- 
- #endif /* PIXMAN_TIMERS */
- 
-+/* a helper function, can blit 8-bit images with src/dst overlapping support */
-+static inline void
-+pixman_blt_helper (uint8_t *src_bytes,
-+                   uint8_t *dst_bytes,
-+                   int      src_stride,
-+                   int      dst_stride,
-+                   int      width,
-+                   int      height)
-+{
-+    /*
-+     * The second part of this check is not strictly needed, but it prevents
-+     * unnecessary upside-down processing of areas which belong to different
-+     * images. Upside-down processing can be slower with fixed-distance-ahead
-+     * prefetch and perceived as having more tearing.
-+     */
-+    if (src_bytes < dst_bytes + width &&
-+	src_bytes + src_stride * height > dst_bytes)
-+    {
-+	src_bytes += src_stride * height - src_stride;
-+	dst_bytes += dst_stride * height - dst_stride;
-+	dst_stride = -dst_stride;
-+	src_stride = -src_stride;
-+	/* Horizontal scrolling to the left needs memmove */
-+	if (src_bytes + width > dst_bytes)
-+	{
-+	    while (--height >= 0)
-+	    {
-+		memmove (dst_bytes, src_bytes, width);
-+		dst_bytes += dst_stride;
-+		src_bytes += src_stride;
-+	    }
-+	    return;
-+	}
-+    }
-+    while (--height >= 0)
-+    {
-+	memcpy (dst_bytes, src_bytes, width);
-+	dst_bytes += dst_stride;
-+	src_bytes += src_stride;
-+    }
-+}
-+
- #endif /* PIXMAN_PRIVATE_H */
--- 
-1.6.6.1
-
diff --git a/recipes/xorg-lib/pixman-0.18.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/recipes/xorg-lib/pixman-0.18.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
deleted file mode 100644
index bf6e58c..0000000
--- a/recipes/xorg-lib/pixman-0.18.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From f607cd0250d398077b0c51201258775e372cb3c3 Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Thu, 22 Oct 2009 05:45:47 +0300
-Subject: [PATCH 2/5] Support of overlapping src/dst for pixman_blt_mmx
-
----
- pixman/pixman-mmx.c |   55 +++++++++++++++++++++++++++++---------------------
- 1 files changed, 32 insertions(+), 23 deletions(-)
-
-diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
-index e084e7f..6212b31 100644
---- a/pixman/pixman-mmx.c
-+++ b/pixman/pixman-mmx.c
-@@ -2994,34 +2994,43 @@ pixman_blt_mmx (uint32_t *src_bits,
- {
-     uint8_t *   src_bytes;
-     uint8_t *   dst_bytes;
--    int byte_width;
-+    int         bpp;
- 
--    if (src_bpp != dst_bpp)
-+    if (src_bpp != dst_bpp || src_bpp & 7)
- 	return FALSE;
- 
--    if (src_bpp == 16)
--    {
--	src_stride = src_stride * (int) sizeof (uint32_t) / 2;
--	dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
--	src_bytes = (uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
--	dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
--	byte_width = 2 * width;
--	src_stride *= 2;
--	dst_stride *= 2;
--    }
--    else if (src_bpp == 32)
-+    bpp = src_bpp >> 3;
-+    width *= bpp;
-+    src_stride *= 4;
-+    dst_stride *= 4;
-+    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
-+    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
-+
-+    if (src_bpp != 16 && src_bpp != 32)
-     {
--	src_stride = src_stride * (int) sizeof (uint32_t) / 4;
--	dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
--	src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
--	dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
--	byte_width = 4 * width;
--	src_stride *= 4;
--	dst_stride *= 4;
-+	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
-+	                   width, height);
-+	return TRUE;
-     }
--    else
-+
-+    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
-     {
--	return FALSE;
-+	src_bytes += src_stride * height - src_stride;
-+	dst_bytes += dst_stride * height - dst_stride;
-+	dst_stride = -dst_stride;
-+	src_stride = -src_stride;
-+
-+	if (src_bytes + width > dst_bytes)
-+	{
-+	    /* TODO: reverse scanline copy using MMX */
-+	    while (--height >= 0)
-+	    {
-+		memmove (dst_bytes, src_bytes, width);
-+		dst_bytes += dst_stride;
-+		src_bytes += src_stride;
-+	    }
-+	    return TRUE;
-+	}
-     }
- 
-     while (height--)
-@@ -3031,7 +3040,7 @@ pixman_blt_mmx (uint32_t *src_bits,
- 	uint8_t *d = dst_bytes;
- 	src_bytes += src_stride;
- 	dst_bytes += dst_stride;
--	w = byte_width;
-+	w = width;
- 
- 	while (w >= 2 && ((unsigned long)d & 3))
- 	{
--- 
-1.6.6.1
-
diff --git a/recipes/xorg-lib/pixman-0.18.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/recipes/xorg-lib/pixman-0.18.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
deleted file mode 100644
index c1f3b2e..0000000
--- a/recipes/xorg-lib/pixman-0.18.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 45a9a537f94a7feab47bd82171c7d620f0d34e3f Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Thu, 22 Oct 2009 05:45:54 +0300
-Subject: [PATCH 3/5] Support of overlapping src/dst for pixman_blt_sse2
-
----
- pixman/pixman-sse2.c |   55 +++++++++++++++++++++++++++++--------------------
- 1 files changed, 32 insertions(+), 23 deletions(-)
-
-diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
-index 946e7ba..66053ae 100644
---- a/pixman/pixman-sse2.c
-+++ b/pixman/pixman-sse2.c
-@@ -5299,34 +5299,43 @@ pixman_blt_sse2 (uint32_t *src_bits,
- {
-     uint8_t *   src_bytes;
-     uint8_t *   dst_bytes;
--    int byte_width;
-+    int         bpp;
- 
--    if (src_bpp != dst_bpp)
-+    if (src_bpp != dst_bpp || src_bpp & 7)
- 	return FALSE;
- 
--    if (src_bpp == 16)
--    {
--	src_stride = src_stride * (int) sizeof (uint32_t) / 2;
--	dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
--	src_bytes =(uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
--	dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
--	byte_width = 2 * width;
--	src_stride *= 2;
--	dst_stride *= 2;
--    }
--    else if (src_bpp == 32)
-+    bpp = src_bpp >> 3;
-+    width *= bpp;
-+    src_stride *= 4;
-+    dst_stride *= 4;
-+    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
-+    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
-+
-+    if (src_bpp != 16 && src_bpp != 32)
-     {
--	src_stride = src_stride * (int) sizeof (uint32_t) / 4;
--	dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
--	src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
--	dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
--	byte_width = 4 * width;
--	src_stride *= 4;
--	dst_stride *= 4;
-+	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
-+	                   width, height);
-+	return TRUE;
-     }
--    else
-+
-+    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
-     {
--	return FALSE;
-+	src_bytes += src_stride * height - src_stride;
-+	dst_bytes += dst_stride * height - dst_stride;
-+	dst_stride = -dst_stride;
-+	src_stride = -src_stride;
-+
-+	if (src_bytes + width > dst_bytes)
-+	{
-+	    /* TODO: reverse scanline copy using SSE2 */
-+	    while (--height >= 0)
-+	    {
-+		memmove (dst_bytes, src_bytes, width);
-+		dst_bytes += dst_stride;
-+		src_bytes += src_stride;
-+	    }
-+	    return TRUE;
-+	}
-     }
- 
-     cache_prefetch ((__m128i*)src_bytes);
-@@ -5339,7 +5348,7 @@ pixman_blt_sse2 (uint32_t *src_bits,
- 	uint8_t *d = dst_bytes;
- 	src_bytes += src_stride;
- 	dst_bytes += dst_stride;
--	w = byte_width;
-+	w = width;
- 
- 	cache_prefetch_next ((__m128i*)s);
- 	cache_prefetch_next ((__m128i*)d);
--- 
-1.6.6.1
-
diff --git a/recipes/xorg-lib/pixman-0.18.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/recipes/xorg-lib/pixman-0.18.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
deleted file mode 100644
index c37673e..0000000
--- a/recipes/xorg-lib/pixman-0.18.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 4cf5bfc72a724fb653c48338b93e91dccea238af Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Wed, 18 Nov 2009 06:08:48 +0200
-Subject: [PATCH 4/5] Support of overlapping src/dst for pixman_blt_neon
-
----
- pixman/pixman-arm-neon.c |   62 +++++++++++++++++++++++++++++++++++++--------
- 1 files changed, 51 insertions(+), 11 deletions(-)
-
-diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
-index 6808b36..7feee1d 100644
---- a/pixman/pixman-arm-neon.c
-+++ b/pixman/pixman-arm-neon.c
-@@ -168,26 +168,66 @@ pixman_blt_neon (uint32_t *src_bits,
-                  int       width,
-                  int       height)
- {
--    if (src_bpp != dst_bpp)
-+    uint8_t *   src_bytes;
-+    uint8_t *   dst_bytes;
-+    int         bpp;
-+
-+    if (src_bpp != dst_bpp || src_bpp & 7)
- 	return FALSE;
- 
-+    bpp = src_bpp >> 3;
-+    width *= bpp;
-+    src_stride *= 4;
-+    dst_stride *= 4;
-+    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
-+    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
-+
-+    if (src_bpp != 16 && src_bpp != 32)
-+    {
-+	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
-+	                   width, height);
-+	return TRUE;
-+    }
-+
-+    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
-+    {
-+	src_bytes += src_stride * height - src_stride;
-+	dst_bytes += dst_stride * height - dst_stride;
-+	dst_stride = -dst_stride;
-+	src_stride = -src_stride;
-+
-+	if (src_bytes + width > dst_bytes)
-+	{
-+	    /* TODO: reverse scanline copy using NEON */
-+	    while (--height >= 0)
-+	    {
-+		memmove (dst_bytes, src_bytes, width);
-+		dst_bytes += dst_stride;
-+		src_bytes += src_stride;
-+	    }
-+	    return TRUE;
-+	}
-+    }
-+
-     switch (src_bpp)
-     {
-     case 16:
- 	pixman_composite_src_0565_0565_asm_neon (
--		width, height,
--		(uint16_t *)(((char *) dst_bits) +
--		dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2,
--		(uint16_t *)(((char *) src_bits) +
--		src_y * src_stride * 4 + src_x * 2), src_stride * 2);
-+		width >> 1,
-+		height,
-+		(uint16_t *) dst_bytes,
-+		dst_stride >> 1,
-+		(uint16_t *) src_bytes,
-+		src_stride >> 1);
- 	return TRUE;
-     case 32:
- 	pixman_composite_src_8888_8888_asm_neon (
--		width, height,
--		(uint32_t *)(((char *) dst_bits) +
--		dst_y * dst_stride * 4 + dst_x * 4), dst_stride,
--		(uint32_t *)(((char *) src_bits) +
--		src_y * src_stride * 4 + src_x * 4), src_stride);
-+		width >> 2,
-+		height,
-+		(uint32_t *) dst_bytes,
-+		dst_stride >> 2,
-+		(uint32_t *) src_bytes,
-+		src_stride >> 2);
- 	return TRUE;
-     default:
- 	return FALSE;
--- 
-1.6.6.1
-
diff --git a/recipes/xorg-lib/pixman-0.18.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch b/recipes/xorg-lib/pixman-0.18.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
deleted file mode 100644
index d776574..0000000
--- a/recipes/xorg-lib/pixman-0.18.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-From d1410558827fce8aac354274a7150fa915881c50 Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Thu, 10 Dec 2009 00:51:50 +0200
-Subject: [PATCH 5/5] ARM: added NEON optimizations for fetch/store r5g6b5 scanline
-
----
- pixman/pixman-access.c       |   23 ++++++++++++++++++++++-
- pixman/pixman-arm-neon-asm.S |   20 ++++++++++++++++++++
- pixman/pixman-arm-neon.c     |   41 +++++++++++++++++++++++++++++++++++++++++
- pixman/pixman-private.h      |    5 +++++
- 4 files changed, 88 insertions(+), 1 deletions(-)
-
-diff --git a/pixman/pixman-access.c b/pixman/pixman-access.c
-index fa0a267..5bb3e09 100644
---- a/pixman/pixman-access.c
-+++ b/pixman/pixman-access.c
-@@ -2748,7 +2748,7 @@ typedef struct
- 	    store_scanline_ ## format, store_scanline_generic_64	\
-     }
- 
--static const format_info_t accessors[] =
-+static format_info_t accessors[] =
- {
- /* 32 bpp formats */
-     FORMAT_INFO (a8r8g8b8),
-@@ -2891,6 +2891,27 @@ _pixman_bits_image_setup_raw_accessors (bits_image_t *image)
- 	setup_accessors (image);
- }
- 
-+void
-+_pixman_bits_override_accessors (pixman_format_code_t format,
-+                                 fetch_scanline_t     fetch_func,
-+                                 store_scanline_t     store_func)
-+{
-+    format_info_t *info = accessors;
-+
-+    while (info->format != PIXMAN_null)
-+    {
-+	if (info->format == format)
-+	{
-+	    if (fetch_func)
-+		info->fetch_scanline_raw_32 = fetch_func;
-+	    if (store_func)
-+		info->store_scanline_raw_32 = store_func;
-+	    return;
-+	}
-+	info++;
-+    }
-+}
-+
- #else
- 
- void
-diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
-index 51bc347..f30869e 100644
---- a/pixman/pixman-arm-neon-asm.S
-+++ b/pixman/pixman-arm-neon-asm.S
-@@ -458,6 +458,16 @@ generate_composite_function \
-     pixman_composite_src_8888_0565_process_pixblock_tail, \
-     pixman_composite_src_8888_0565_process_pixblock_tail_head
- 
-+generate_composite_function_single_scanline \
-+    pixman_store_scanline_r5g6b5_asm_neon, 32, 0, 16, \
-+    FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
-+    8, /* number of pixels, processed in a single block */ \
-+    default_init, \
-+    default_cleanup, \
-+    pixman_composite_src_8888_0565_process_pixblock_head, \
-+    pixman_composite_src_8888_0565_process_pixblock_tail, \
-+    pixman_composite_src_8888_0565_process_pixblock_tail_head
-+
- /******************************************************************************/
- 
- .macro pixman_composite_src_0565_8888_process_pixblock_head
-@@ -493,6 +503,16 @@ generate_composite_function \
-     pixman_composite_src_0565_8888_process_pixblock_tail, \
-     pixman_composite_src_0565_8888_process_pixblock_tail_head
- 
-+generate_composite_function_single_scanline \
-+    pixman_fetch_scanline_r5g6b5_asm_neon, 16, 0, 32, \
-+    FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
-+    8, /* number of pixels, processed in a single block */ \
-+    default_init, \
-+    default_cleanup, \
-+    pixman_composite_src_0565_8888_process_pixblock_head, \
-+    pixman_composite_src_0565_8888_process_pixblock_tail, \
-+    pixman_composite_src_0565_8888_process_pixblock_tail_head
-+
- /******************************************************************************/
- 
- .macro pixman_composite_add_8000_8000_process_pixblock_head
-diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
-index 7feee1d..fda7a09 100644
---- a/pixman/pixman-arm-neon.c
-+++ b/pixman/pixman-arm-neon.c
-@@ -375,6 +375,43 @@ neon_combine_##name##_u (pixman_implementation_t *imp,                   \
- BIND_COMBINE_U (over)
- BIND_COMBINE_U (add)
- 
-+void
-+pixman_fetch_scanline_r5g6b5_asm_neon (int             width,
-+                                       uint32_t       *buffer,
-+                                       const uint16_t *pixel);
-+void
-+pixman_store_scanline_r5g6b5_asm_neon (int             width,
-+                                       uint16_t       *pixel,
-+                                       const uint32_t *values);
-+
-+static void
-+neon_fetch_scanline_r5g6b5 (pixman_image_t *image,
-+                            int             x,
-+                            int             y,
-+                            int             width,
-+                            uint32_t *      buffer,
-+                            const uint32_t *mask,
-+                            uint32_t        mask_bits)
-+{
-+    const uint32_t *bits = image->bits.bits + y * image->bits.rowstride;
-+    const uint16_t *pixel = (const uint16_t *)bits + x;
-+
-+    pixman_fetch_scanline_r5g6b5_asm_neon (width, buffer, pixel);
-+}
-+
-+static void
-+neon_store_scanline_r5g6b5 (bits_image_t *  image,
-+                            int             x,
-+                            int             y,
-+                            int             width,
-+                            const uint32_t *values)
-+{
-+    uint32_t *bits = image->bits + image->rowstride * y;
-+    uint16_t *pixel = ((uint16_t *) bits) + x;
-+
-+    pixman_store_scanline_r5g6b5_asm_neon (width, pixel, values);
-+}
-+
- pixman_implementation_t *
- _pixman_implementation_create_arm_neon (void)
- {
-@@ -385,6 +422,10 @@ _pixman_implementation_create_arm_neon (void)
-     imp->combine_32[PIXMAN_OP_OVER] = neon_combine_over_u;
-     imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u;
- 
-+    _pixman_bits_override_accessors (PIXMAN_r5g6b5,
-+                                     neon_fetch_scanline_r5g6b5,
-+                                     neon_store_scanline_r5g6b5);
-+
-     imp->blt = arm_neon_blt;
-     imp->fill = arm_neon_fill;
- 
-diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
-index eeb677d..ba2d401 100644
---- a/pixman/pixman-private.h
-+++ b/pixman/pixman-private.h
-@@ -220,6 +220,11 @@ void
- _pixman_bits_image_setup_raw_accessors (bits_image_t *image);
- 
- void
-+_pixman_bits_override_accessors (pixman_format_code_t format,
-+                                 fetch_scanline_t     fetch_func,
-+                                 store_scanline_t     store_func);
-+
-+void
- _pixman_image_get_scanline_generic_64  (pixman_image_t *image,
-                                         int             x,
-                                         int             y,
--- 
-1.6.6.1
-
diff --git a/recipes/xorg-lib/pixman-0.18.0/565-scanline.patch b/recipes/xorg-lib/pixman-0.18.0/565-scanline.patch
deleted file mode 100644
index 8461a46..0000000
--- a/recipes/xorg-lib/pixman-0.18.0/565-scanline.patch
+++ /dev/null
@@ -1,257 +0,0 @@
-From deef1daf5896062f47fa61b94e1e77c7c0041820 Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Fri, 04 Dec 2009 16:49:19 +0000
-Subject: A copy-paste version of 16bpp bilinear scanline fetcher
-
----
-diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c
-index 3d78ff0..1656975 100644
---- a/pixman/pixman-bits-image.c
-+++ b/pixman/pixman-bits-image.c
-@@ -535,6 +535,212 @@ bits_image_fetch_bilinear_no_repeat_8888 (pixman_image_t * ima,
- 	*buffer++ = 0;
- }
- 
-+static void
-+bits_image_fetch_bilinear_no_repeat_0565 (pixman_image_t * ima,
-+					  int              offset,
-+					  int              line,
-+					  int              width,
-+					  uint32_t *       buffer,
-+					  const uint32_t * mask,
-+					  uint32_t         mask_bits)
-+{
-+    bits_image_t *bits = &ima->bits;
-+    pixman_fixed_t x_top, x_bottom, x;
-+    pixman_fixed_t ux_top, ux_bottom, ux;
-+    pixman_vector_t v;
-+    uint32_t top_mask, bottom_mask;
-+    uint16_t *top_row;
-+    uint16_t *bottom_row;
-+    uint32_t *end;
-+    uint16_t zero[2] = { 0, 0 };
-+    int y, y1, y2;
-+    int disty;
-+    int mask_inc;
-+    int w;
-+
-+    /* reference point is the center of the pixel */
-+    v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2;
-+    v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2;
-+    v.vector[2] = pixman_fixed_1;
-+
-+    if (!pixman_transform_point_3d (bits->common.transform, &v))
-+	return;
-+
-+    ux = ux_top = ux_bottom = bits->common.transform->matrix[0][0];
-+    x = x_top = x_bottom = v.vector[0] - pixman_fixed_1/2;
-+
-+    y = v.vector[1] - pixman_fixed_1/2;
-+    disty = (y >> 8) & 0xff;
-+
-+    /* Load the pointers to the first and second lines from the source
-+     * image that bilinear code must read.
-+     *
-+     * The main trick in this code is about the check if any line are
-+     * outside of the image;
-+     *
-+     * When I realize that a line (any one) is outside, I change
-+     * the pointer to a dummy area with zeros. Once I change this, I
-+     * must be sure the pointer will not change, so I set the
-+     * variables to each pointer increments inside the loop.
-+     */
-+    y1 = pixman_fixed_to_int (y);
-+    y2 = y1 + 1;
-+
-+    if (y1 < 0 || y1 >= bits->height)
-+    {
-+	top_row = zero;
-+	x_top = 0;
-+	ux_top = 0;
-+    }
-+    else
-+    {
-+	top_row = bits->bits + y1 * bits->rowstride;
-+	x_top = x;
-+	ux_top = ux;
-+    }
-+
-+    if (y2 < 0 || y2 >= bits->height)
-+    {
-+	bottom_row = zero;
-+	x_bottom = 0;
-+	ux_bottom = 0;
-+    }
-+    else
-+    {
-+	bottom_row = bits->bits + y2 * bits->rowstride;
-+	x_bottom = x;
-+	ux_bottom = ux;
-+    }
-+
-+    /* Instead of checking whether the operation uses the mast in
-+     * each loop iteration, verify this only once and prepare the
-+     * variables to make the code smaller inside the loop.
-+     */
-+    if (!mask)
-+    {
-+        mask_inc = 0;
-+        mask_bits = 1;
-+        mask = &mask_bits;
-+    }
-+    else
-+    {
-+        /* If have a mask, prepare the variables to check it */
-+        mask_inc = 1;
-+    }
-+
-+    /* If both are zero, then the whole thing is zero */
-+    if (top_row == zero && bottom_row == zero)
-+    {
-+	memset (buffer, 0, width * sizeof (uint32_t));
-+	return;
-+    }
-+    else
-+    {
-+	if (top_row == zero)
-+	{
-+	    top_mask = 0;
-+	    bottom_mask = 0xff000000;
-+	}
-+	else if (bottom_row == zero)
-+	{
-+	    top_mask = 0xff000000;
-+	    bottom_mask = 0;
-+	}
-+	else
-+	{
-+	    top_mask = 0xff000000;
-+	    bottom_mask = 0xff000000;
-+	}
-+    }
-+
-+    end = buffer + width;
-+
-+    /* Zero fill to the left of the image */
-+    while (buffer < end && x < pixman_fixed_minus_1)
-+    {
-+	*buffer++ = 0;
-+	x += ux;
-+	x_top += ux_top;
-+	x_bottom += ux_bottom;
-+	mask += mask_inc;
-+    }
-+
-+    /* Left edge
-+     */
-+    while (buffer < end && x < 0)
-+    {
-+	uint32_t tr, br;
-+	int32_t distx;
-+
-+	tr = CONVERT_0565_TO_0888 (top_row[pixman_fixed_to_int (x_top) + 1]) | top_mask;
-+	br = CONVERT_0565_TO_0888 (bottom_row[pixman_fixed_to_int (x_bottom) + 1]) | bottom_mask;
-+
-+	distx = (x >> 8) & 0xff;
-+
-+	*buffer++ = bilinear_interpolation (0, tr, 0, br, distx, disty);
-+
-+	x += ux;
-+	x_top += ux_top;
-+	x_bottom += ux_bottom;
-+	mask += mask_inc;
-+    }
-+
-+    /* Main part */
-+    w = pixman_int_to_fixed (bits->width - 1);
-+
-+    while (buffer < end  &&  x < w)
-+    {
-+	if (*mask)
-+	{
-+	    uint32_t tl, tr, bl, br;
-+	    int32_t distx;
-+
-+	    tl = CONVERT_0565_TO_0888 (top_row [pixman_fixed_to_int (x_top)]) | top_mask;
-+	    tr = CONVERT_0565_TO_0888 (top_row [pixman_fixed_to_int (x_top) + 1]) | top_mask;
-+	    bl = CONVERT_0565_TO_0888 (bottom_row [pixman_fixed_to_int (x_bottom)]) | bottom_mask;
-+	    br = CONVERT_0565_TO_0888 (bottom_row [pixman_fixed_to_int (x_bottom) + 1]) | bottom_mask;
-+
-+	    distx = (x >> 8) & 0xff;
-+
-+	    *buffer = bilinear_interpolation (tl, tr, bl, br, distx, disty);
-+	}
-+
-+	buffer++;
-+	x += ux;
-+	x_top += ux_top;
-+	x_bottom += ux_bottom;
-+	mask += mask_inc;
-+    }
-+
-+    /* Right Edge */
-+    w = pixman_int_to_fixed (bits->width);
-+    while (buffer < end  &&  x < w)
-+    {
-+	if (*mask)
-+	{
-+	    uint32_t tl, bl;
-+	    int32_t distx;
-+
-+	    tl = CONVERT_0565_TO_0888 (top_row [pixman_fixed_to_int (x_top)]) | top_mask;
-+	    bl = CONVERT_0565_TO_0888 (bottom_row [pixman_fixed_to_int (x_bottom)]) | bottom_mask;
-+
-+	    distx = (x >> 8) & 0xff;
-+
-+	    *buffer = bilinear_interpolation (tl, 0, bl, 0, distx, disty);
-+	}
-+
-+	buffer++;
-+	x += ux;
-+	x_top += ux_top;
-+	x_bottom += ux_bottom;
-+	mask += mask_inc;
-+    }
-+
-+    /* Zero fill to the left of the image */
-+    while (buffer < end)
-+	*buffer++ = 0;
-+}
-+
- static force_inline uint32_t
- bits_image_fetch_pixel_convolution (bits_image_t   *image,
- 				    pixman_fixed_t  x,
-@@ -917,14 +1123,26 @@ bits_image_property_changed (pixman_image_t *image)
- 	     (bits->common.filter == PIXMAN_FILTER_BILINEAR ||
- 	      bits->common.filter == PIXMAN_FILTER_GOOD	    ||
- 	      bits->common.filter == PIXMAN_FILTER_BEST)		&&
--	     bits->common.repeat == PIXMAN_REPEAT_NONE			&&
--	     (bits->format == PIXMAN_a8r8g8b8	||
--	      bits->format == PIXMAN_x8r8g8b8))
-+	     bits->common.repeat == PIXMAN_REPEAT_NONE)
-     {
- 	image->common.get_scanline_64 =
- 	    _pixman_image_get_scanline_generic_64;
--	image->common.get_scanline_32 =
--	    bits_image_fetch_bilinear_no_repeat_8888;
-+
-+	if (bits->format == PIXMAN_a8r8g8b8 || bits->format == PIXMAN_x8r8g8b8)
-+	{
-+	    image->common.get_scanline_32 =
-+		bits_image_fetch_bilinear_no_repeat_8888;
-+	}
-+	else if (bits->format == PIXMAN_r5g6b5)
-+	{
-+	    image->common.get_scanline_32 =
-+		bits_image_fetch_bilinear_no_repeat_0565;
-+	}
-+	else
-+	{
-+	    image->common.get_scanline_32 =
-+		bits_image_fetch_transformed;
-+	}
-     }
-     else
-     {
---
-cgit v0.8.3-6-g21f6
diff --git a/recipes/xorg-lib/pixman-0.18.0/missing-cache-preload.diff b/recipes/xorg-lib/pixman-0.18.0/missing-cache-preload.diff
deleted file mode 100644
index 475bb35..0000000
--- a/recipes/xorg-lib/pixman-0.18.0/missing-cache-preload.diff
+++ /dev/null
@@ -1,28 +0,0 @@
-From 4f45c7688e6b767a5f7b7f5cced51b4797a3c288 Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Fri, 21 May 2010 13:31:03 +0000
-Subject: ARM: added missing cache preload
-
----
-diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
-index 51bc347..a99555a 100644
---- a/pixman/pixman-arm-neon-asm.S
-+++ b/pixman/pixman-arm-neon-asm.S
-@@ -388,6 +388,7 @@ generate_composite_function \
-     vld1.16     {d4, d5}, [DST_R, :128]!
-     vst1.16     {d28, d29}, [DST_W, :128]!
-     pixman_composite_over_n_0565_process_pixblock_head
-+    cache_preload 8, 8
- .endm
- 
- .macro pixman_composite_over_n_0565_init
-@@ -660,6 +661,7 @@ generate_composite_function_single_scanline \
-     vld4.8      {d4, d5, d6, d7}, [DST_R, :128]!
-     vst4.8      {d28, d29, d30, d31}, [DST_W, :128]!
-     pixman_composite_over_8888_8888_process_pixblock_head
-+    cache_preload 8, 8
- .endm
- 
- .macro pixman_composite_over_n_8888_init
---
-cgit v0.8.3-6-g21f6
diff --git a/recipes/xorg-lib/pixman-0.9.5/dont-copy-unused-bits-to-alpha-channel.patch b/recipes/xorg-lib/pixman-0.9.5/dont-copy-unused-bits-to-alpha-channel.patch
deleted file mode 100644
index 05fe829..0000000
--- a/recipes/xorg-lib/pixman-0.9.5/dont-copy-unused-bits-to-alpha-channel.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From: Carl Worth <cworth at cworth.org>
-
-Don't copy unused bits to an alpha channel
-
-This bug was identified by cairo's rgb24-ignore-alpha test which
-blends RGB24 over ARGB32 and notices that "alpha" values are
-making it from the source to the destination.
-
-Index: a/pixman/pixman-pict.c
-===================================================================
---- a/pixman/pixman-pict.c b8b7b767b3ed1fc57ba177c38187e1eb3daf4de8
-+++ b/pixman/pixman-pict.c c7d73fc532c2da313041906ac0f48dba1b10d3bc
-@@ -1778,7 +1778,6 @@ pixman_image_composite (pixman_op_t     
- 		    break;
- 		case PIXMAN_x8r8g8b8:
- 		    switch (pDst->bits.format) {
--		    case PIXMAN_a8r8g8b8:
- 		    case PIXMAN_x8r8g8b8:
- #ifdef USE_MMX
- 			if (pixman_have_mmx())
-@@ -1790,7 +1789,6 @@ pixman_image_composite (pixman_op_t     
- 		    }
- 		case PIXMAN_x8b8g8r8:
- 		    switch (pDst->bits.format) {
--		    case PIXMAN_a8b8g8r8:
- 		    case PIXMAN_x8b8g8r8:
- #ifdef USE_MMX
- 			if (pixman_have_mmx())
-
diff --git a/recipes/xorg-lib/pixman/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/recipes/xorg-lib/pixman/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
deleted file mode 100644
index a2cda24..0000000
--- a/recipes/xorg-lib/pixman/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From 8ea1a333de202018a862a7b04b94479d3109274b Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Tue, 16 Mar 2010 16:55:28 +0100
-Subject: [PATCH 1/5] Generic C implementation of pixman_blt with overlapping support
-
-Uses memcpy/memmove functions to copy pixels, can handle the
-case when both source and destination areas are in the same
-image (this is useful for scrolling).
-
-It is assumed that copying direction is only important when
-using the same image for both source and destination (and
-src_stride == dst_stride). Copying direction is undefined
-for the images with different source and destination stride
-which happen to be in the overlapped areas (but this is an
-unrealistic case anyway).
----
- pixman/pixman-general.c |   21 ++++++++++++++++++---
- pixman/pixman-private.h |   43 +++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 61 insertions(+), 3 deletions(-)
-
-diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c
-index bddf79a..f525744 100644
---- a/pixman/pixman-general.c
-+++ b/pixman/pixman-general.c
-@@ -285,9 +285,24 @@ general_blt (pixman_implementation_t *imp,
-              int                      width,
-              int                      height)
- {
--    /* We can't blit unless we have sse2 or mmx */
--
--    return FALSE;
-+    uint8_t *dst_bytes = (uint8_t *)dst_bits;
-+    uint8_t *src_bytes = (uint8_t *)src_bits;
-+    int bpp;
-+
-+    if (src_bpp != dst_bpp || src_bpp & 7)
-+	return FALSE;
-+
-+    bpp = src_bpp >> 3;
-+    width *= bpp;
-+    src_stride *= 4;
-+    dst_stride *= 4;
-+    pixman_blt_helper (src_bytes + src_y * src_stride + src_x * bpp,
-+                       dst_bytes + dst_y * dst_stride + dst_x * bpp,
-+                       src_stride,
-+                       dst_stride,
-+                       width,
-+                       height);
-+    return TRUE;
- }
- 
- static pixman_bool_t
-diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
-index d5767af..eeb677d 100644
---- a/pixman/pixman-private.h
-+++ b/pixman/pixman-private.h
-@@ -10,6 +10,7 @@
- 
- #include "pixman.h"
- #include <time.h>
-+#include <string.h>
- #include <assert.h>
- #include <stdio.h>
- #include <string.h>
-@@ -867,4 +868,46 @@ void pixman_timer_register (pixman_timer_t *timer);
- 
- #endif /* PIXMAN_TIMERS */
- 
-+/* a helper function, can blit 8-bit images with src/dst overlapping support */
-+static inline void
-+pixman_blt_helper (uint8_t *src_bytes,
-+                   uint8_t *dst_bytes,
-+                   int      src_stride,
-+                   int      dst_stride,
-+                   int      width,
-+                   int      height)
-+{
-+    /*
-+     * The second part of this check is not strictly needed, but it prevents
-+     * unnecessary upside-down processing of areas which belong to different
-+     * images. Upside-down processing can be slower with fixed-distance-ahead
-+     * prefetch and perceived as having more tearing.
-+     */
-+    if (src_bytes < dst_bytes + width &&
-+	src_bytes + src_stride * height > dst_bytes)
-+    {
-+	src_bytes += src_stride * height - src_stride;
-+	dst_bytes += dst_stride * height - dst_stride;
-+	dst_stride = -dst_stride;
-+	src_stride = -src_stride;
-+	/* Horizontal scrolling to the left needs memmove */
-+	if (src_bytes + width > dst_bytes)
-+	{
-+	    while (--height >= 0)
-+	    {
-+		memmove (dst_bytes, src_bytes, width);
-+		dst_bytes += dst_stride;
-+		src_bytes += src_stride;
-+	    }
-+	    return;
-+	}
-+    }
-+    while (--height >= 0)
-+    {
-+	memcpy (dst_bytes, src_bytes, width);
-+	dst_bytes += dst_stride;
-+	src_bytes += src_stride;
-+    }
-+}
-+
- #endif /* PIXMAN_PRIVATE_H */
--- 
-1.6.6.1
-
diff --git a/recipes/xorg-lib/pixman/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/recipes/xorg-lib/pixman/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
deleted file mode 100644
index 003337f..0000000
--- a/recipes/xorg-lib/pixman/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 3170d9f5e927681a2516bcec52b317d1d4785e25 Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Thu, 22 Oct 2009 05:45:47 +0300
-Subject: [PATCH 2/5] Support of overlapping src/dst for pixman_blt_mmx
-
----
- pixman/pixman-mmx.c |   55 +++++++++++++++++++++++++++++---------------------
- 1 files changed, 32 insertions(+), 23 deletions(-)
-
-diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
-index e084e7f..6212b31 100644
---- a/pixman/pixman-mmx.c
-+++ b/pixman/pixman-mmx.c
-@@ -2994,34 +2994,43 @@ pixman_blt_mmx (uint32_t *src_bits,
- {
-     uint8_t *   src_bytes;
-     uint8_t *   dst_bytes;
--    int byte_width;
-+    int         bpp;
- 
--    if (src_bpp != dst_bpp)
-+    if (src_bpp != dst_bpp || src_bpp & 7)
- 	return FALSE;
- 
--    if (src_bpp == 16)
--    {
--	src_stride = src_stride * (int) sizeof (uint32_t) / 2;
--	dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
--	src_bytes = (uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
--	dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
--	byte_width = 2 * width;
--	src_stride *= 2;
--	dst_stride *= 2;
--    }
--    else if (src_bpp == 32)
-+    bpp = src_bpp >> 3;
-+    width *= bpp;
-+    src_stride *= 4;
-+    dst_stride *= 4;
-+    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
-+    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
-+
-+    if (src_bpp != 16 && src_bpp != 32)
-     {
--	src_stride = src_stride * (int) sizeof (uint32_t) / 4;
--	dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
--	src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
--	dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
--	byte_width = 4 * width;
--	src_stride *= 4;
--	dst_stride *= 4;
-+	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
-+	                   width, height);
-+	return TRUE;
-     }
--    else
-+
-+    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
-     {
--	return FALSE;
-+	src_bytes += src_stride * height - src_stride;
-+	dst_bytes += dst_stride * height - dst_stride;
-+	dst_stride = -dst_stride;
-+	src_stride = -src_stride;
-+
-+	if (src_bytes + width > dst_bytes)
-+	{
-+	    /* TODO: reverse scanline copy using MMX */
-+	    while (--height >= 0)
-+	    {
-+		memmove (dst_bytes, src_bytes, width);
-+		dst_bytes += dst_stride;
-+		src_bytes += src_stride;
-+	    }
-+	    return TRUE;
-+	}
-     }
- 
-     while (height--)
-@@ -3031,7 +3040,7 @@ pixman_blt_mmx (uint32_t *src_bits,
- 	uint8_t *d = dst_bytes;
- 	src_bytes += src_stride;
- 	dst_bytes += dst_stride;
--	w = byte_width;
-+	w = width;
- 
- 	while (w >= 2 && ((unsigned long)d & 3))
- 	{
--- 
-1.6.6.1
-
diff --git a/recipes/xorg-lib/pixman/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/recipes/xorg-lib/pixman/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
deleted file mode 100644
index 7e8f34f..0000000
--- a/recipes/xorg-lib/pixman/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From f07cd58c643b490dcb1ef7be2642926cfeca1e69 Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Thu, 22 Oct 2009 05:45:54 +0300
-Subject: [PATCH 3/5] Support of overlapping src/dst for pixman_blt_sse2
-
----
- pixman/pixman-sse2.c |   55 +++++++++++++++++++++++++++++--------------------
- 1 files changed, 32 insertions(+), 23 deletions(-)
-
-diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
-index 946e7ba..66053ae 100644
---- a/pixman/pixman-sse2.c
-+++ b/pixman/pixman-sse2.c
-@@ -5299,34 +5299,43 @@ pixman_blt_sse2 (uint32_t *src_bits,
- {
-     uint8_t *   src_bytes;
-     uint8_t *   dst_bytes;
--    int byte_width;
-+    int         bpp;
- 
--    if (src_bpp != dst_bpp)
-+    if (src_bpp != dst_bpp || src_bpp & 7)
- 	return FALSE;
- 
--    if (src_bpp == 16)
--    {
--	src_stride = src_stride * (int) sizeof (uint32_t) / 2;
--	dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
--	src_bytes =(uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
--	dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
--	byte_width = 2 * width;
--	src_stride *= 2;
--	dst_stride *= 2;
--    }
--    else if (src_bpp == 32)
-+    bpp = src_bpp >> 3;
-+    width *= bpp;
-+    src_stride *= 4;
-+    dst_stride *= 4;
-+    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
-+    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
-+
-+    if (src_bpp != 16 && src_bpp != 32)
-     {
--	src_stride = src_stride * (int) sizeof (uint32_t) / 4;
--	dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
--	src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
--	dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
--	byte_width = 4 * width;
--	src_stride *= 4;
--	dst_stride *= 4;
-+	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
-+	                   width, height);
-+	return TRUE;
-     }
--    else
-+
-+    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
-     {
--	return FALSE;
-+	src_bytes += src_stride * height - src_stride;
-+	dst_bytes += dst_stride * height - dst_stride;
-+	dst_stride = -dst_stride;
-+	src_stride = -src_stride;
-+
-+	if (src_bytes + width > dst_bytes)
-+	{
-+	    /* TODO: reverse scanline copy using SSE2 */
-+	    while (--height >= 0)
-+	    {
-+		memmove (dst_bytes, src_bytes, width);
-+		dst_bytes += dst_stride;
-+		src_bytes += src_stride;
-+	    }
-+	    return TRUE;
-+	}
-     }
- 
-     cache_prefetch ((__m128i*)src_bytes);
-@@ -5339,7 +5348,7 @@ pixman_blt_sse2 (uint32_t *src_bits,
- 	uint8_t *d = dst_bytes;
- 	src_bytes += src_stride;
- 	dst_bytes += dst_stride;
--	w = byte_width;
-+	w = width;
- 
- 	cache_prefetch_next ((__m128i*)s);
- 	cache_prefetch_next ((__m128i*)d);
--- 
-1.6.6.1
-
diff --git a/recipes/xorg-lib/pixman/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/recipes/xorg-lib/pixman/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
deleted file mode 100644
index 0ba5b84..0000000
--- a/recipes/xorg-lib/pixman/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From e0542866c466ad512d69292df098d4b880e35e52 Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Wed, 18 Nov 2009 06:08:48 +0200
-Subject: [PATCH 4/5] Support of overlapping src/dst for pixman_blt_neon
-
----
- pixman/pixman-arm-neon.c |   62 +++++++++++++++++++++++++++++++++++++--------
- 1 files changed, 51 insertions(+), 11 deletions(-)
-
-diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
-index 24ceeeb..134493d 100644
---- a/pixman/pixman-arm-neon.c
-+++ b/pixman/pixman-arm-neon.c
-@@ -360,26 +360,66 @@ pixman_blt_neon (uint32_t *src_bits,
-                  int       width,
-                  int       height)
- {
--    if (src_bpp != dst_bpp)
-+    uint8_t *   src_bytes;
-+    uint8_t *   dst_bytes;
-+    int         bpp;
-+
-+    if (src_bpp != dst_bpp || src_bpp & 7)
- 	return FALSE;
- 
-+    bpp = src_bpp >> 3;
-+    width *= bpp;
-+    src_stride *= 4;
-+    dst_stride *= 4;
-+    src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
-+    dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
-+
-+    if (src_bpp != 16 && src_bpp != 32)
-+    {
-+	pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
-+	                   width, height);
-+	return TRUE;
-+    }
-+
-+    if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
-+    {
-+	src_bytes += src_stride * height - src_stride;
-+	dst_bytes += dst_stride * height - dst_stride;
-+	dst_stride = -dst_stride;
-+	src_stride = -src_stride;
-+
-+	if (src_bytes + width > dst_bytes)
-+	{
-+	    /* TODO: reverse scanline copy using NEON */
-+	    while (--height >= 0)
-+	    {
-+		memmove (dst_bytes, src_bytes, width);
-+		dst_bytes += dst_stride;
-+		src_bytes += src_stride;
-+	    }
-+	    return TRUE;
-+	}
-+    }
-+
-     switch (src_bpp)
-     {
-     case 16:
- 	pixman_composite_src_0565_0565_asm_neon (
--		width, height,
--		(uint16_t *)(((char *) dst_bits) +
--		dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2,
--		(uint16_t *)(((char *) src_bits) +
--		src_y * src_stride * 4 + src_x * 2), src_stride * 2);
-+		width >> 1,
-+		height,
-+		(uint16_t *) dst_bytes,
-+		dst_stride >> 1,
-+		(uint16_t *) src_bytes,
-+		src_stride >> 1);
- 	return TRUE;
-     case 32:
- 	pixman_composite_src_8888_8888_asm_neon (
--		width, height,
--		(uint32_t *)(((char *) dst_bits) +
--		dst_y * dst_stride * 4 + dst_x * 4), dst_stride,
--		(uint32_t *)(((char *) src_bits) +
--		src_y * src_stride * 4 + src_x * 4), src_stride);
-+		width >> 2,
-+		height,
-+		(uint32_t *) dst_bytes,
-+		dst_stride >> 2,
-+		(uint32_t *) src_bytes,
-+		src_stride >> 2);
- 	return TRUE;
-     default:
- 	return FALSE;
--- 
-1.6.6.1
-
diff --git a/recipes/xorg-lib/pixman/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch b/recipes/xorg-lib/pixman/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
deleted file mode 100644
index 769ed2e..0000000
--- a/recipes/xorg-lib/pixman/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-From d51b10a2750d99543a0c92ca44802aa7a4d70e54 Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Thu, 10 Dec 2009 00:51:50 +0200
-Subject: [PATCH 5/5] ARM: added NEON optimizations for fetch/store r5g6b5 scanline
-
----
- pixman/pixman-access.c       |   23 ++++++++++++++++++++++-
- pixman/pixman-arm-neon-asm.S |   20 ++++++++++++++++++++
- pixman/pixman-arm-neon.c     |   41 +++++++++++++++++++++++++++++++++++++++++
- pixman/pixman-private.h      |    5 +++++
- 4 files changed, 88 insertions(+), 1 deletions(-)
-
-diff --git a/pixman/pixman-access.c b/pixman/pixman-access.c
-index fa0a267..5bb3e09 100644
---- a/pixman/pixman-access.c
-+++ b/pixman/pixman-access.c
-@@ -2748,7 +2748,7 @@ typedef struct
- 	    store_scanline_ ## format, store_scanline_generic_64	\
-     }
- 
--static const format_info_t accessors[] =
-+static format_info_t accessors[] =
- {
- /* 32 bpp formats */
-     FORMAT_INFO (a8r8g8b8),
-@@ -2891,6 +2891,27 @@ _pixman_bits_image_setup_raw_accessors (bits_image_t *image)
- 	setup_accessors (image);
- }
- 
-+void
-+_pixman_bits_override_accessors (pixman_format_code_t format,
-+                                 fetch_scanline_t     fetch_func,
-+                                 store_scanline_t     store_func)
-+{
-+    format_info_t *info = accessors;
-+
-+    while (info->format != PIXMAN_null)
-+    {
-+	if (info->format == format)
-+	{
-+	    if (fetch_func)
-+		info->fetch_scanline_raw_32 = fetch_func;
-+	    if (store_func)
-+		info->store_scanline_raw_32 = store_func;
-+	    return;
-+	}
-+	info++;
-+    }
-+}
-+
- #else
- 
- void
-diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
-index eb8cc4c..6ab3301 100644
---- a/pixman/pixman-arm-neon-asm.S
-+++ b/pixman/pixman-arm-neon-asm.S
-@@ -454,6 +454,16 @@ generate_composite_function \
-     pixman_composite_src_8888_0565_process_pixblock_tail, \
-     pixman_composite_src_8888_0565_process_pixblock_tail_head
- 
-+generate_composite_function_single_scanline \
-+    pixman_store_scanline_r5g6b5_asm_neon, 32, 0, 16, \
-+    FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
-+    8, /* number of pixels, processed in a single block */ \
-+    default_init, \
-+    default_cleanup, \
-+    pixman_composite_src_8888_0565_process_pixblock_head, \
-+    pixman_composite_src_8888_0565_process_pixblock_tail, \
-+    pixman_composite_src_8888_0565_process_pixblock_tail_head
-+
- /******************************************************************************/
- 
- .macro pixman_composite_src_0565_8888_process_pixblock_head
-@@ -489,6 +499,16 @@ generate_composite_function \
-     pixman_composite_src_0565_8888_process_pixblock_tail, \
-     pixman_composite_src_0565_8888_process_pixblock_tail_head
- 
-+generate_composite_function_single_scanline \
-+    pixman_fetch_scanline_r5g6b5_asm_neon, 16, 0, 32, \
-+    FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
-+    8, /* number of pixels, processed in a single block */ \
-+    default_init, \
-+    default_cleanup, \
-+    pixman_composite_src_0565_8888_process_pixblock_head, \
-+    pixman_composite_src_0565_8888_process_pixblock_tail, \
-+    pixman_composite_src_0565_8888_process_pixblock_tail_head
-+
- /******************************************************************************/
- 
- .macro pixman_composite_add_8000_8000_process_pixblock_head
-diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
-index 134493d..2245b52 100644
---- a/pixman/pixman-arm-neon.c
-+++ b/pixman/pixman-arm-neon.c
-@@ -567,6 +567,43 @@ neon_combine_##name##_u (pixman_implementation_t *imp,                   \
- BIND_COMBINE_U (over)
- BIND_COMBINE_U (add)
- 
-+void
-+pixman_fetch_scanline_r5g6b5_asm_neon (int             width,
-+                                       uint32_t       *buffer,
-+                                       const uint16_t *pixel);
-+void
-+pixman_store_scanline_r5g6b5_asm_neon (int             width,
-+                                       uint16_t       *pixel,
-+                                       const uint32_t *values);
-+
-+static void
-+neon_fetch_scanline_r5g6b5 (pixman_image_t *image,
-+                            int             x,
-+                            int             y,
-+                            int             width,
-+                            uint32_t *      buffer,
-+                            const uint32_t *mask,
-+                            uint32_t        mask_bits)
-+{
-+    const uint32_t *bits = image->bits.bits + y * image->bits.rowstride;
-+    const uint16_t *pixel = (const uint16_t *)bits + x;
-+
-+    pixman_fetch_scanline_r5g6b5_asm_neon (width, buffer, pixel);
-+}
-+
-+static void
-+neon_store_scanline_r5g6b5 (bits_image_t *  image,
-+                            int             x,
-+                            int             y,
-+                            int             width,
-+                            const uint32_t *values)
-+{
-+    uint32_t *bits = image->bits + image->rowstride * y;
-+    uint16_t *pixel = ((uint16_t *) bits) + x;
-+
-+    pixman_store_scanline_r5g6b5_asm_neon (width, pixel, values);
-+}
-+
- pixman_implementation_t *
- _pixman_implementation_create_arm_neon (void)
- {
-@@ -577,6 +614,10 @@ _pixman_implementation_create_arm_neon (void)
-     imp->combine_32[PIXMAN_OP_OVER] = neon_combine_over_u;
-     imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u;
- 
-+    _pixman_bits_override_accessors (PIXMAN_r5g6b5,
-+                                     neon_fetch_scanline_r5g6b5,
-+                                     neon_store_scanline_r5g6b5);
-+
-     imp->blt = arm_neon_blt;
-     imp->fill = arm_neon_fill;
- 
-diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
-index eeb677d..ba2d401 100644
---- a/pixman/pixman-private.h
-+++ b/pixman/pixman-private.h
-@@ -220,6 +220,11 @@ void
- _pixman_bits_image_setup_raw_accessors (bits_image_t *image);
- 
- void
-+_pixman_bits_override_accessors (pixman_format_code_t format,
-+                                 fetch_scanline_t     fetch_func,
-+                                 store_scanline_t     store_func);
-+
-+void
- _pixman_image_get_scanline_generic_64  (pixman_image_t *image,
-                                         int             x,
-                                         int             y,
--- 
-1.6.6.1
-
diff --git a/recipes/xorg-lib/pixman/0006-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch b/recipes/xorg-lib/pixman/0006-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch
deleted file mode 100644
index 3d8d4e8..0000000
--- a/recipes/xorg-lib/pixman/0006-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 7f0adaef68c5b0bb1c5eb9f5db5792b71b8b8beb Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen at dominion.thruhere.net>
-Date: Fri, 19 Mar 2010 10:44:09 +0100
-Subject: [PATCH 6/6] Revert "ARM: SIMD: Try without any CFLAGS before forcing -mcpu="
-
-This forces -marm that results in runtime SIGILL on thumb userspace
-
-This reverts commit 18f0de452dc7e12e4cb544d761a626d5c6031663.
----
- configure.ac |   20 +++++---------------
- 1 files changed, 5 insertions(+), 15 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index fc3ee24..f84a4dc 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -363,28 +363,18 @@ AM_CONDITIONAL(USE_VMX, test $have_vmx_intrinsics = yes)
- 
- dnl ===========================================================================
- dnl Check for ARM SIMD instructions
--ARM_SIMD_CFLAGS=""
-+ARM_SIMD_CFLAGS="-mcpu=arm1136j-s"
- 
- have_arm_simd=no
- AC_MSG_CHECKING(whether to use ARM SIMD assembler)
--# check with default CFLAGS in case the toolchain turns on a sufficiently recent -mcpu=
-+xserver_save_CFLAGS=$CFLAGS
-+CFLAGS="$ARM_SIMD_CFLAGS $CFLAGS"
- AC_COMPILE_IFELSE([
- int main () {
-     asm("uqadd8 r1, r1, r2");
-     return 0;
--}], have_arm_simd=yes,
--    # check again with an explicit -mcpu= in case the toolchain defaults to an
--    # older one; note that uqadd8 isn't available in Thumb mode on arm1136j-s
--    # so we force ARM mode
--    ARM_SIMD_CFLAGS="-mcpu=arm1136j-s -marm"
--    xserver_save_CFLAGS=$CFLAGS
--    CFLAGS="$ARM_SIMD_CFLAGS $CFLAGS"
--    AC_COMPILE_IFELSE([
--    int main () {
--        asm("uqadd8 r1, r1, r2");
--        return 0;
--    }], have_arm_simd=yes)
--    CFLAGS=$xserver_save_CFLAGS)
-+}], have_arm_simd=yes)
-+CFLAGS=$xserver_save_CFLAGS
- 
- AC_ARG_ENABLE(arm-simd,
-    [AC_HELP_STRING([--disable-arm-simd],
--- 
-1.6.6.1
-
diff --git a/recipes/xorg-lib/pixman/calloc.patch b/recipes/xorg-lib/pixman/calloc.patch
deleted file mode 100644
index 4a60d7e..0000000
--- a/recipes/xorg-lib/pixman/calloc.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 634ba33b5b1fcfd5a0e7910f9991b4ed4f674549 Mon Sep 17 00:00:00 2001
-From: Søren Sandmann Pedersen <ssp at redhat.com>
-Date: Wed, 07 Apr 2010 05:39:14 +0000
-Subject: Fix uninitialized cache when pthreads are used
-
-The thread local cache is allocated with malloc(), but we rely on it
-being initialized to zero, so allocate it with calloc() instead.
----
-diff --git a/pixman/pixman-compiler.h b/pixman/pixman-compiler.h
-index a4e3f88..cdac0d8 100644
---- a/pixman/pixman-compiler.h
-+++ b/pixman/pixman-compiler.h
-@@ -101,7 +101,7 @@
-     static type *							\
-     tls_ ## name ## _alloc (key)					\
-     {									\
--	type *value = malloc (sizeof (type));				\
-+	type *value = calloc (1, sizeof (type));			\
- 	if (value)							\
- 	    pthread_setspecific (key, value);				\
- 	return value;							\
---
-cgit v0.8.3-6-g21f6
diff --git a/recipes/xorg-lib/pixman/nearest-neighbour.patch b/recipes/xorg-lib/pixman/nearest-neighbour.patch
deleted file mode 100644
index 29b140f..0000000
--- a/recipes/xorg-lib/pixman/nearest-neighbour.patch
+++ /dev/null
@@ -1,1040 +0,0 @@
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Fri, 17 Jul 2009 10:22:23 +0000 (+0300)
-Subject: Fastpath for nearest neighbour scaled compositing operations.
-X-Git-Url: http://siarhei.siamashka.name/gitweb/?p=pixman.git;a=commitdiff_plain;h=247531c6978725a88fd3706129b9d3e339026f54
-
-Fastpath for nearest neighbour scaled compositing operations.
-
-OVER 8888x8888, OVER 8888x0565, SRC 8888x8888, SRC 8888x0565
-and SRC 0565x0565 cases are supported.
----
-
-diff --git a/pixman/pixman-fast-path.c b/pixman/pixman-fast-path.c
-index 7f80578..7f3a6ad 100644
---- a/pixman/pixman-fast-path.c
-+++ b/pixman/pixman-fast-path.c
-@@ -1261,6 +1261,993 @@ fast_composite_src_scale_nearest (pixman_implementation_t *imp,
-     }
- }
- 
-+/*
-+ * Functions, which implement the core inner loops for the nearest neighbour
-+ * scaled fastpath compositing operations. The do not need to do clipping
-+ * checks, also the loops are unrolled to process two pixels per iteration
-+ * for better performance on most CPU architectures (superscalar processors
-+ * can issue several operations simultaneously, other processors can hide
-+ * instructions latencies by pipelining operations). Unrolling more
-+ * does not make much sense because the compiler will start running out
-+ * of spare registers soon.
-+ */
-+
-+#undef READ
-+#undef WRITE
-+#define READ(img,x) (*(x))
-+#define WRITE(img,ptr,v) ((*(ptr)) = (v))
-+
-+#define UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(x, a, y) do {                     \
-+        UN8x4_MUL_UN8_ADD_UN8x4(x, a, y);                                      \
-+        x = CONVERT_8888_TO_0565(x);                                       \
-+    } while (0)
-+
-+static void fbCompositeTransformNearestNonrotatedAffineTrivialclipOver_8888x0565 (
-+    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
-+    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
-+{
-+    uint16_t *dstLine;
-+    uint32_t *srcFirstLine;
-+    uint32_t  d;
-+    uint32_t  s1, s2;
-+    uint8_t   a1, a2;
-+    int       w;
-+    int       x1, x2, y;
-+    int32_t   orig_vx = vx;
-+
-+    uint32_t *src;
-+    uint16_t *dst;
-+    int       srcStride, dstStride;
-+    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
-+    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
-+     * transformed from destination space to source space */
-+    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
-+
-+    while (--height >= 0)
-+    {
-+        dst = dstLine;
-+        dstLine += dstStride;
-+
-+        y = vy >> 16;
-+        vy += unit_y;
-+
-+        if ((y < 0) || (y >= pSrc->bits.height)) {
-+            continue;
-+        }
-+
-+        src = srcFirstLine + srcStride * y;
-+
-+        w = width;
-+        vx = orig_vx;
-+        while ((w -= 2) >= 0)
-+        {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            s1 = READ(pSrc, src + x1);
-+
-+            x2 = vx >> 16;
-+            vx += unit_x;
-+            s2 = READ(pSrc, src + x2);
-+
-+            a1 = s1 >> 24;
-+            a2 = s2 >> 24;
-+
-+            if (a1 == 0xff)
-+                WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
-+            else if (s1) {
-+                d = CONVERT_0565_TO_0888(READ(pDst, dst));
-+                a1 ^= 0xff;
-+                UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a1, s1);
-+                WRITE(pDst, dst, d);
-+            }
-+            dst++;
-+
-+            if (a2 == 0xff)
-+                WRITE(pDst, dst, CONVERT_8888_TO_0565(s2));
-+            else if (s2) {
-+                d = CONVERT_0565_TO_0888(READ(pDst, dst));
-+                a2 ^= 0xff;
-+                UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a2, s2);
-+                WRITE(pDst, dst, d);
-+            }
-+            dst++;
-+        }
-+        if (w & 1) {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            s1 = READ(pSrc, src + x1);
-+
-+            a1 = s1 >> 24;
-+            if (a1 == 0xff)
-+                WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
-+            else if (s1) {
-+                d = CONVERT_0565_TO_0888(READ(pDst, dst));
-+                a1 ^= 0xff;
-+                UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a1, s1);
-+                WRITE(pDst, dst, d);
-+            }
-+            dst++;
-+        }
-+    }
-+}
-+
-+static void fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatOver_8888x0565 (
-+    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
-+    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
-+{
-+    uint16_t *dstLine;
-+    uint32_t *srcFirstLine;
-+    uint32_t  d;
-+    uint32_t  s1, s2;
-+    uint8_t   a1, a2;
-+    int       w;
-+    int       x1, x2, y;
-+    int32_t   orig_vx = vx;
-+    int32_t   max_vx, max_vy;
-+
-+    uint32_t *src;
-+    uint16_t *dst;
-+    int       srcStride, dstStride;
-+    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
-+    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
-+     * transformed from destination space to source space */
-+    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
-+
-+    max_vx = pSrc->bits.width << 16;
-+    max_vy = pSrc->bits.height << 16;
-+
-+    while (orig_vx < 0) orig_vx += max_vx;
-+    while (vy < 0) vy += max_vy;
-+    while (orig_vx >= max_vx) orig_vx -= max_vx;
-+    while (vy >= max_vy) vy -= max_vy;
-+
-+    while (--height >= 0)
-+    {
-+        dst = dstLine;
-+        dstLine += dstStride;
-+
-+        y = vy >> 16;
-+        vy += unit_y;
-+        while (vy >= max_vy) vy -= max_vy;
-+
-+        src = srcFirstLine + srcStride * y;
-+
-+        w = width;
-+        vx = orig_vx;
-+        while ((w -= 2) >= 0)
-+        {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            while (vx >= max_vx) vx -= max_vx;
-+            s1 = READ(pSrc, src + x1);
-+
-+            x2 = vx >> 16;
-+            vx += unit_x;
-+            while (vx >= max_vx) vx -= max_vx;
-+            s2 = READ(pSrc, src + x2);
-+
-+            a1 = s1 >> 24;
-+            a2 = s2 >> 24;
-+
-+            if (a1 == 0xff)
-+                WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
-+            else if (s1) {
-+                d = CONVERT_0565_TO_0888(READ(pDst, dst));
-+                a1 ^= 0xff;
-+                UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a1, s1);
-+                WRITE(pDst, dst, d);
-+            }
-+            dst++;
-+
-+            if (a2 == 0xff)
-+                WRITE(pDst, dst, CONVERT_8888_TO_0565(s2));
-+            else if (s2) {
-+                d = CONVERT_0565_TO_0888(READ(pDst, dst));
-+                a2 ^= 0xff;
-+                UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a2, s2);
-+                WRITE(pDst, dst, d);
-+            }
-+            dst++;
-+        }
-+        if (w & 1) {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            while (vx >= max_vx) vx -= max_vx;
-+            s1 = READ(pSrc, src + x1);
-+
-+            a1 = s1 >> 24;
-+            if (a1 == 0xff)
-+                WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
-+            else if (s1) {
-+                d = CONVERT_0565_TO_0888(READ(pDst, dst));
-+                a1 ^= 0xff;
-+                UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a1, s1);
-+                WRITE(pDst, dst, d);
-+            }
-+            dst++;
-+        }
-+    }
-+}
-+
-+static void fbCompositeTransformNearestNonrotatedAffineTrivialclipOver_8888x8888 (
-+    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
-+    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
-+{
-+    uint32_t *dstLine;
-+    uint32_t *srcFirstLine;
-+    uint32_t  d;
-+    uint32_t  s1, s2;
-+    uint8_t   a1, a2;
-+    int       w;
-+    int       x1, x2, y;
-+    int32_t   orig_vx = vx;
-+
-+    uint32_t *src, *dst;
-+    int       srcStride, dstStride;
-+    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
-+    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
-+     * transformed from destination space to source space */
-+    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
-+
-+    while (--height >= 0)
-+    {
-+        dst = dstLine;
-+        dstLine += dstStride;
-+
-+        y = vy >> 16;
-+        vy += unit_y;
-+
-+        if ((y < 0) || (y >= pSrc->bits.height)) {
-+            continue;
-+        }
-+
-+        src = srcFirstLine + srcStride * y;
-+
-+        w = width;
-+        vx = orig_vx;
-+        while ((w -= 2) >= 0)
-+        {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            s1 = READ(pSrc, src + x1);
-+
-+            x2 = vx >> 16;
-+            vx += unit_x;
-+            s2 = READ(pSrc, src + x2);
-+
-+            a1 = s1 >> 24;
-+            a2 = s2 >> 24;
-+
-+            if (a1 == 0xff)
-+                WRITE(pDst, dst, s1);
-+            else if (s1) {
-+                d = READ(pDst, dst);
-+                a1 ^= 0xff;
-+                UN8x4_MUL_UN8_ADD_UN8x4(d, a1, s1);
-+                WRITE(pDst, dst, d);
-+            }
-+            dst++;
-+
-+            if (a2 == 0xff)
-+                WRITE(pDst, dst, s2);
-+            else if (s2) {
-+                d = READ(pDst, dst);
-+                a2 ^= 0xff;
-+                UN8x4_MUL_UN8_ADD_UN8x4(d, a2, s2);
-+                WRITE(pDst, dst, d);
-+            }
-+            dst++;
-+        }
-+        if (w & 1) {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            s1 = READ(pSrc, src + x1);
-+
-+            a1 = s1 >> 24;
-+            if (a1 == 0xff)
-+                WRITE(pDst, dst, s1);
-+            else if (s1) {
-+                d = READ(pDst, dst);
-+                a1 ^= 0xff;
-+                UN8x4_MUL_UN8_ADD_UN8x4(d, a1, s1);
-+                WRITE(pDst, dst, d);
-+            }
-+            dst++;
-+        }
-+    }
-+}
-+
-+static void fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatOver_8888x8888 (
-+    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
-+    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
-+{
-+    uint32_t *dstLine;
-+    uint32_t *srcFirstLine;
-+    uint32_t  d;
-+    uint32_t  s1, s2;
-+    uint8_t   a1, a2;
-+    int       w;
-+    int       x1, x2, y;
-+    int32_t   orig_vx = vx;
-+    int32_t   max_vx, max_vy;
-+
-+    uint32_t *src, *dst;
-+    int       srcStride, dstStride;
-+    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
-+    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
-+     * transformed from destination space to source space */
-+    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
-+
-+    max_vx = pSrc->bits.width << 16;
-+    max_vy = pSrc->bits.height << 16;
-+
-+    while (orig_vx < 0) orig_vx += max_vx;
-+    while (vy < 0) vy += max_vy;
-+    while (orig_vx >= max_vx) orig_vx -= max_vx;
-+    while (vy >= max_vy) vy -= max_vy;
-+
-+    while (--height >= 0)
-+    {
-+        dst = dstLine;
-+        dstLine += dstStride;
-+
-+        y = vy >> 16;
-+        vy += unit_y;
-+        while (vy >= max_vy) vy -= max_vy;
-+
-+        src = srcFirstLine + srcStride * y;
-+
-+        w = width;
-+        vx = orig_vx;
-+        while ((w -= 2) >= 0)
-+        {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            while (vx >= max_vx) vx -= max_vx;
-+            s1 = READ(pSrc, src + x1);
-+
-+            x2 = vx >> 16;
-+            vx += unit_x;
-+            while (vx >= max_vx) vx -= max_vx;
-+            s2 = READ(pSrc, src + x2);
-+
-+            a1 = s1 >> 24;
-+            a2 = s2 >> 24;
-+
-+            if (a1 == 0xff)
-+                WRITE(pDst, dst, s1);
-+            else if (s1) {
-+                d = READ(pDst, dst);
-+                a1 ^= 0xff;
-+                UN8x4_MUL_UN8_ADD_UN8x4(d, a1, s1);
-+                WRITE(pDst, dst, d);
-+            }
-+            dst++;
-+
-+            if (a2 == 0xff)
-+                WRITE(pDst, dst, s2);
-+            else if (s2) {
-+                d = READ(pDst, dst);
-+                a2 ^= 0xff;
-+                UN8x4_MUL_UN8_ADD_UN8x4(d, a2, s2);
-+                WRITE(pDst, dst, d);
-+            }
-+            dst++;
-+        }
-+        if (w & 1) {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            while (vx >= max_vx) vx -= max_vx;
-+            s1 = READ(pSrc, src + x1);
-+
-+            a1 = s1 >> 24;
-+            if (a1 == 0xff)
-+                WRITE(pDst, dst, s1);
-+            else if (s1) {
-+                d = READ(pDst, dst);
-+                a1 ^= 0xff;
-+                UN8x4_MUL_UN8_ADD_UN8x4(d, a1, s1);
-+                WRITE(pDst, dst, d);
-+            }
-+            dst++;
-+        }
-+    }
-+}
-+
-+static void fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_8888x8888 (
-+    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
-+    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
-+{
-+    uint32_t *dstLine;
-+    uint32_t *srcFirstLine;
-+    uint32_t  s1, s2;
-+    int       w;
-+    int       x1, x2, y;
-+    int32_t   orig_vx = vx;
-+
-+    uint32_t *src, *dst;
-+    int       srcStride, dstStride;
-+    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
-+    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
-+     * transformed from destination space to source space */
-+    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
-+
-+    while (--height >= 0)
-+    {
-+        dst = dstLine;
-+        dstLine += dstStride;
-+
-+        y = vy >> 16;
-+        vy += unit_y;
-+
-+        if ((y < 0) || (y >= pSrc->bits.height)) {
-+            memset(dst, 0, width * sizeof(*dst));
-+            continue;
-+        }
-+
-+        src = srcFirstLine + srcStride * y;
-+
-+        w = width;
-+        vx = orig_vx;
-+        while ((w -= 2) >= 0)
-+        {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            s1 = READ(pSrc, src + x1);
-+
-+            x2 = vx >> 16;
-+            vx += unit_x;
-+            s2 = READ(pSrc, src + x2);
-+
-+            WRITE(pDst, dst, s1);
-+            dst++;
-+            WRITE(pDst, dst, s2);
-+            dst++;
-+        }
-+        if (w & 1) {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            s1 = READ(pSrc, src + x1);
-+            WRITE(pDst, dst, s1);
-+            dst++;
-+        }
-+    }
-+}
-+
-+static void fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_8888x8888 (
-+    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
-+    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
-+{
-+    uint32_t *dstLine;
-+    uint32_t *srcFirstLine;
-+    uint32_t  s1, s2;
-+    int       w;
-+    int       x1, x2, y;
-+    int32_t   orig_vx = vx;
-+    int32_t   max_vx, max_vy;
-+
-+    uint32_t *src, *dst;
-+    int       srcStride, dstStride;
-+    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
-+    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
-+     * transformed from destination space to source space */
-+    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
-+
-+    max_vx = pSrc->bits.width << 16;
-+    max_vy = pSrc->bits.height << 16;
-+
-+    while (orig_vx < 0) orig_vx += max_vx;
-+    while (vy < 0) vy += max_vy;
-+    while (orig_vx >= max_vx) orig_vx -= max_vx;
-+    while (vy >= max_vy) vy -= max_vy;
-+
-+    while (--height >= 0)
-+    {
-+        dst = dstLine;
-+        dstLine += dstStride;
-+
-+        y = vy >> 16;
-+        vy += unit_y;
-+        while (vy >= max_vy) vy -= max_vy;
-+
-+        src = srcFirstLine + srcStride * y;
-+
-+        w = width;
-+        vx = orig_vx;
-+        while ((w -= 2) >= 0)
-+        {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            while (vx >= max_vx) vx -= max_vx;
-+            s1 = READ(pSrc, src + x1);
-+
-+            x2 = vx >> 16;
-+            vx += unit_x;
-+            while (vx >= max_vx) vx -= max_vx;
-+            s2 = READ(pSrc, src + x2);
-+
-+            WRITE(pDst, dst, s1);
-+            dst++;
-+            WRITE(pDst, dst, s2);
-+            dst++;
-+        }
-+        if (w & 1) {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            while (vx >= max_vx) vx -= max_vx;
-+            s1 = READ(pSrc, src + x1);
-+
-+            WRITE(pDst, dst, s1);
-+            dst++;
-+        }
-+    }
-+}
-+
-+static void fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_0565x0565 (
-+    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
-+    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
-+{
-+    uint16_t *dstLine;
-+    uint16_t *srcFirstLine;
-+    uint16_t  s1, s2;
-+    int       w;
-+    int       x1, x2, y;
-+    int32_t   orig_vx = vx;
-+
-+    uint16_t *src, *dst;
-+    int       srcStride, dstStride;
-+    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
-+    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
-+     * transformed from destination space to source space */
-+    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint16_t, srcStride, srcFirstLine, 1);
-+
-+    while (--height >= 0)
-+    {
-+        dst = dstLine;
-+        dstLine += dstStride;
-+
-+        y = vy >> 16;
-+        vy += unit_y;
-+
-+        if ((y < 0) || (y >= pSrc->bits.height)) {
-+            memset(dst, 0, width * sizeof(*dst));
-+            continue;
-+        }
-+
-+        src = srcFirstLine + srcStride * y;
-+
-+        w = width;
-+        vx = orig_vx;
-+        while ((w -= 2) >= 0)
-+        {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            s1 = READ(pSrc, src + x1);
-+
-+            x2 = vx >> 16;
-+            vx += unit_x;
-+            s2 = READ(pSrc, src + x2);
-+
-+            WRITE(pDst, dst, s1);
-+            dst++;
-+            WRITE(pDst, dst, s2);
-+            dst++;
-+        }
-+        if (w & 1) {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            s1 = READ(pSrc, src + x1);
-+            WRITE(pDst, dst, s1);
-+            dst++;
-+        }
-+    }
-+}
-+
-+static void fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_0565x0565 (
-+    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
-+    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
-+{
-+    uint16_t *dstLine;
-+    uint16_t *srcFirstLine;
-+    uint16_t  s1, s2;
-+    int       w;
-+    int       x1, x2, y;
-+    int32_t   orig_vx = vx;
-+    int32_t   max_vx, max_vy;
-+
-+    uint16_t *src, *dst;
-+    int       srcStride, dstStride;
-+    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
-+    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
-+     * transformed from destination space to source space */
-+    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint16_t, srcStride, srcFirstLine, 1);
-+
-+    max_vx = pSrc->bits.width << 16;
-+    max_vy = pSrc->bits.height << 16;
-+
-+    while (orig_vx < 0) orig_vx += max_vx;
-+    while (vy < 0) vy += max_vy;
-+    while (orig_vx >= max_vx) orig_vx -= max_vx;
-+    while (vy >= max_vy) vy -= max_vy;
-+
-+    while (--height >= 0)
-+    {
-+        dst = dstLine;
-+        dstLine += dstStride;
-+
-+        y = vy >> 16;
-+        vy += unit_y;
-+        while (vy >= max_vy) vy -= max_vy;
-+
-+        src = srcFirstLine + srcStride * y;
-+
-+        w = width;
-+        vx = orig_vx;
-+        while ((w -= 2) >= 0)
-+        {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            while (vx >= max_vx) vx -= max_vx;
-+            s1 = READ(pSrc, src + x1);
-+
-+            x2 = vx >> 16;
-+            vx += unit_x;
-+            while (vx >= max_vx) vx -= max_vx;
-+            s2 = READ(pSrc, src + x2);
-+
-+            WRITE(pDst, dst, s1);
-+            dst++;
-+            WRITE(pDst, dst, s2);
-+            dst++;
-+        }
-+        if (w & 1) {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            while (vx >= max_vx) vx -= max_vx;
-+            s1 = READ(pSrc, src + x1);
-+
-+            WRITE(pDst, dst, s1);
-+            dst++;
-+        }
-+    }
-+}
-+
-+static void fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_8888x0565 (
-+    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
-+    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
-+{
-+    uint16_t *dstLine;
-+    uint32_t *srcFirstLine;
-+    uint32_t  s1, s2;
-+    int       w;
-+    int       x1, x2, y;
-+    int32_t   orig_vx = vx;
-+
-+    uint32_t *src;
-+    uint16_t *dst;
-+    int       srcStride, dstStride;
-+    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
-+    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
-+     * transformed from destination space to source space */
-+    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
-+
-+    while (--height >= 0)
-+    {
-+        dst = dstLine;
-+        dstLine += dstStride;
-+
-+        y = vy >> 16;
-+        vy += unit_y;
-+
-+        if ((y < 0) || (y >= pSrc->bits.height)) {
-+            memset(dst, 0, width * sizeof(*dst));
-+            continue;
-+        }
-+
-+        src = srcFirstLine + srcStride * y;
-+
-+        w = width;
-+        vx = orig_vx;
-+        while ((w -= 2) >= 0)
-+        {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            s1 = READ(pSrc, src + x1);
-+
-+            x2 = vx >> 16;
-+            vx += unit_x;
-+            s2 = READ(pSrc, src + x2);
-+
-+            WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
-+            dst++;
-+            WRITE(pDst, dst, CONVERT_8888_TO_0565(s2));
-+            dst++;
-+        }
-+        if (w & 1) {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            s1 = READ(pSrc, src + x1);
-+            WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
-+            dst++;
-+        }
-+    }
-+}
-+
-+static void fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_8888x0565 (
-+    pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst,
-+    int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y)
-+{
-+    uint16_t *dstLine;
-+    uint32_t *srcFirstLine;
-+    uint32_t  s1, s2;
-+    int       w;
-+    int       x1, x2, y;
-+    int32_t   orig_vx = vx;
-+    int32_t   max_vx, max_vy;
-+
-+    uint32_t *src;
-+    uint16_t *dst;
-+    int       srcStride, dstStride;
-+    PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
-+    /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be
-+     * transformed from destination space to source space */
-+    PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1);
-+
-+    max_vx = pSrc->bits.width << 16;
-+    max_vy = pSrc->bits.height << 16;
-+
-+    while (orig_vx < 0) orig_vx += max_vx;
-+    while (vy < 0) vy += max_vy;
-+    while (orig_vx >= max_vx) orig_vx -= max_vx;
-+    while (vy >= max_vy) vy -= max_vy;
-+
-+    while (--height >= 0)
-+    {
-+        dst = dstLine;
-+        dstLine += dstStride;
-+
-+        y = vy >> 16;
-+        vy += unit_y;
-+        while (vy >= max_vy) vy -= max_vy;
-+
-+        src = srcFirstLine + srcStride * y;
-+
-+        w = width;
-+        vx = orig_vx;
-+        while ((w -= 2) >= 0)
-+        {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            while (vx >= max_vx) vx -= max_vx;
-+            s1 = READ(pSrc, src + x1);
-+
-+            x2 = vx >> 16;
-+            vx += unit_x;
-+            while (vx >= max_vx) vx -= max_vx;
-+            s2 = READ(pSrc, src + x2);
-+
-+            WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
-+            dst++;
-+            WRITE(pDst, dst, CONVERT_8888_TO_0565(s2));
-+            dst++;
-+        }
-+        if (w & 1) {
-+            x1 = vx >> 16;
-+            vx += unit_x;
-+            while (vx >= max_vx) vx -= max_vx;
-+            s1 = READ(pSrc, src + x1);
-+
-+            WRITE(pDst, dst, CONVERT_8888_TO_0565(s1));
-+            dst++;
-+        }
-+    }
-+}
-+
-+/*
-+ * Check if the clipping boundary is crossed on horizontal scaling
-+ */
-+static inline pixman_bool_t
-+fbTransformVerifyHorizontalClipping(pixman_image_t *pict, int width, int32_t vx, int32_t unit_x)
-+{
-+    while (--width >= 0) {
-+        int x = vx >> 16;
-+        if ((x < 0) || (x >= pict->bits.width)) return 1;
-+        vx += unit_x;
-+    }
-+    return 0;
-+}
-+
-+/*
-+ * Check if the clipping boundary is crossed on vertical scaling
-+ */
-+static inline pixman_bool_t
-+fbTransformVerifyVerticalClipping(pixman_image_t *pict, int height, int32_t vy, int32_t unit_y)
-+{
-+    while (--height >= 0) {
-+        int y = vy >> 16;
-+        if ((y < 0) || (y >= pict->bits.height)) return 1;
-+        vy += unit_y;
-+    }
-+    return 0;
-+}
-+
-+/*
-+ * Easy case of transform without rotation or complex clipping
-+ * Returns 1 in the case if it was able to handle this operation and 0 otherwise
-+ */
-+static pixman_bool_t
-+fbCompositeTransformNonrotatedAffineTrivialclip (
-+			    pixman_op_t     op,
-+			    pixman_image_t *pSrc,
-+			    pixman_image_t *pMask,
-+			    pixman_image_t *pDst,
-+			    int16_t         xSrc,
-+			    int16_t         ySrc,
-+			    int16_t         xMask,
-+			    int16_t         yMask,
-+			    int16_t         xDst,
-+			    int16_t         yDst,
-+			    uint16_t        width,
-+			    uint16_t        height)
-+{
-+    pixman_vector_t v, unit;
-+    int skipdst_x = 0, skipdst_y = 0;
-+
-+    /* Handle destination clipping */
-+    if (xDst < pDst->common.clip_region.extents.x1) {
-+        skipdst_x = pDst->common.clip_region.extents.x1 - xDst;
-+        if (skipdst_x >= (int)width)
-+            return 1;
-+        xDst = pDst->common.clip_region.extents.x1;
-+        width -= skipdst_x;
-+    }
-+
-+    if (yDst < pDst->common.clip_region.extents.y1) {
-+        skipdst_y = pDst->common.clip_region.extents.y1 - yDst;
-+        if (skipdst_y >= (int)height)
-+            return 1;
-+        yDst = pDst->common.clip_region.extents.y1;
-+        height -= skipdst_y;
-+    }
-+
-+    if (xDst >= pDst->common.clip_region.extents.x2 ||
-+        yDst >= pDst->common.clip_region.extents.y2)
-+    {
-+        return 1;
-+    }
-+
-+    if (xDst + width > pDst->common.clip_region.extents.x2)
-+        width = pDst->common.clip_region.extents.x2 - xDst;
-+    if (yDst + height > pDst->common.clip_region.extents.y2)
-+        height = pDst->common.clip_region.extents.y2 - yDst;
-+
-+    /* reference point is the center of the pixel */
-+    v.vector[0] = pixman_int_to_fixed(xSrc) + pixman_fixed_1 / 2;
-+    v.vector[1] = pixman_int_to_fixed(ySrc) + pixman_fixed_1 / 2;
-+    v.vector[2] = pixman_fixed_1;
-+
-+    if (!pixman_transform_point_3d (pSrc->common.transform, &v))
-+        return 0;
-+
-+    /* Round down to closest integer, ensuring that 0.5 rounds to 0, not 1 */
-+    v.vector[0] -= pixman_fixed_e;
-+    v.vector[1] -= pixman_fixed_e;
-+
-+    unit.vector[0] = pSrc->common.transform->matrix[0][0];
-+    unit.vector[1] = pSrc->common.transform->matrix[1][1];
-+
-+    v.vector[0] += unit.vector[0] * skipdst_x;
-+    v.vector[1] += unit.vector[1] * skipdst_y;
-+
-+    /* Check for possible fixed point arithmetics problems/overflows */
-+    if (unit.vector[0] <= 0 || unit.vector[1] <= 0)
-+        return 0;
-+    if (width == 0 || height == 0)
-+        return 0;
-+    if ((uint32_t)width + (unit.vector[0] >> 16) >= 0x7FFF)
-+        return 0;
-+    if ((uint32_t)height + (unit.vector[1] >> 16) >= 0x7FFF)
-+        return 0;
-+
-+    /* Horizontal source clipping is only supported for NORMAL repeat */
-+    if (pSrc->common.repeat != PIXMAN_REPEAT_NORMAL
-+        && fbTransformVerifyHorizontalClipping(pSrc, width, v.vector[0], unit.vector[0])) {
-+        return 0;
-+    }
-+
-+    /* Vertical source clipping is only supported for NONE and NORMAL repeat */
-+    if (pSrc->common.repeat != PIXMAN_REPEAT_NONE && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL
-+        && fbTransformVerifyVerticalClipping(pSrc, height, v.vector[1], unit.vector[1])) {
-+        return 0;
-+    }
-+
-+    if (op == PIXMAN_OP_OVER && pSrc->bits.format == PIXMAN_a8r8g8b8
-+            && (pDst->bits.format == PIXMAN_x8r8g8b8 || pDst->bits.format == PIXMAN_a8r8g8b8))
-+    {
-+        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL) {
-+            fbCompositeTransformNearestNonrotatedAffineTrivialclipOver_8888x8888(
-+                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
-+                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
-+            return 1;
-+        }
-+        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL) {
-+            fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatOver_8888x8888(
-+                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
-+                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
-+            return 1;
-+        }
-+    }
-+
-+    if (op == PIXMAN_OP_SRC && (pSrc->bits.format == PIXMAN_x8r8g8b8 || pSrc->bits.format == PIXMAN_a8r8g8b8)
-+            && (pDst->bits.format == PIXMAN_x8r8g8b8 || pDst->bits.format == pSrc->bits.format))
-+    {
-+        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL) {
-+            fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_8888x8888(
-+                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
-+                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
-+            return 1;
-+        }
-+        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL) {
-+            fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_8888x8888(
-+                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
-+                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
-+            return 1;
-+        }
-+    }
-+
-+    if (op == PIXMAN_OP_OVER && pSrc->bits.format == PIXMAN_a8r8g8b8 && pDst->bits.format == PIXMAN_r5g6b5)
-+    {
-+        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL) {
-+            fbCompositeTransformNearestNonrotatedAffineTrivialclipOver_8888x0565(
-+                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
-+                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
-+            return 1;
-+        }
-+        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL) {
-+            fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatOver_8888x0565(
-+                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
-+                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
-+            return 1;
-+        }
-+    }
-+
-+    if (op == PIXMAN_OP_SRC && pSrc->bits.format == PIXMAN_r5g6b5 && pDst->bits.format == PIXMAN_r5g6b5)
-+    {
-+        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL) {
-+            fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_0565x0565(
-+                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
-+                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
-+            return 1;
-+        }
-+        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL) {
-+            fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_0565x0565(
-+                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
-+                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
-+            return 1;
-+        }
-+    }
-+
-+    if (op == PIXMAN_OP_SRC && (pSrc->bits.format == PIXMAN_x8r8g8b8 || pSrc->bits.format == PIXMAN_a8r8g8b8)
-+        && pDst->bits.format == PIXMAN_r5g6b5)
-+    {
-+        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL) {
-+            fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_8888x0565(
-+                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
-+                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
-+            return 1;
-+        }
-+        if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL) {
-+            fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_8888x0565(
-+                pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height,
-+                v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]);
-+            return 1;
-+        }
-+    }
-+
-+    /* No fastpath scaling implemented for this case */
-+    return 0;
-+}
-+
- static void
- fast_path_composite (pixman_implementation_t *imp,
-                      pixman_op_t              op,
-@@ -1279,6 +2266,30 @@ fast_path_composite (pixman_implementation_t *imp,
-     if (src->type == BITS
-         && src->common.transform
-         && !mask
-+        && !src->common.alpha_map && !dest->common.alpha_map
-+        && (src->common.filter == PIXMAN_FILTER_NEAREST)
-+        && !src->bits.read_func && !src->bits.write_func
-+        && !dest->bits.read_func && !dest->bits.write_func)
-+    {
-+        /* ensure that the transform matrix only has a scale */
-+        if (src->common.transform->matrix[0][1] == 0 &&
-+            src->common.transform->matrix[1][0] == 0 &&
-+            src->common.transform->matrix[2][0] == 0 &&
-+            src->common.transform->matrix[2][1] == 0 &&
-+            src->common.transform->matrix[2][2] == pixman_fixed_1 &&
-+            dest->common.clip_region.data == NULL)
-+        {
-+            if (fbCompositeTransformNonrotatedAffineTrivialclip (op, src, mask, dest,
-+                    src_x, src_y, mask_x, mask_y, dest_x, dest_y, width, height))
-+            {
-+                return;
-+            }
-+        }
-+    }
-+
-+    if (src->type == BITS
-+        && src->common.transform
-+        && !mask
-         && op == PIXMAN_OP_SRC
-         && !src->common.alpha_map && !dest->common.alpha_map
-         && (src->common.filter == PIXMAN_FILTER_NEAREST)
diff --git a/recipes/xorg-lib/pixman/over-n-8-0565.patch b/recipes/xorg-lib/pixman/over-n-8-0565.patch
deleted file mode 100644
index 3911068..0000000
--- a/recipes/xorg-lib/pixman/over-n-8-0565.patch
+++ /dev/null
@@ -1,231 +0,0 @@
-From de2221a32d0b6628116565563f7b4ccd0a44e8b6 Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Thu, 04 Mar 2010 23:20:25 +0000
-Subject: ARM: added 'armv6_composite_over_n_8_0565' fast path
-
-Provides ~3x performance improvement when working with
-data in L1 cache and memory. This fast path is important
-for fonts rendering when using 16bpp desktop.
-
-Microbenchmark from N800 (ARM11 @ 400MHz), measured in MPix/s:
-
-before:
-
- over_n_8_0565 = L1:   2.99 M:  2.86
-
-after:
-
- over_n_8_0565 = L1:   9.07 M:  8.05
----
-diff --git a/pixman/pixman-arm-simd.c b/pixman/pixman-arm-simd.c
-index 09a2888..c375c01 100644
---- a/pixman/pixman-arm-simd.c
-+++ b/pixman/pixman-arm-simd.c
-@@ -419,6 +419,193 @@ arm_composite_over_n_8_8888 (pixman_implementation_t * impl,
-     }
- }
- 
-+#if defined(__ARM_EABI__) && defined(__linux__)
-+/*
-+ * ARMv6 assembly optimized version of 'composite_over_n_8_0565'. It is
-+ * a bare metal 'naked' function which uses all the available CPU registers
-+ * and is compatible with ARM EABI. It might (or might not) break when used
-+ * with a different ABI, anyway it is better to be safe than sorry.
-+ */
-+static void __attribute__((naked)) armv6_composite_over_n_8_0565_asm (
-+    uint16_t *dst, uint8_t *mask, uint32_t src, int w,
-+    int dst_stride_delta, int mask_stride_delta, int h)
-+{
-+    asm volatile (
-+        ".macro composite_internal_armv6_asm opaque_flag\n"
-+            /* save all registers (8 words) to stack */
-+            "stmdb   sp!, {r4-r11, ip, lr}\n"
-+            /* some register aliases for better readability */
-+            "DST     .req  r0\n"
-+            "MASK    .req  r1\n"
-+            "S       .req  r2\n"
-+            "W       .req  r3\n"
-+            "A       .req  r8\n"
-+            "D       .req  r10\n"
-+            "C0000FF .req  r11\n"
-+            "C00001F .req  r9\n"
-+            "C800080 .req  ip\n"
-+            "CE000E0 .req  lr\n"
-+            /* precalculate some stuff and put it on stack */
-+            "mov     r6, #0xF8\n"
-+            "mov     r7, #0xFC\n"
-+
-+            "str     W, [sp, #-8]!\n"
-+
-+            ".if \\opaque_flag\n"
-+                /* precalculate and save it to stack for later use:
-+                 * ((src >> 3) & 0x001F) |
-+                 * ((src >> 5) & 0x07E0) |
-+                 * ((src >> 8) & 0xF800)
-+                 */
-+                "mov     A, #0x1F\n"
-+                "and     D, A, S, lsr #3\n"
-+                "and     r4, S, #0xF80000\n"
-+                "and     r5, S, #0xFC00\n"
-+                "orr     D, r4, lsr #8\n"
-+                "orr     D, r5, lsr #5\n"
-+                "str     D, [sp, #4]\n"
-+            ".endif\n"
-+
-+            "ldr     D, [sp, #(8 + 10*4 + 8)]\n" /* h */
-+            "ldr     A, =0xFF00FF\n"
-+            "ldr     C800080, =0x800080\n"
-+            "ldr     CE000E0, =0xE000E0\n"
-+            "ldr     C0000FF, =0xFF\n"
-+            "ldr     C00001F, =0x1F\n"
-+            "and     r4, A, S\n"           /* r4 = src & 0x00FF00FF */
-+            "and     r5, A, S, lsr #8\n"   /* r5 = (src >> 8) & 0x00FF00FF */
-+            "stmdb   sp!, {r4, r5, r6, r7}\n"
-+        "0:\n"
-+            "subs    D, D, #1\n"
-+            "blt     6f\n"
-+        "1:\n"
-+            "subs    W, W, #1\n"
-+            "blt     5f\n"
-+        "2:\n"
-+            "ldrb    A, [MASK], #1\n"
-+            "ldmia   sp, {r4, r5, r6, r7}\n" /* load constants from stack */
-+            "add     DST, DST, #2\n"
-+            "cmp     A, #0\n"
-+            "beq     1b\n"
-+
-+            ".if \\opaque_flag\n"
-+                "cmp     A, #0xFF\n"
-+                "bne     3f\n"
-+                "ldr     D, [sp, #(4*4 + 4)]\n" /* load precalculated value */
-+                "subs    W, #1\n"
-+                "strh    D, [DST, #-2]\n"
-+                "bge     2b\n"
-+            ".endif\n"
-+
-+        "3:\n"
-+            "ldrh    D, [DST, #-2]\n"
-+            "mla     r4, A, r4, C800080\n"
-+            "mla     r5, A, r5, C800080\n"
-+            "and     r6, r6, D, lsl #3\n" /* & 0xF8 */
-+            "and     r7, r7, D, lsr #3\n" /* & 0xFC */
-+            "and     D, D, #0xF800\n"
-+            "bic     S, r4, #0xFF0000\n"
-+            "bic     A, r5, #0xFF0000\n"
-+            "add     r4, r4, S, lsr #8\n"
-+            "add     r5, r5, A, lsr #8\n"
-+
-+            "and     S, r7, #0xC0\n"
-+            "orr     r6, r6, D, lsl #8\n"
-+            "and     D, r6, CE000E0\n"
-+            "eor     A, C0000FF, r5, lsr #24\n"
-+            "orr     r6, D, lsr #5\n"
-+            "orr     r7, S, lsr #6\n"
-+
-+            "mla     r6, A, r6, C800080\n"
-+            "mla     r7, A, r7, C800080\n"
-+            "subs    W, #1\n"
-+            "bic     D, r6, #0xFF0000\n"
-+            "bic     A, r7, #0xFF0000\n"
-+            "add     r6, r6, D, lsr #8\n"
-+            "uqadd8  r4, r4, r6\n"
-+            "add     r7, r7, A, lsr #8\n"
-+            "uqadd8  r5, r5, r7\n"
-+            "and     D, C00001F, r4, lsr #11\n"
-+            "and     r4, r4, #0xF8000000\n"
-+            "and     r5, r5, #0xFC00\n"
-+            "orr     D, r4, lsr #16\n"
-+            "orr     D, r5, lsr #5\n"
-+            "strh    D, [DST, #-2]\n"
-+            "bge     2b\n"
-+        "5:\n"
-+            "ldr     r6, [sp, #(4*4 + 8 + 10*4 + 8)]\n" /* h */
-+            "ldr     r4, [sp, #(4*4 + 8 + 10*4 + 4)]\n" /* mask stride */
-+            "ldr     r5, [sp, #(4*4 + 8 + 10*4 + 0)]\n" /* dst stride */
-+            "ldr     W, [sp, #(4*4)]\n"
-+            "subs    r6, r6, #1\n" /* h */
-+            "str     r6, [sp, #(4*4 + 8 + 10*4 + 8)]\n" /* h */
-+            "add     MASK, MASK, r4\n"
-+            "add     DST, DST, r5, lsl #1\n"
-+            "bgt     1b\n"
-+        "6:\n"
-+            "add     sp, sp, #(4*4 + 8)\n"
-+            /* restore all registers and return */
-+            "ldmia   sp!, {r4-r11, ip, pc}\n"
-+            ".unreq DST\n"
-+            ".unreq MASK\n"
-+            ".unreq S\n"
-+            ".unreq W\n"
-+            ".unreq A\n"
-+            ".unreq D\n"
-+            ".unreq C0000FF\n"
-+            ".unreq C00001F\n"
-+            ".unreq C800080\n"
-+            ".unreq CE000E0\n"
-+        ".endm\n"
-+
-+        "mov     ip, r2, lsr #24\n"
-+        "cmp     ip, #0xFF\n"
-+        "beq     9f\n"
-+        "composite_internal_armv6_asm 0\n"
-+    "9:\n"
-+        "composite_internal_armv6_asm 1\n"
-+        ".ltorg\n"
-+        ".purgem composite_internal_armv6_asm\n"
-+    );
-+}
-+
-+static void
-+armv6_composite_over_n_8_0565 (pixman_implementation_t * impl,
-+			       pixman_op_t               op,
-+			       pixman_image_t *          src_image,
-+			       pixman_image_t *          mask_image,
-+			       pixman_image_t *          dst_image,
-+			       int32_t                   src_x,
-+			       int32_t                   src_y,
-+			       int32_t                   mask_x,
-+			       int32_t                   mask_y,
-+			       int32_t                   dest_x,
-+			       int32_t                   dest_y,
-+			       int32_t                   width,
-+			       int32_t                   height)
-+{
-+    uint32_t src;
-+    uint16_t *dst;
-+    uint8_t  *mask;
-+    int dst_stride, mask_stride;
-+
-+    src = _pixman_image_get_solid (src_image, dst_image->bits.format);
-+
-+    /* bail out if fully transparent */
-+    if (src == 0)
-+	return;
-+
-+    PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t,
-+			   dst_stride, dst, 1);
-+    PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t,
-+			   mask_stride, mask, 1);
-+
-+    armv6_composite_over_n_8_0565_asm (dst, mask, src, width,
-+	dst_stride - width, mask_stride - width, height);
-+}
-+
-+#endif
-+
- static const pixman_fast_path_t arm_simd_fast_paths[] =
- {
-     PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, a8r8g8b8, arm_composite_over_8888_8888),
-@@ -434,7 +621,10 @@ static const pixman_fast_path_t arm_simd_fast_paths[] =
-     PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8r8g8b8, arm_composite_over_n_8_8888),
-     PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8b8g8r8, arm_composite_over_n_8_8888),
-     PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8b8g8r8, arm_composite_over_n_8_8888),
--
-+#if defined(__ARM_EABI__) && defined(__linux__)
-+    PIXMAN_STD_FAST_PATH (OVER, solid, a8, r5g6b5, armv6_composite_over_n_8_0565),
-+    PIXMAN_STD_FAST_PATH (OVER, solid, a8, b5g6r5, armv6_composite_over_n_8_0565),
-+#endif
-     { PIXMAN_OP_NONE },
- };
- 
---
-cgit v0.8.3-6-g21f6
diff --git a/recipes/xorg-lib/pixman/pixman-0.13.2-neon1.patch b/recipes/xorg-lib/pixman/pixman-0.13.2-neon1.patch
deleted file mode 100644
index b3bb762..0000000
--- a/recipes/xorg-lib/pixman/pixman-0.13.2-neon1.patch
+++ /dev/null
@@ -1,1702 +0,0 @@
-diff --git a/configure.ac b/configure.ac
-index 063f6eb..bada55c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -278,11 +278,12 @@ AC_SUBST(VMX_CFLAGS)
- AM_CONDITIONAL(USE_VMX, test $have_vmx_intrinsics = yes)
- 
- dnl Check for ARM SIMD instructions
-+ARM_SIMD_CFLAGS=""
- 
- have_arm_simd=no
- AC_MSG_CHECKING(whether to use ARM SIMD assembler)
- xserver_save_CFLAGS=$CFLAGS
--CFLAGS="$CFLAGS $ARM_CFLAGS"
-+CFLAGS="$CFLAGS $ARM_SIMD_CFLAGS"
- AC_COMPILE_IFELSE([
- int main () {
-     asm("uqadd8 r1, r1, r2");
-@@ -302,7 +303,7 @@ fi
- if test $have_arm_simd = yes ; then
-    AC_DEFINE(USE_ARM_SIMD, 1, [use ARM SIMD compiler intrinsics])
- else
--   ARM_CFLAGS=
-+   ARM_SIMD_CFLAGS=
- fi
- 
- AC_MSG_RESULT($have_arm_simd)
-@@ -310,9 +311,48 @@ if test $enable_arm_simd = yes && test $have_arm_simd = no ; then
-    AC_MSG_ERROR([ARM SIMD intrinsics not detected])
- fi
- 
--AC_SUBST(ARM_CFLAGS)
-+dnl Check for ARM NEON instructions
-+ARM_NEON_CFLAGS="-mcpu=cortex-a8 -mfpu=neon"
-+
-+have_arm_neon=no
-+AC_MSG_CHECKING(whether to use ARM NEON)
-+xserver_save_CFLAGS=$CFLAGS
-+CFLAGS="$CFLAGS $ARM_NEON_CFLAGS"
-+AC_COMPILE_IFELSE([
-+#include <arm_neon.h>
-+int main () {
-+    uint8x8_t neon_test=vmov_n_u8(0);
-+    return 0;
-+}], have_arm_neon=yes)
-+CFLAGS=$xserver_save_CFLAGS
-+
-+AC_ARG_ENABLE(arm-neon,
-+   [AC_HELP_STRING([--disable-arm-neon],
-+                   [disable ARM NEON fast paths])],
-+   [enable_arm_neon=$enableval], [enable_arm_neon=auto])
-+
-+if test $enable_arm_neon = no ; then
-+   have_arm_neon=disabled
-+fi
-+
-+if test $have_arm_neon = yes ; then
-+   AC_DEFINE(USE_ARM_NEON, 1, [use ARM NEON compiler intrinsics])
-+else
-+   ARM_NEON_CFLAGS=
-+fi
-+
-+AC_MSG_RESULT($have_arm_neon)
-+if test $enable_arm_neon = yes && test $have_arm_neon = no ; then
-+   AC_MSG_ERROR([ARM NEON intrinsics not detected])
-+fi
-+
-+
-+AC_SUBST(ARM_SIMD_CFLAGS)
-+AC_SUBST(ARM_NEON_CFLAGS)
- 
- AM_CONDITIONAL(USE_ARM_SIMD, test $have_arm_simd = yes)
-+AM_CONDITIONAL(USE_ARM_NEON, test $have_arm_neon = yes)
-+
- 
- 
- AC_ARG_ENABLE(gtk,
-diff --git a/pixman/Makefile.am b/pixman/Makefile.am
-index c4612ea..4c1ec6b 100644
---- a/pixman/Makefile.am
-+++ b/pixman/Makefile.am
-@@ -80,15 +80,26 @@ libpixman_sse2_la_LIBADD = $(DEP_LIBS)
- libpixman_1_la_LIBADD += libpixman-sse2.la
- endif
- 
--# arm code
-+# arm simd code
- if USE_ARM_SIMD
- noinst_LTLIBRARIES += libpixman-arm-simd.la
- libpixman_arm_simd_la_SOURCES = \
- 	pixman-arm-simd.c \
- 	pixman-arm-simd.h
--libpixman_arm_simd_la_CFLAGS = $(DEP_CFLAGS) $(ARM_CFLAGS)
-+libpixman_arm_simd_la_CFLAGS = $(DEP_CFLAGS) $(ARM_SIMD_CFLAGS)
- libpixman_arm_simd_la_LIBADD = $(DEP_LIBS)
- libpixman_1_la_LIBADD += libpixman-arm-simd.la
- endif
- 
-+# arm neon code
-+if USE_ARM_NEON
-+noinst_LTLIBRARIES += libpixman-arm-neon.la
-+libpixman_arm_neon_la_SOURCES = \
-+        pixman-arm-neon.c \
-+        pixman-arm-neon.h
-+libpixman_arm_neon_la_CFLAGS = $(DEP_CFLAGS) $(ARM_NEON_CFLAGS)
-+libpixman_arm_neon_la_LIBADD = $(DEP_LIBS)
-+libpixman_1_la_LIBADD += libpixman-arm-neon.la
-+endif
-+
- 
-diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
-new file mode 100644
-index 0000000..10050e4
---- /dev/null
-+++ b/pixman/pixman-arm-neon.c
-@@ -0,0 +1,1387 @@
-+/*
-+ * Copyright © 2009 Mozilla Corporation
-+ *
-+ * Permission to use, copy, modify, distribute, and sell this software and its
-+ * documentation for any purpose is hereby granted without fee, provided that
-+ * the above copyright notice appear in all copies and that both that
-+ * copyright notice and this permission notice appear in supporting
-+ * documentation, and that the name of Mozilla Corporation not be used in
-+ * advertising or publicity pertaining to distribution of the software without
-+ * specific, written prior permission.  Mozilla Corporation makes no
-+ * representations about the suitability of this software for any purpose.  It
-+ * is provided "as is" without express or implied warranty.
-+ *
-+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
-+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
-+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-+ * SOFTWARE.
-+ *
-+ * Author:  Ian Rickards (ian.rickards at arm.com) 
-+ *
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+#include <config.h>
-+#endif
-+
-+#include "pixman-arm-neon.h"
-+
-+#include <arm_neon.h>
-+
-+
-+#if !defined(__ARMCC_VERSION) && !defined(FORCE_NO_NEON_INLINE_ASM)
-+// [both armcc & gcc set __GNUC__]
-+// Use GNU style inline asm on gcc, for best performance
-+// Use intrinsics on armcc
-+// This switch determines if any GNU style inline asm is allowed
-+#define USE_NEON_INLINE_ASM
-+#endif
-+
-+
-+static force_inline uint8x8x4_t unpack0565(uint16x8_t rgb)
-+{
-+    uint16x8_t gb, b;
-+    uint8x8x4_t res;
-+
-+    res.val[3] = vdup_n_u8(0);
-+    gb = vshrq_n_u16(rgb, 5);
-+    b = vshrq_n_u16(rgb, 5+6);
-+    res.val[0] = vmovn_u16(rgb);  // get low 5 bits
-+    res.val[1] = vmovn_u16(gb);   // get mid 6 bits
-+    res.val[2] = vmovn_u16(b);    // get top 5 bits
-+
-+    res.val[0] = vshl_n_u8(res.val[0], 3); // shift to top
-+    res.val[1] = vshl_n_u8(res.val[1], 2); // shift to top
-+    res.val[2] = vshl_n_u8(res.val[2], 3); // shift to top
-+
-+    res.val[0] = vsri_n_u8(res.val[0], res.val[0], 5); 
-+    res.val[1] = vsri_n_u8(res.val[1], res.val[1], 6);
-+    res.val[2] = vsri_n_u8(res.val[2], res.val[2], 5);
-+
-+    return res;
-+}
-+
-+static force_inline uint16x8_t pack0565(uint8x8x4_t s)
-+{
-+    uint16x8_t rgb, val_g, val_r;
-+
-+    rgb = vshll_n_u8(s.val[2],8);
-+    val_g = vshll_n_u8(s.val[1],8);
-+    val_r = vshll_n_u8(s.val[0],8);
-+    rgb = vsriq_n_u16(rgb, val_g, 5);
-+    rgb = vsriq_n_u16(rgb, val_r, 5+6);
-+
-+    return rgb;
-+}
-+
-+static force_inline uint8x8_t neon2mul(uint8x8_t x, uint8x8_t alpha)
-+{
-+    uint16x8_t tmp,tmp2;
-+    uint8x8_t res;
-+
-+    tmp = vmull_u8(x,alpha);
-+    tmp2 = vrshrq_n_u16(tmp,8);
-+    res = vraddhn_u16(tmp,tmp2);
-+
-+    return res;
-+}
-+
-+static force_inline uint8x8x4_t neon8mul(uint8x8x4_t x, uint8x8_t alpha)
-+{
-+    uint16x8x4_t tmp;
-+    uint8x8x4_t res;
-+    uint16x8_t qtmp1,qtmp2;
-+
-+    tmp.val[0] = vmull_u8(x.val[0],alpha);
-+    tmp.val[1] = vmull_u8(x.val[1],alpha);
-+    tmp.val[2] = vmull_u8(x.val[2],alpha);
-+    tmp.val[3] = vmull_u8(x.val[3],alpha);
-+
-+    qtmp1 = vrshrq_n_u16(tmp.val[0],8);
-+    qtmp2 = vrshrq_n_u16(tmp.val[1],8);
-+    res.val[0] = vraddhn_u16(tmp.val[0],qtmp1);
-+    qtmp1 = vrshrq_n_u16(tmp.val[2],8);
-+    res.val[1] = vraddhn_u16(tmp.val[1],qtmp2);
-+    qtmp2 = vrshrq_n_u16(tmp.val[3],8);
-+    res.val[2] = vraddhn_u16(tmp.val[2],qtmp1);
-+    res.val[3] = vraddhn_u16(tmp.val[3],qtmp2);
-+
-+    return res;
-+}
-+
-+static force_inline uint8x8x4_t neon8qadd(uint8x8x4_t x, uint8x8x4_t y)
-+{
-+    uint8x8x4_t res;
-+
-+    res.val[0] = vqadd_u8(x.val[0],y.val[0]);
-+    res.val[1] = vqadd_u8(x.val[1],y.val[1]);
-+    res.val[2] = vqadd_u8(x.val[2],y.val[2]);
-+    res.val[3] = vqadd_u8(x.val[3],y.val[3]);
-+
-+    return res;
-+}
-+
-+
-+void
-+fbCompositeSrcAdd_8000x8000neon (pixman_op_t op,
-+                                pixman_image_t * pSrc,
-+                                pixman_image_t * pMask,
-+                                pixman_image_t * pDst,
-+                                int16_t      xSrc,
-+                                int16_t      ySrc,
-+                                int16_t      xMask,
-+                                int16_t      yMask,
-+                                int16_t      xDst,
-+                                int16_t      yDst,
-+                                uint16_t     width,
-+                                uint16_t     height)
-+{
-+    uint8_t     *dstLine, *dst;
-+    uint8_t     *srcLine, *src;
-+    int dstStride, srcStride;
-+    uint16_t    w;
-+
-+    fbComposeGetStart (pSrc, xSrc, ySrc, uint8_t, srcStride, srcLine, 1);
-+    fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 1);
-+
-+    if (width>=8)
-+    {
-+        // Use overlapping 8-pixel method
-+        while (height--)
-+        {
-+            dst = dstLine;
-+            dstLine += dstStride;
-+            src = srcLine;
-+            srcLine += srcStride;
-+            w = width;
-+
-+            uint8_t *keep_dst;
-+
-+#ifndef USE_NEON_INLINE_ASM
-+            uint8x8_t sval,dval,temp;
-+
-+            sval = vld1_u8((void*)src);
-+            dval = vld1_u8((void*)dst);
-+            keep_dst = dst;
-+
-+            temp = vqadd_u8(dval,sval);
-+
-+            src += (w & 7);
-+            dst += (w & 7);
-+            w -= (w & 7);
-+
-+            while (w)
-+            {
-+                sval = vld1_u8((void*)src);
-+                dval = vld1_u8((void*)dst);
-+
-+                vst1_u8((void*)keep_dst,temp);
-+                keep_dst = dst;
-+
-+                temp = vqadd_u8(dval,sval);
-+
-+                src+=8;
-+                dst+=8;
-+                w-=8;
-+            }
-+            vst1_u8((void*)keep_dst,temp);
-+#else
-+            asm volatile (
-+// avoid using d8-d15 (q4-q7) aapcs callee-save registers
-+                        "vld1.8  {d0}, [%[src]]\n\t"
-+                        "vld1.8  {d4}, [%[dst]]\n\t"
-+                        "mov     %[keep_dst], %[dst]\n\t"
-+
-+                        "and ip, %[w], #7\n\t"
-+                        "add %[src], %[src], ip\n\t"
-+                        "add %[dst], %[dst], ip\n\t"
-+                        "subs %[w], %[w], ip\n\t"
-+                        "b 9f\n\t"
-+// LOOP
-+                        "2:\n\t"
-+                        "vld1.8  {d0}, [%[src]]!\n\t"
-+                        "vld1.8  {d4}, [%[dst]]!\n\t"
-+                        "vst1.8  {d20}, [%[keep_dst]]\n\t"
-+                        "sub     %[keep_dst], %[dst], #8\n\t"
-+                        "subs %[w], %[w], #8\n\t"
-+                        "9:\n\t"
-+                        "vqadd.u8 d20, d0, d4\n\t"
-+
-+                        "bne 2b\n\t"
-+
-+                        "1:\n\t"
-+                        "vst1.8  {d20}, [%[keep_dst]]\n\t"
-+
-+                        : [w] "+r" (w), [src] "+r" (src), [dst] "+r" (dst), [keep_dst] "+r" (keep_dst)
-+                        :
-+                        : "ip", "cc", "memory", "d0","d4",
-+                          "d20"
-+                        );
-+#endif
-+        }
-+    }
-+    else
-+    {
-+        while (height--)
-+        {
-+            dst = dstLine;
-+            dstLine += dstStride;
-+            src = srcLine;
-+            srcLine += srcStride;
-+            w = width;
-+            uint8x8_t sval, dval;
-+            uint8_t *dst4, *dst2;
-+
-+            if (w&4)
-+            {
-+                sval = vreinterpret_u8_u32(vld1_lane_u32((void*)src,vreinterpret_u32_u8(sval),1));
-+                dval = vreinterpret_u8_u32(vld1_lane_u32((void*)dst,vreinterpret_u32_u8(dval),1));
-+                dst4=dst;
-+                src+=4;
-+                dst+=4;
-+            }
-+            if (w&2)
-+            {
-+                sval = vreinterpret_u8_u16(vld1_lane_u16((void*)src,vreinterpret_u16_u8(sval),1));
-+                dval = vreinterpret_u8_u16(vld1_lane_u16((void*)dst,vreinterpret_u16_u8(dval),1));
-+                dst2=dst;
-+                src+=2;
-+                dst+=2;
-+            }
-+            if (w&1)
-+            {
-+                sval = vld1_lane_u8((void*)src,sval,1);
-+                dval = vld1_lane_u8((void*)dst,dval,1);
-+            }
-+
-+            dval = vqadd_u8(dval,sval);
-+
-+            if (w&1)
-+                vst1_lane_u8((void*)dst,dval,1);
-+            if (w&2)
-+                vst1_lane_u16((void*)dst2,vreinterpret_u16_u8(dval),1);
-+            if (w&4)
-+                vst1_lane_u32((void*)dst4,vreinterpret_u32_u8(dval),1);
-+        }
-+    }
-+}
-+
-+
-+void
-+fbCompositeSrc_8888x8888neon (pixman_op_t op,
-+			 pixman_image_t * pSrc,
-+			 pixman_image_t * pMask,
-+			 pixman_image_t * pDst,
-+			 int16_t      xSrc,
-+			 int16_t      ySrc,
-+			 int16_t      xMask,
-+			 int16_t      yMask,
-+			 int16_t      xDst,
-+			 int16_t      yDst,
-+			 uint16_t     width,
-+			 uint16_t     height)
-+{
-+    uint32_t	*dstLine, *dst;
-+    uint32_t	*srcLine, *src;
-+    int	dstStride, srcStride;
-+    uint32_t	w;
-+
-+    fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
-+    fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
-+
-+    if (width>=8)
-+    {
-+        // Use overlapping 8-pixel method  
-+        while (height--)
-+        {
-+	    dst = dstLine;
-+	    dstLine += dstStride;
-+	    src = srcLine;
-+	    srcLine += srcStride;
-+	    w = width;
-+
-+            uint32_t *keep_dst;
-+
-+#ifndef USE_NEON_INLINE_ASM
-+            uint8x8x4_t sval,dval,temp;
-+
-+            sval = vld4_u8((void*)src);
-+            dval = vld4_u8((void*)dst);
-+            keep_dst = dst;
-+
-+            temp = neon8mul(dval,vmvn_u8(sval.val[3]));
-+            temp = neon8qadd(sval,temp);
-+
-+            src += (w & 7);
-+            dst += (w & 7);
-+            w -= (w & 7);
-+
-+            while (w)
-+            {
-+                sval = vld4_u8((void*)src);
-+                dval = vld4_u8((void*)dst);
-+
-+                vst4_u8((void*)keep_dst,temp);
-+                keep_dst = dst;
-+
-+                temp = neon8mul(dval,vmvn_u8(sval.val[3]));
-+                temp = neon8qadd(sval,temp);
-+
-+                src+=8;
-+                dst+=8;
-+                w-=8;
-+            }
-+            vst4_u8((void*)keep_dst,temp);
-+#else
-+            asm volatile (
-+// avoid using d8-d15 (q4-q7) aapcs callee-save registers
-+                        "vld4.8  {d0-d3}, [%[src]]\n\t"
-+                        "vld4.8  {d4-d7}, [%[dst]]\n\t"
-+                        "mov     %[keep_dst], %[dst]\n\t"
-+
-+                        "and ip, %[w], #7\n\t"
-+                        "add %[src], %[src], ip, LSL#2\n\t"
-+                        "add %[dst], %[dst], ip, LSL#2\n\t"
-+                        "subs %[w], %[w], ip\n\t"
-+                        "b 9f\n\t"
-+// LOOP
-+                        "2:\n\t"
-+                        "vld4.8  {d0-d3}, [%[src]]!\n\t"
-+                        "vld4.8  {d4-d7}, [%[dst]]!\n\t"
-+                        "vst4.8  {d20-d23}, [%[keep_dst]]\n\t"
-+                        "sub     %[keep_dst], %[dst], #8*4\n\t"
-+                        "subs %[w], %[w], #8\n\t"
-+                        "9:\n\t"
-+                        "vmvn.8  d31, d3\n\t"
-+                        "vmull.u8 q10, d31, d4\n\t"
-+                        "vmull.u8 q11, d31, d5\n\t"
-+                        "vmull.u8 q12, d31, d6\n\t"
-+                        "vmull.u8 q13, d31, d7\n\t"
-+                        "vrshr.u16 q8, q10, #8\n\t"
-+                        "vrshr.u16 q9, q11, #8\n\t"
-+                        "vraddhn.u16 d20, q10, q8\n\t"
-+                        "vraddhn.u16 d21, q11, q9\n\t"
-+                        "vrshr.u16 q8, q12, #8\n\t"
-+                        "vrshr.u16 q9, q13, #8\n\t"
-+                        "vraddhn.u16 d22, q12, q8\n\t"
-+                        "vraddhn.u16 d23, q13, q9\n\t"
-+// result in d20-d23
-+                        "vqadd.u8 d20, d0, d20\n\t"
-+                        "vqadd.u8 d21, d1, d21\n\t"
-+                        "vqadd.u8 d22, d2, d22\n\t"
-+                        "vqadd.u8 d23, d3, d23\n\t"
-+
-+                        "bne 2b\n\t"
-+
-+                        "1:\n\t"
-+                        "vst4.8  {d20-d23}, [%[keep_dst]]\n\t"
-+
-+                        : [w] "+r" (w), [src] "+r" (src), [dst] "+r" (dst), [keep_dst] "+r" (keep_dst)
-+                        : 
-+                        : "ip", "cc", "memory", "d0","d1","d2","d3","d4","d5","d6","d7",
-+                          "d16","d17","d18","d19","d20","d21","d22","d23"
-+                        );
-+#endif
-+        }
-+    }
-+    else
-+    {
-+        uint8x8_t    alpha_selector=vreinterpret_u8_u64(vcreate_u64(0x0707070703030303ULL));
-+
-+        // Handle width<8
-+        while (height--)
-+        {
-+            dst = dstLine;
-+            dstLine += dstStride;
-+            src = srcLine;
-+            srcLine += srcStride;
-+            w = width;
-+
-+            while (w>=2)
-+            {
-+                uint8x8_t sval,dval;
-+
-+                /* two 32-bit pixels packed into D-reg; ad-hoc vectorization */
-+                sval = vreinterpret_u8_u32(vld1_u32((void*)src));
-+                dval = vreinterpret_u8_u32(vld1_u32((void*)dst));
-+                dval = neon2mul(dval,vtbl1_u8(vmvn_u8(sval),alpha_selector));
-+                vst1_u8((void*)dst,vqadd_u8(sval,dval));
-+
-+                src+=2;
-+                dst+=2;
-+                w-=2;
-+            }
-+
-+            if (w)
-+            {
-+                uint8x8_t sval,dval;
-+
-+                /* single 32-bit pixel in lane 0 */
-+                sval = vreinterpret_u8_u32(vld1_dup_u32((void*)src));  // only interested in lane 0
-+                dval = vreinterpret_u8_u32(vld1_dup_u32((void*)dst));  // only interested in lane 0
-+                dval = neon2mul(dval,vtbl1_u8(vmvn_u8(sval),alpha_selector));
-+                vst1_lane_u32((void*)dst,vreinterpret_u32_u8(vqadd_u8(sval,dval)),0);
-+            }
-+        }
-+    }
-+}
-+
-+
-+
-+void
-+fbCompositeSrc_x888x0565neon (pixman_op_t op,
-+                          pixman_image_t * pSrc,
-+                          pixman_image_t * pMask,
-+                          pixman_image_t * pDst,
-+                          int16_t      xSrc,
-+                          int16_t      ySrc,
-+                          int16_t      xMask,
-+                          int16_t      yMask,
-+                          int16_t      xDst,
-+                          int16_t      yDst,
-+                          uint16_t     width,
-+                          uint16_t     height)
-+{
-+    uint16_t    *dstLine, *dst;
-+    uint32_t    *srcLine, *src;
-+    int dstStride, srcStride;
-+    uint32_t    w;
-+
-+    fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
-+    fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
-+
-+    if (width>=8)
-+    {
-+        while (height--)
-+        {
-+            dst = dstLine;
-+            dstLine += dstStride;
-+            src = srcLine;
-+            srcLine += srcStride;
-+            w = width;
-+
-+	    do {
-+	        while (w>=8)
-+	        {
-+#ifndef USE_NEON_INLINE_ASM
-+	            vst1q_u16(dst, pack0565(vld4_u8((void*)src)));
-+#else
-+                    asm volatile (
-+                        "vld4.8       {d4-d7}, [%[src]]\n\t"
-+                        "vshll.u8     q0, d6, #8\n\t"
-+                        "vshll.u8     q1, d5, #8\n\t"
-+                        "vsriq.u16    q0, q1, #5\t\n"
-+                        "vshll.u8     q1, d4, #8\n\t"
-+                        "vsriq.u16    q0, q1, #11\t\n"
-+                        "vst1.16      {q0}, [%[dst]]\n\t"
-+                        :
-+                        : [dst] "r" (dst), [src] "r" (src)
-+                        : "memory", "d0","d1","d2","d3","d4","d5","d6","d7"
-+                        );
-+#endif
-+	            src+=8;
-+	            dst+=8;
-+	            w-=8;
-+          	}
-+                if (w != 0)
-+                {
-+                    src -= (8-w);
-+                    dst -= (8-w);
-+                    w = 8;  // do another vector
-+                }
-+            } while (w!=0);
-+        }
-+    }
-+    else
-+    {
-+        // Handle width<8
-+        while (height--)
-+        {
-+            dst = dstLine;
-+            dstLine += dstStride;
-+            src = srcLine;
-+            srcLine += srcStride;
-+            w = width;
-+
-+	    while (w>=2)
-+	    {
-+	        uint32x2_t sval, rgb, g, b;
-+	        sval = vld1_u32(src);
-+	        rgb = vshr_n_u32(sval,8-5); // r (5 bits) 
-+	        g = vshr_n_u32(sval,8+8-6);  // g to bottom byte
-+	        rgb = vsli_n_u32(rgb, g, 5);
-+	        b = vshr_n_u32(sval,8+8+8-5);  // b to bottom byte
-+                rgb = vsli_n_u32(rgb, b, 11);
-+	        vst1_lane_u16(dst++,vreinterpret_u16_u32(rgb),0);
-+	        vst1_lane_u16(dst++,vreinterpret_u16_u32(rgb),2);
-+	        src+=2;
-+	        w-=2;
-+	    }
-+            if (w)
-+            {
-+                uint32x2_t sval, rgb, g, b;
-+                sval = vld1_dup_u32(src);
-+                rgb = vshr_n_u32(sval,8-5); // r (5 bits)
-+                g = vshr_n_u32(sval,8+8-6);  // g to bottom byte
-+                rgb = vsli_n_u32(rgb, g, 5);
-+                b = vshr_n_u32(sval,8+8+8-5);  // b to bottom byte
-+                rgb = vsli_n_u32(rgb, b, 11);
-+                vst1_lane_u16(dst++,vreinterpret_u16_u32(rgb),0);
-+            }
-+	}
-+    }
-+}
-+
-+
-+void
-+fbCompositeSrc_8888x8x8888neon (pixman_op_t op,
-+			       pixman_image_t * pSrc,
-+			       pixman_image_t * pMask,
-+			       pixman_image_t * pDst,
-+			       int16_t	xSrc,
-+			       int16_t	ySrc,
-+			       int16_t      xMask,
-+			       int16_t      yMask,
-+			       int16_t      xDst,
-+			       int16_t      yDst,
-+			       uint16_t     width,
-+			       uint16_t     height)
-+{
-+    uint32_t	*dstLine, *dst;
-+    uint32_t	*srcLine, *src;
-+    uint32_t	mask;
-+    int	dstStride, srcStride;
-+    uint32_t	w;
-+    uint8x8_t mask_alpha;
-+
-+    fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
-+    fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
-+
-+    fbComposeGetSolid (pMask, mask, pDst->bits.format);
-+    mask_alpha = vdup_n_u8((mask) >> 24);
-+
-+    if (width>=8)
-+    {
-+        // Use overlapping 8-pixel method
-+        while (height--)
-+        {
-+            dst = dstLine;
-+            dstLine += dstStride;
-+            src = srcLine;
-+            srcLine += srcStride;
-+            w = width;
-+
-+            uint32_t *keep_dst;
-+
-+#ifndef USE_NEON_INLINE_ASM
-+            uint8x8x4_t sval,dval,temp;
-+
-+            sval = vld4_u8((void*)src);
-+            dval = vld4_u8((void*)dst);
-+            keep_dst = dst;
-+
-+            sval = neon8mul(sval,mask_alpha);
-+            temp = neon8mul(dval,vmvn_u8(sval.val[3]));
-+            temp = neon8qadd(sval,temp);
-+
-+            src += (w & 7);
-+            dst += (w & 7);
-+            w -= (w & 7);
-+
-+            while (w)
-+            {
-+                sval = vld4_u8((void*)src);
-+                dval = vld4_u8((void*)dst);
-+
-+                vst4_u8((void*)keep_dst,temp);
-+                keep_dst = dst;
-+
-+                sval = neon8mul(sval,mask_alpha);
-+                temp = neon8mul(dval,vmvn_u8(sval.val[3]));
-+                temp = neon8qadd(sval,temp);
-+
-+                src+=8;
-+                dst+=8;
-+                w-=8;
-+            }
-+            vst4_u8((void*)keep_dst,temp);
-+#else
-+            asm volatile (
-+// avoid using d8-d15 (q4-q7) aapcs callee-save registers
-+                        "vdup.32      d30, %[mask]\n\t"
-+                        "vdup.8       d30, d30[3]\n\t"
-+
-+                        "vld4.8       {d0-d3}, [%[src]]\n\t"
-+                        "vld4.8       {d4-d7}, [%[dst]]\n\t"
-+                        "mov  %[keep_dst], %[dst]\n\t"
-+
-+                        "and  ip, %[w], #7\n\t"
-+                        "add  %[src], %[src], ip, LSL#2\n\t"
-+                        "add  %[dst], %[dst], ip, LSL#2\n\t"
-+                        "subs  %[w], %[w], ip\n\t"
-+                        "b 9f\n\t"
-+// LOOP
-+                        "2:\n\t"
-+                        "vld4.8       {d0-d3}, [%[src]]!\n\t"
-+                        "vld4.8       {d4-d7}, [%[dst]]!\n\t"
-+                        "vst4.8       {d20-d23}, [%[keep_dst]]\n\t"
-+                        "sub  %[keep_dst], %[dst], #8*4\n\t"
-+                        "subs  %[w], %[w], #8\n\t"
-+
-+                        "9:\n\t"
-+                        "vmull.u8     q10, d30, d0\n\t"
-+                        "vmull.u8     q11, d30, d1\n\t"
-+                        "vmull.u8     q12, d30, d2\n\t"
-+                        "vmull.u8     q13, d30, d3\n\t"
-+                        "vrshr.u16    q8, q10, #8\n\t"
-+                        "vrshr.u16    q9, q11, #8\n\t"
-+                        "vraddhn.u16  d0, q10, q8\n\t"
-+                        "vraddhn.u16  d1, q11, q9\n\t"
-+                        "vrshr.u16    q9, q13, #8\n\t"
-+                        "vrshr.u16    q8, q12, #8\n\t"
-+                        "vraddhn.u16  d3, q13, q9\n\t"
-+                        "vraddhn.u16  d2, q12, q8\n\t"
-+
-+                        "vmvn.8       d31, d3\n\t"
-+                        "vmull.u8     q10, d31, d4\n\t"
-+                        "vmull.u8     q11, d31, d5\n\t"
-+                        "vmull.u8     q12, d31, d6\n\t"
-+                        "vmull.u8     q13, d31, d7\n\t"
-+                        "vrshr.u16    q8, q10, #8\n\t"
-+                        "vrshr.u16    q9, q11, #8\n\t"
-+                        "vraddhn.u16  d20, q10, q8\n\t"
-+                        "vrshr.u16    q8, q12, #8\n\t"
-+                        "vraddhn.u16  d21, q11, q9\n\t"
-+                        "vrshr.u16    q9, q13, #8\n\t"
-+                        "vraddhn.u16  d22, q12, q8\n\t"
-+                        "vraddhn.u16  d23, q13, q9\n\t"
-+// result in d20-d23
-+                        "vqadd.u8     d20, d0, d20\n\t"
-+                        "vqadd.u8     d21, d1, d21\n\t"
-+                        "vqadd.u8     d22, d2, d22\n\t"
-+                        "vqadd.u8     d23, d3, d23\n\t"
-+
-+                        "bne  2b\n\t"
-+
-+                        "1:\n\t"
-+                        "vst4.8       {d20-d23}, [%[keep_dst]]\n\t"
-+
-+                        : [w] "+r" (w), [src] "+r" (src), [dst] "+r" (dst), [keep_dst] "+r" (keep_dst)
-+                        : [mask] "r" (mask)
-+                        : "ip", "cc", "memory", "d0","d1","d2","d3","d4","d5","d6","d7",
-+                          "d16","d17","d18","d19","d20","d21","d22","d23","d24","d25","d26","d27",
-+                          "d30","d31"
-+                        );
-+#endif
-+        }
-+    }
-+    else
-+    {
-+        uint8x8_t    alpha_selector=vreinterpret_u8_u64(vcreate_u64(0x0707070703030303ULL));
-+
-+        // Handle width<8
-+        while (height--)
-+        {
-+            dst = dstLine;
-+            dstLine += dstStride;
-+            src = srcLine;
-+            srcLine += srcStride;
-+            w = width;
-+
-+            while (w>=2)
-+            {
-+                uint8x8_t sval,dval;
-+
-+                sval = vreinterpret_u8_u32(vld1_u32((void*)src));
-+                dval = vreinterpret_u8_u32(vld1_u32((void*)dst));
-+
-+                /* sval * const alpha_mul */
-+                sval = neon2mul(sval,mask_alpha);
-+
-+                /* dval * 255-(src alpha) */
-+                dval = neon2mul(dval,vtbl1_u8(vmvn_u8(sval), alpha_selector));
-+
-+                vst1_u8((void*)dst,vqadd_u8(sval,dval));
-+
-+                src+=2;
-+                dst+=2;
-+                w-=2;
-+            }
-+
-+            if (w)
-+            {
-+                uint8x8_t sval,dval;
-+
-+                sval = vreinterpret_u8_u32(vld1_dup_u32((void*)src));
-+                dval = vreinterpret_u8_u32(vld1_dup_u32((void*)dst));
-+
-+                /* sval * const alpha_mul */
-+                sval = neon2mul(sval,mask_alpha);
-+
-+                /* dval * 255-(src alpha) */
-+                dval = neon2mul(dval,vtbl1_u8(vmvn_u8(sval), alpha_selector));
-+
-+                vst1_lane_u32((void*)dst,vreinterpret_u32_u8(vqadd_u8(sval,dval)),0);
-+            }
-+        }
-+    }
-+}
-+
-+
-+
-+void
-+fbCompositeSolidMask_nx8x0565neon (pixman_op_t op,
-+                               pixman_image_t * pSrc,
-+                               pixman_image_t * pMask,
-+                               pixman_image_t * pDst,
-+                               int16_t      xSrc,
-+                               int16_t      ySrc,
-+                               int16_t      xMask,
-+                               int16_t      yMask,
-+                               int16_t      xDst,
-+                               int16_t      yDst,
-+                               uint16_t     width,
-+                               uint16_t     height)
-+{
-+    uint32_t     src, srca;
-+    uint16_t    *dstLine, *dst;
-+    uint8_t     *maskLine, *mask;
-+    int          dstStride, maskStride;
-+    uint32_t     w;
-+    uint8x8_t    sval2;
-+    uint8x8x4_t  sval8;
-+
-+    fbComposeGetSolid(pSrc, src, pDst->bits.format);
-+
-+    srca = src >> 24;
-+    if (src == 0)
-+        return;
-+
-+    sval2=vreinterpret_u8_u32(vdup_n_u32(src));
-+    sval8.val[0]=vdup_lane_u8(sval2,0);
-+    sval8.val[1]=vdup_lane_u8(sval2,1);
-+    sval8.val[2]=vdup_lane_u8(sval2,2);
-+    sval8.val[3]=vdup_lane_u8(sval2,3);
-+
-+    fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
-+    fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1);
-+
-+    if (width>=8)
-+    {
-+        // Use overlapping 8-pixel method, modified to avoid rewritten dest being reused
-+        while (height--)
-+        {
-+            uint16_t *keep_dst;
-+
-+            dst = dstLine;
-+            dstLine += dstStride;
-+            mask = maskLine;
-+            maskLine += maskStride;
-+            w = width;
-+
-+#ifndef USE_NEON_INLINE_ASM
-+            uint8x8_t alpha;
-+            uint16x8_t dval, temp; 
-+            uint8x8x4_t sval8temp;
-+
-+            alpha = vld1_u8((void*)mask);
-+            dval = vld1q_u16((void*)dst);
-+            keep_dst = dst;
-+
-+            sval8temp = neon8mul(sval8,alpha);
-+            temp = pack0565(neon8qadd(sval8temp,neon8mul(unpack0565(dval),vmvn_u8(sval8temp.val[3]))));
-+
-+            mask += (w & 7);
-+            dst += (w & 7);
-+            w -= (w & 7);
-+
-+            while (w)
-+            {
-+                dval = vld1q_u16((void*)dst);
-+	        alpha = vld1_u8((void*)mask);
-+
-+                vst1q_u16((void*)keep_dst,temp);
-+                keep_dst = dst;
-+
-+                sval8temp = neon8mul(sval8,alpha);
-+                temp = pack0565(neon8qadd(sval8temp,neon8mul(unpack0565(dval),vmvn_u8(sval8temp.val[3]))));
-+
-+                mask+=8;
-+                dst+=8;
-+                w-=8;
-+            }
-+            vst1q_u16((void*)keep_dst,temp);
-+#else
-+        asm volatile (
-+                        "vdup.32      d0, %[src]\n\t"
-+                        "vdup.8       d1, d0[1]\n\t"
-+                        "vdup.8       d2, d0[2]\n\t"
-+                        "vdup.8       d3, d0[3]\n\t"
-+                        "vdup.8       d0, d0[0]\n\t"
-+
-+                        "vld1.8       {q12}, [%[dst]]\n\t"
-+                        "vld1.8       {d31}, [%[mask]]\n\t"
-+                        "mov  %[keep_dst], %[dst]\n\t"
-+
-+                        "and  ip, %[w], #7\n\t"
-+                        "add  %[mask], %[mask], ip\n\t"
-+                        "add  %[dst], %[dst], ip, LSL#1\n\t"
-+                        "subs  %[w], %[w], ip\n\t"
-+                        "b  9f\n\t"
-+// LOOP
-+                        "2:\n\t"
-+
-+                        "vld1.16      {q12}, [%[dst]]!\n\t"
-+                        "vld1.8       {d31}, [%[mask]]!\n\t"
-+                        "vst1.16      {q10}, [%[keep_dst]]\n\t"
-+                        "sub  %[keep_dst], %[dst], #8*2\n\t"
-+                        "subs  %[w], %[w], #8\n\t"
-+                        "9:\n\t"
-+// expand 0565 q12 to 8888 {d4-d7}
-+                        "vmovn.u16    d4, q12\t\n"
-+                        "vshr.u16     q11, q12, #5\t\n"
-+                        "vshr.u16     q10, q12, #6+5\t\n"
-+                        "vmovn.u16    d5, q11\t\n"
-+                        "vmovn.u16    d6, q10\t\n"
-+                        "vshl.u8      d4, d4, #3\t\n"
-+                        "vshl.u8      d5, d5, #2\t\n"
-+                        "vshl.u8      d6, d6, #3\t\n"
-+                        "vsri.u8      d4, d4, #5\t\n"
-+                        "vsri.u8      d5, d5, #6\t\n"
-+                        "vsri.u8      d6, d6, #5\t\n"
-+
-+                        "vmull.u8     q10, d31, d0\n\t"
-+                        "vmull.u8     q11, d31, d1\n\t"
-+                        "vmull.u8     q12, d31, d2\n\t"
-+                        "vmull.u8     q13, d31, d3\n\t"
-+                        "vrshr.u16    q8, q10, #8\n\t"
-+                        "vrshr.u16    q9, q11, #8\n\t"
-+                        "vraddhn.u16  d20, q10, q8\n\t"
-+                        "vraddhn.u16  d21, q11, q9\n\t"
-+                        "vrshr.u16    q9, q13, #8\n\t"
-+                        "vrshr.u16    q8, q12, #8\n\t"
-+                        "vraddhn.u16  d23, q13, q9\n\t"
-+                        "vraddhn.u16  d22, q12, q8\n\t"
-+
-+// duplicate in 4/2/1 & 8pix vsns
-+                        "vmvn.8       d30, d23\n\t"
-+                        "vmull.u8     q14, d30, d6\n\t"
-+                        "vmull.u8     q13, d30, d5\n\t"
-+                        "vmull.u8     q12, d30, d4\n\t"
-+                        "vrshr.u16    q8, q14, #8\n\t"
-+                        "vrshr.u16    q9, q13, #8\n\t"
-+                        "vraddhn.u16  d6, q14, q8\n\t"
-+                        "vrshr.u16    q8, q12, #8\n\t"
-+                        "vraddhn.u16  d5, q13, q9\n\t"
-+                        "vqadd.u8     d6, d6, d22\n\t"  // moved up
-+                        "vraddhn.u16  d4, q12, q8\n\t"
-+// intentionally don't calculate alpha
-+// result in d4-d6
-+
-+//                      "vqadd.u8     d6, d6, d22\n\t"  ** moved up
-+                        "vqadd.u8     d5, d5, d21\n\t"
-+                        "vqadd.u8     d4, d4, d20\n\t"
-+
-+// pack 8888 {d20-d23} to 0565 q10
-+                        "vshll.u8     q10, d6, #8\n\t"
-+                        "vshll.u8     q3, d5, #8\n\t"
-+                        "vshll.u8     q2, d4, #8\n\t"
-+                        "vsri.u16     q10, q3, #5\t\n"
-+                        "vsri.u16     q10, q2, #11\t\n"
-+
-+                        "bne 2b\n\t"
-+
-+                        "1:\n\t"
-+                        "vst1.16      {q10}, [%[keep_dst]]\n\t"
-+
-+                        : [w] "+r" (w), [dst] "+r" (dst), [mask] "+r" (mask), [keep_dst] "+r" (keep_dst)
-+                        : [src] "r" (src)
-+                        : "ip", "cc", "memory", "d0","d1","d2","d3","d4","d5","d6","d7",
-+                          "d16","d17","d18","d19","d20","d21","d22","d23","d24","d25","d26","d27","d28","d29",
-+                          "d30","d31"
-+                        );
-+#endif
-+        }
-+    }
-+    else
-+    {
-+        while (height--)
-+        {
-+            void *dst4, *dst2;
-+
-+            dst = dstLine;
-+            dstLine += dstStride;
-+            mask = maskLine;
-+            maskLine += maskStride;
-+            w = width;
-+
-+
-+#ifndef USE_NEON_INLINE_ASM
-+            uint8x8_t alpha;
-+            uint16x8_t dval, temp;
-+            uint8x8x4_t sval8temp;
-+
-+            if (w&4)
-+            {
-+                alpha = vreinterpret_u8_u32(vld1_lane_u32((void*)mask,vreinterpret_u32_u8(alpha),1));
-+                dval = vreinterpretq_u16_u64(vld1q_lane_u64((void*)dst,vreinterpretq_u64_u16(dval),1));
-+                dst4=dst;
-+                mask+=4;
-+                dst+=4;
-+            }
-+            if (w&2)
-+            {
-+                alpha = vreinterpret_u8_u16(vld1_lane_u16((void*)mask,vreinterpret_u16_u8(alpha),1));
-+                dval = vreinterpretq_u16_u32(vld1q_lane_u32((void*)dst,vreinterpretq_u32_u16(dval),1));
-+                dst2=dst;
-+                mask+=2;
-+                dst+=2;
-+            }
-+            if (w&1)
-+            {
-+                alpha = vld1_lane_u8((void*)mask,alpha,1);
-+                dval = vld1q_lane_u16((void*)dst,dval,1);
-+            }
-+
-+            sval8temp = neon8mul(sval8,alpha);
-+            temp = pack0565(neon8qadd(sval8temp,neon8mul(unpack0565(dval),vmvn_u8(sval8temp.val[3]))));
-+
-+            if (w&1)
-+                vst1q_lane_u16((void*)dst,temp,1);
-+            if (w&2)
-+                vst1q_lane_u32((void*)dst2,vreinterpretq_u32_u16(temp),1);
-+            if (w&4)
-+                vst1q_lane_u64((void*)dst4,vreinterpretq_u64_u16(temp),1);
-+#else
-+            asm volatile (
-+                        "vdup.32      d0, %[src]\n\t"
-+                        "vdup.8       d1, d0[1]\n\t"
-+                        "vdup.8       d2, d0[2]\n\t"
-+                        "vdup.8       d3, d0[3]\n\t"
-+                        "vdup.8       d0, d0[0]\n\t"
-+
-+                        "tst  %[w], #4\t\n"
-+                        "beq  skip_load4\t\n"
-+
-+                        "vld1.64      {d25}, [%[dst]]\n\t"
-+                        "vld1.32      {d31[1]}, [%[mask]]\n\t"
-+                        "mov  %[dst4], %[dst]\t\n"
-+                        "add  %[mask], %[mask], #4\t\n"
-+                        "add  %[dst], %[dst], #4*2\t\n"
-+
-+                        "skip_load4:\t\n"
-+                        "tst  %[w], #2\t\n"
-+                        "beq  skip_load2\t\n"
-+                        "vld1.32      {d24[1]}, [%[dst]]\n\t"
-+                        "vld1.16      {d31[1]}, [%[mask]]\n\t"
-+                        "mov  %[dst2], %[dst]\t\n"
-+                        "add  %[mask], %[mask], #2\t\n"
-+                        "add  %[dst], %[dst], #2*2\t\n"
-+
-+                        "skip_load2:\t\n"
-+                        "tst  %[w], #1\t\n"
-+                        "beq  skip_load1\t\n"
-+                        "vld1.16      {d24[1]}, [%[dst]]\n\t"
-+                        "vld1.8       {d31[1]}, [%[mask]]\n\t"
-+
-+                        "skip_load1:\t\n"
-+// expand 0565 q12 to 8888 {d4-d7}
-+                        "vmovn.u16    d4, q12\t\n"
-+                        "vshr.u16     q11, q12, #5\t\n"
-+                        "vshr.u16     q10, q12, #6+5\t\n"
-+                        "vmovn.u16    d5, q11\t\n"
-+                        "vmovn.u16    d6, q10\t\n"
-+                        "vshl.u8      d4, d4, #3\t\n"
-+                        "vshl.u8      d5, d5, #2\t\n"
-+                        "vshl.u8      d6, d6, #3\t\n"
-+                        "vsri.u8      d4, d4, #5\t\n"
-+                        "vsri.u8      d5, d5, #6\t\n"
-+                        "vsri.u8      d6, d6, #5\t\n"
-+
-+                        "vmull.u8     q10, d31, d0\n\t"
-+                        "vmull.u8     q11, d31, d1\n\t"
-+                        "vmull.u8     q12, d31, d2\n\t"
-+                        "vmull.u8     q13, d31, d3\n\t"
-+                        "vrshr.u16    q8, q10, #8\n\t"
-+                        "vrshr.u16    q9, q11, #8\n\t"
-+                        "vraddhn.u16  d20, q10, q8\n\t"
-+                        "vraddhn.u16  d21, q11, q9\n\t"
-+                        "vrshr.u16    q9, q13, #8\n\t"
-+                        "vrshr.u16    q8, q12, #8\n\t"
-+                        "vraddhn.u16  d23, q13, q9\n\t"
-+                        "vraddhn.u16  d22, q12, q8\n\t"
-+
-+// duplicate in 4/2/1 & 8pix vsns
-+                        "vmvn.8       d30, d23\n\t"
-+                        "vmull.u8     q14, d30, d6\n\t"
-+                        "vmull.u8     q13, d30, d5\n\t"
-+                        "vmull.u8     q12, d30, d4\n\t"
-+                        "vrshr.u16    q8, q14, #8\n\t"
-+                        "vrshr.u16    q9, q13, #8\n\t"
-+                        "vraddhn.u16  d6, q14, q8\n\t"
-+                        "vrshr.u16    q8, q12, #8\n\t"
-+                        "vraddhn.u16  d5, q13, q9\n\t"
-+                        "vqadd.u8     d6, d6, d22\n\t"  // moved up
-+                        "vraddhn.u16  d4, q12, q8\n\t"
-+// intentionally don't calculate alpha
-+// result in d4-d6
-+
-+//                      "vqadd.u8     d6, d6, d22\n\t"  ** moved up
-+                        "vqadd.u8     d5, d5, d21\n\t"
-+                        "vqadd.u8     d4, d4, d20\n\t"
-+
-+// pack 8888 {d20-d23} to 0565 q10
-+                        "vshll.u8     q10, d6, #8\n\t"
-+                        "vshll.u8     q3, d5, #8\n\t"
-+                        "vshll.u8     q2, d4, #8\n\t"
-+                        "vsri.u16     q10, q3, #5\t\n"
-+                        "vsri.u16     q10, q2, #11\t\n"
-+
-+                        "tst  %[w], #1\n\t"
-+                        "beq skip_store1\t\n"
-+                        "vst1.16      {d20[1]}, [%[dst]]\t\n"
-+                        "skip_store1:\t\n"
-+                        "tst  %[w], #2\n\t"
-+                        "beq  skip_store2\t\n"
-+                        "vst1.32      {d20[1]}, [%[dst2]]\t\n"
-+                        "skip_store2:\t\n"
-+                        "tst  %[w], #4\n\t"
-+                        "beq skip_store4\t\n"
-+                        "vst1.16      {d21}, [%[dst4]]\t\n"
-+                        "skip_store4:\t\n"
-+
-+                        : [w] "+r" (w), [dst] "+r" (dst), [mask] "+r" (mask), [dst4] "+r" (dst4), [dst2] "+r" (dst2)
-+                        : [src] "r" (src)
-+                        : "ip", "cc", "memory", "d0","d1","d2","d3","d4","d5","d6","d7",
-+                          "d16","d17","d18","d19","d20","d21","d22","d23","d24","d25","d26","d27","d28","d29",
-+                          "d30","d31"
-+                        );
-+#endif
-+        }
-+    }
-+}
-+
-+
-+void
-+fbCompositeSolidMask_nx8x8888neon (pixman_op_t      op,
-+			       pixman_image_t * pSrc,
-+			       pixman_image_t * pMask,
-+			       pixman_image_t * pDst,
-+			       int16_t      xSrc,
-+			       int16_t      ySrc,
-+			       int16_t      xMask,
-+			       int16_t      yMask,
-+			       int16_t      xDst,
-+			       int16_t      yDst,
-+			       uint16_t     width,
-+			       uint16_t     height)
-+{
-+    uint32_t	 src, srca;
-+    uint32_t	*dstLine, *dst;
-+    uint8_t	*maskLine, *mask;
-+    int		 dstStride, maskStride;
-+    uint32_t	 w;
-+    uint8x8_t    sval2;
-+    uint8x8x4_t  sval8;
-+    uint8x8_t    mask_selector=vreinterpret_u8_u64(vcreate_u64(0x0101010100000000ULL));
-+    uint8x8_t    alpha_selector=vreinterpret_u8_u64(vcreate_u64(0x0707070703030303ULL));
-+
-+    fbComposeGetSolid(pSrc, src, pDst->bits.format);
-+
-+    srca = src >> 24;
-+    if (src == 0)
-+	return;
-+
-+    sval2=vreinterpret_u8_u32(vdup_n_u32(src));
-+    sval8.val[0]=vdup_lane_u8(sval2,0);
-+    sval8.val[1]=vdup_lane_u8(sval2,1);
-+    sval8.val[2]=vdup_lane_u8(sval2,2);
-+    sval8.val[3]=vdup_lane_u8(sval2,3);
-+
-+    fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
-+    fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1);
-+
-+    if (width>=8)
-+    {
-+        // Use overlapping 8-pixel method, modified to avoid rewritten dest being reused
-+        while (height--)
-+        {
-+            uint32_t *keep_dst;
-+
-+            dst = dstLine;
-+            dstLine += dstStride;
-+            mask = maskLine;
-+            maskLine += maskStride;
-+            w = width;
-+
-+#ifndef USE_NEON_INLINE_ASM
-+            uint8x8_t alpha;
-+            uint8x8x4_t dval, temp;
-+
-+            alpha = vld1_u8((void*)mask);
-+            dval = vld4_u8((void*)dst);
-+            keep_dst = dst;
-+
-+            temp = neon8mul(sval8,alpha);
-+            dval = neon8mul(dval,vmvn_u8(temp.val[3]));
-+            temp = neon8qadd(temp,dval);
-+
-+            mask += (w & 7);
-+            dst += (w & 7);
-+            w -= (w & 7);
-+
-+            while (w)
-+            {
-+                alpha = vld1_u8((void*)mask);
-+                dval = vld4_u8((void*)dst);
-+
-+                vst4_u8((void*)keep_dst,temp);
-+                keep_dst = dst;
-+
-+                temp = neon8mul(sval8,alpha);
-+                dval = neon8mul(dval,vmvn_u8(temp.val[3]));
-+                temp = neon8qadd(temp,dval);
-+
-+                mask+=8;
-+                dst+=8;
-+                w-=8;
-+            }
-+            vst4_u8((void*)keep_dst,temp);
-+#else
-+        asm volatile (
-+                        "vdup.32      d0, %[src]\n\t"
-+                        "vdup.8       d1, d0[1]\n\t"
-+                        "vdup.8       d2, d0[2]\n\t"
-+                        "vdup.8       d3, d0[3]\n\t"
-+                        "vdup.8       d0, d0[0]\n\t"
-+
-+                        "vld4.8       {d4-d7}, [%[dst]]\n\t"
-+                        "vld1.8       {d31}, [%[mask]]\n\t"
-+                        "mov  %[keep_dst], %[dst]\n\t"
-+
-+                        "and  ip, %[w], #7\n\t"
-+                        "add  %[mask], %[mask], ip\n\t"
-+                        "add  %[dst], %[dst], ip, LSL#2\n\t"
-+                        "subs  %[w], %[w], ip\n\t"
-+                        "b 9f\n\t"
-+// LOOP
-+                        "2:\n\t" 
-+                        "vld4.8       {d4-d7}, [%[dst]]!\n\t"
-+                        "vld1.8       {d31}, [%[mask]]!\n\t"
-+                        "vst4.8       {d20-d23}, [%[keep_dst]]\n\t"
-+                        "sub  %[keep_dst], %[dst], #8*4\n\t"
-+                        "subs  %[w], %[w], #8\n\t"
-+                        "9:\n\t"
-+
-+                        "vmull.u8     q10, d31, d0\n\t"
-+                        "vmull.u8     q11, d31, d1\n\t"
-+                        "vmull.u8     q12, d31, d2\n\t"
-+                        "vmull.u8     q13, d31, d3\n\t"
-+                        "vrshr.u16    q8, q10, #8\n\t"
-+                        "vrshr.u16    q9, q11, #8\n\t"
-+                        "vraddhn.u16  d20, q10, q8\n\t"
-+                        "vraddhn.u16  d21, q11, q9\n\t"
-+                        "vrshr.u16    q9, q13, #8\n\t"
-+                        "vrshr.u16    q8, q12, #8\n\t"
-+                        "vraddhn.u16  d23, q13, q9\n\t"
-+                        "vraddhn.u16  d22, q12, q8\n\t"
-+
-+                        "vmvn.8       d30, d23\n\t"
-+                        "vmull.u8     q12, d30, d4\n\t"
-+                        "vmull.u8     q13, d30, d5\n\t"
-+                        "vmull.u8     q14, d30, d6\n\t"
-+                        "vmull.u8     q15, d30, d7\n\t"
-+
-+                        "vrshr.u16    q8, q12, #8\n\t"
-+                        "vrshr.u16    q9, q13, #8\n\t"
-+                        "vraddhn.u16  d4, q12, q8\n\t"
-+                        "vrshr.u16    q8, q14, #8\n\t"
-+                        "vraddhn.u16  d5, q13, q9\n\t"
-+                        "vrshr.u16    q9, q15, #8\n\t"
-+                        "vraddhn.u16  d6, q14, q8\n\t"
-+                        "vraddhn.u16  d7, q15, q9\n\t"
-+// result in d4-d7
-+
-+                        "vqadd.u8     d20, d4, d20\n\t"
-+                        "vqadd.u8     d21, d5, d21\n\t"
-+                        "vqadd.u8     d22, d6, d22\n\t"
-+                        "vqadd.u8     d23, d7, d23\n\t"
-+
-+                        "bne 2b\n\t"
-+
-+                        "1:\n\t"
-+                        "vst4.8       {d20-d23}, [%[keep_dst]]\n\t"
-+
-+                        : [w] "+r" (w), [dst] "+r" (dst), [mask] "+r" (mask), [keep_dst] "+r" (keep_dst)
-+                        : [src] "r" (src) 
-+                        : "ip", "cc", "memory", "d0","d1","d2","d3","d4","d5","d6","d7",
-+                          "d16","d17","d18","d19","d20","d21","d22","d23","d24","d25","d26","d27","d28","d29",
-+                          "d30","d31"
-+                        );
-+#endif
-+        }
-+    }
-+    else
-+    {
-+        while (height--)
-+        {
-+            uint8x8_t alpha;
-+
-+            dst = dstLine;
-+            dstLine += dstStride;
-+            mask = maskLine;
-+            maskLine += maskStride;
-+            w = width;
-+
-+            while (w>=2)
-+            {
-+                uint8x8_t dval, temp, res;
-+
-+                alpha = vtbl1_u8(vreinterpret_u8_u16(vld1_dup_u16((void*)mask)), mask_selector);
-+                dval = vld1_u8((void*)dst);
-+
-+                temp = neon2mul(sval2,alpha);
-+                res = vqadd_u8(temp,neon2mul(dval,vtbl1_u8(vmvn_u8(temp), alpha_selector)));
-+
-+                vst1_u8((void*)dst,res);
-+
-+                mask+=2;
-+                dst+=2;
-+                w-=2;
-+            }
-+            if (w)
-+            {
-+                uint8x8_t dval, temp, res;
-+
-+                alpha = vtbl1_u8(vld1_dup_u8((void*)mask), mask_selector);
-+                dval = vreinterpret_u8_u32(vld1_dup_u32((void*)dst));
-+
-+                temp = neon2mul(sval2,alpha);
-+                res = vqadd_u8(temp,neon2mul(dval,vtbl1_u8(vmvn_u8(temp), alpha_selector)));
-+
-+                vst1_lane_u32((void*)dst,vreinterpret_u32_u8(res),0);
-+            }
-+        }
-+    }
-+}
-+
-+
-+void
-+fbCompositeSrcAdd_8888x8x8neon (pixman_op_t op,
-+                            pixman_image_t * pSrc,
-+                            pixman_image_t * pMask,
-+                            pixman_image_t * pDst,
-+                            int16_t      xSrc,
-+                            int16_t      ySrc,
-+                            int16_t      xMask,
-+                            int16_t      yMask,
-+                            int16_t      xDst,
-+                            int16_t      yDst,
-+                            uint16_t     width,
-+                            uint16_t     height)
-+{
-+    uint8_t     *dstLine, *dst;
-+    uint8_t     *maskLine, *mask;
-+    int dstStride, maskStride;
-+    uint32_t    w;
-+    uint32_t    src;
-+    uint8x8_t   sa;
-+
-+    fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 1);
-+    fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1);
-+    fbComposeGetSolid (pSrc, src, pDst->bits.format);
-+    sa = vdup_n_u8((src) >> 24);
-+
-+    if (width>=8)
-+    {
-+        // Use overlapping 8-pixel method, modified to avoid rewritten dest being reused
-+        while (height--)
-+        {
-+            dst = dstLine;
-+            dstLine += dstStride;
-+            mask = maskLine;
-+            maskLine += maskStride;
-+            w = width;
-+
-+            uint8x8_t mval, dval, res;
-+            uint8_t     *keep_dst;
-+
-+            mval = vld1_u8((void *)mask);
-+            dval = vld1_u8((void *)dst);
-+            keep_dst = dst;
-+
-+            res = vqadd_u8(neon2mul(mval,sa),dval);
-+
-+            mask += (w & 7);
-+            dst += (w & 7);
-+            w -= w & 7;
-+
-+            while (w)
-+            {
-+                mval = vld1_u8((void *)mask);
-+                dval = vld1_u8((void *)dst);
-+                vst1_u8((void *)keep_dst, res);
-+                keep_dst = dst;
-+
-+                res = vqadd_u8(neon2mul(mval,sa),dval);
-+
-+                mask += 8;
-+                dst += 8;
-+                w -= 8;
-+            }
-+            vst1_u8((void *)keep_dst, res);
-+        }
-+    }
-+    else
-+    {
-+        // Use 4/2/1 load/store method to handle 1-7 pixels
-+        while (height--)
-+        {
-+            dst = dstLine;
-+            dstLine += dstStride;
-+            mask = maskLine;
-+            maskLine += maskStride;
-+            w = width;
-+
-+            uint8x8_t mval, dval, res;
-+            uint8_t *dst4, *dst2;
-+
-+            if (w&4)
-+            {
-+                mval = vreinterpret_u8_u32(vld1_lane_u32((void *)mask, vreinterpret_u32_u8(mval), 1));
-+                dval = vreinterpret_u8_u32(vld1_lane_u32((void *)dst, vreinterpret_u32_u8(dval), 1));
-+
-+                dst4 = dst;
-+                mask += 4;
-+                dst += 4;
-+            }
-+            if (w&2)
-+            {
-+                mval = vreinterpret_u8_u16(vld1_lane_u16((void *)mask, vreinterpret_u16_u8(mval), 1));
-+                dval = vreinterpret_u8_u16(vld1_lane_u16((void *)dst, vreinterpret_u16_u8(dval), 1));
-+                dst2 = dst;
-+                mask += 2;
-+                dst += 2;
-+            }
-+            if (w&1)
-+            {
-+                mval = vld1_lane_u8((void *)mask, mval, 1);
-+                dval = vld1_lane_u8((void *)dst, dval, 1);
-+            }
-+
-+            res = vqadd_u8(neon2mul(mval,sa),dval);
-+
-+            if (w&1)
-+                vst1_lane_u8((void *)dst, res, 1);
-+            if (w&2)
-+                vst1_lane_u16((void *)dst2, vreinterpret_u16_u8(res), 1);
-+            if (w&4)
-+                vst1_lane_u32((void *)dst4, vreinterpret_u32_u8(res), 1);
-+        }
-+    }
-+}
-+
-diff --git a/pixman/pixman-arm-neon.h b/pixman/pixman-arm-neon.h
-new file mode 100644
-index 0000000..bab4dee
---- /dev/null
-+++ b/pixman/pixman-arm-neon.h
-@@ -0,0 +1,137 @@
-+/*
-+ * Copyright © 2009 Mozilla Corporation
-+ *
-+ * Permission to use, copy, modify, distribute, and sell this software and its
-+ * documentation for any purpose is hereby granted without fee, provided that
-+ * the above copyright notice appear in all copies and that both that
-+ * copyright notice and this permission notice appear in supporting
-+ * documentation, and that the name of Mozilla Corporation not be used in
-+ * advertising or publicity pertaining to distribution of the software without
-+ * specific, written prior permission.  Mozilla Corporation makes no
-+ * representations about the suitability of this software for any purpose.  It
-+ * is provided "as is" without express or implied warranty.
-+ *
-+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
-+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
-+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-+ * SOFTWARE.
-+ *
-+ * Author:  Ian Rickards (ian.rickards at arm.com)
-+ *
-+ */
-+
-+#include "pixman-private.h"
-+
-+#ifdef USE_ARM_NEON
-+
-+static inline pixman_bool_t pixman_have_arm_neon(void) { return TRUE; }
-+
-+#else
-+#define pixman_have_arm_neon() FALSE
-+#endif
-+
-+#ifdef USE_ARM_NEON
-+
-+void
-+fbCompositeSrcAdd_8000x8000neon (pixman_op_t op,
-+                        pixman_image_t * pSrc,
-+                        pixman_image_t * pMask,
-+                        pixman_image_t * pDst,
-+                        int16_t      xSrc,
-+                        int16_t      ySrc,
-+                        int16_t      xMask,
-+                        int16_t      yMask,
-+                        int16_t      xDst,
-+                        int16_t      yDst,
-+                        uint16_t     width,
-+                        uint16_t     height);
-+
-+void
-+fbCompositeSrc_8888x8888neon (pixman_op_t op,
-+			pixman_image_t * pSrc,
-+			pixman_image_t * pMask,
-+			pixman_image_t * pDst,
-+			int16_t      xSrc,
-+			int16_t      ySrc,
-+			int16_t      xMask,
-+			int16_t      yMask,
-+			int16_t      xDst,
-+			int16_t      yDst,
-+			uint16_t     width,
-+			uint16_t     height);
-+
-+void
-+fbCompositeSrc_8888x8x8888neon (pixman_op_t op,
-+			pixman_image_t * pSrc,
-+			pixman_image_t * pMask,
-+			pixman_image_t * pDst,
-+			int16_t      xSrc,
-+			int16_t      ySrc,
-+			int16_t      xMask,
-+			int16_t      yMask,
-+			int16_t      xDst,
-+			int16_t      yDst,
-+			uint16_t     width,
-+			uint16_t     height);
-+
-+void
-+fbCompositeSolidMask_nx8x0565neon (pixman_op_t op,
-+                        pixman_image_t * pSrc,
-+                        pixman_image_t * pMask,
-+                        pixman_image_t * pDst,
-+                        int16_t      xSrc,
-+                        int16_t      ySrc,
-+                        int16_t      xMask,
-+                        int16_t      yMask,
-+                        int16_t      xDst,
-+                        int16_t      yDst,
-+                        uint16_t     width,
-+                        uint16_t     height);
-+
-+void
-+fbCompositeSolidMask_nx8x8888neon (pixman_op_t op,
-+			pixman_image_t * pSrc,
-+			pixman_image_t * pMask,
-+			pixman_image_t * pDst,
-+			int16_t      xSrc,
-+			int16_t      ySrc,
-+			int16_t      xMask,
-+			int16_t      yMask,
-+			int16_t      xDst,
-+			int16_t      yDst,
-+		 	uint16_t     width,
-+			uint16_t     height);
-+
-+void
-+fbCompositeSrc_x888x0565neon (pixman_op_t op,
-+                        pixman_image_t * pSrc,
-+                        pixman_image_t * pMask,
-+                        pixman_image_t * pDst,
-+                        int16_t      xSrc,
-+                        int16_t      ySrc,
-+                        int16_t      xMask,
-+                        int16_t      yMask,
-+                        int16_t      xDst,
-+                        int16_t      yDst,
-+                        uint16_t     width,
-+                        uint16_t     height);
-+
-+void
-+fbCompositeSrcAdd_8888x8x8neon (pixman_op_t op,
-+                        pixman_image_t * pSrc,
-+                        pixman_image_t * pMask,
-+                        pixman_image_t * pDst,
-+                        int16_t      xSrc,
-+                        int16_t      ySrc,
-+                        int16_t      xMask,
-+                        int16_t      yMask,
-+                        int16_t      xDst,
-+                        int16_t      yDst,
-+                        uint16_t     width,
-+                        uint16_t     height);
-+
-+#endif /* USE_ARM_NEON */
-diff --git a/pixman/pixman-pict.c b/pixman/pixman-pict.c
-index 1388517..b13947a 100644
---- a/pixman/pixman-pict.c
-+++ b/pixman/pixman-pict.c
-@@ -34,6 +34,7 @@
- #include "pixman-mmx.h"
- #include "pixman-vmx.h"
- #include "pixman-sse2.h"
-+#include "pixman-arm-neon.h"
- #include "pixman-arm-simd.h"
- #include "pixman-combine32.h"
- 
-@@ -1518,6 +1519,31 @@ static const FastPathInfo vmx_fast_paths[] =
- };
- #endif
- 
-+#ifdef USE_ARM_NEON
-+static const FastPathInfo arm_neon_fast_paths[] =
-+{
-+    { PIXMAN_OP_ADD,  PIXMAN_solid,    PIXMAN_a8,       PIXMAN_a8,       fbCompositeSrcAdd_8888x8x8neon,        0 },
-+    { PIXMAN_OP_ADD,  PIXMAN_a8,       PIXMAN_null,     PIXMAN_a8,       fbCompositeSrcAdd_8000x8000neon,       0 },
-+    { PIXMAN_OP_SRC,  PIXMAN_a8r8g8b8, PIXMAN_null,     PIXMAN_r5g6b5,   fbCompositeSrc_x888x0565neon,          0 },
-+    { PIXMAN_OP_SRC,  PIXMAN_x8r8g8b8, PIXMAN_null,     PIXMAN_r5g6b5,   fbCompositeSrc_x888x0565neon,          0 },
-+    { PIXMAN_OP_SRC,  PIXMAN_a8b8g8r8, PIXMAN_null,     PIXMAN_b5g6r5,   fbCompositeSrc_x888x0565neon,          0 },
-+    { PIXMAN_OP_SRC,  PIXMAN_x8b8g8r8, PIXMAN_null,     PIXMAN_b5g6r5,   fbCompositeSrc_x888x0565neon,          0 },
-+    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null,     PIXMAN_a8r8g8b8, fbCompositeSrc_8888x8888neon,          0 },
-+    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null,     PIXMAN_x8r8g8b8, fbCompositeSrc_8888x8888neon,          0 },
-+    { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null,     PIXMAN_a8b8g8r8, fbCompositeSrc_8888x8888neon,          0 },
-+    { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null,     PIXMAN_x8b8g8r8, fbCompositeSrc_8888x8888neon,          0 },
-+    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8,       PIXMAN_a8r8g8b8, fbCompositeSrc_8888x8x8888neon,        NEED_SOLID_MASK },
-+    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8,       PIXMAN_x8r8g8b8, fbCompositeSrc_8888x8x8888neon,        NEED_SOLID_MASK },
-+    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_r5g6b5,   fbCompositeSolidMask_nx8x0565neon,     0 },
-+    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_b5g6r5,   fbCompositeSolidMask_nx8x0565neon,     0 },
-+    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_a8r8g8b8, fbCompositeSolidMask_nx8x8888neon,     0 },
-+    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_x8r8g8b8, fbCompositeSolidMask_nx8x8888neon,     0 },
-+    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_a8b8g8r8, fbCompositeSolidMask_nx8x8888neon,     0 },
-+    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_x8b8g8r8, fbCompositeSolidMask_nx8x8888neon,     0 },
-+    { PIXMAN_OP_NONE },
-+};
-+#endif
-+
- #ifdef USE_ARM_SIMD
- static const FastPathInfo arm_simd_fast_paths[] =
- {
-@@ -1893,6 +1919,11 @@ pixman_image_composite (pixman_op_t      op,
- 	    info = get_fast_path (vmx_fast_paths, op, pSrc, pMask, pDst, pixbuf);
- #endif
- 
-+#ifdef USE_ARM_NEON
-+        if (!info && pixman_have_arm_neon())
-+            info = get_fast_path (arm_neon_fast_paths, op, pSrc, pMask, pDst, pixbuf);
-+#endif
-+
- #ifdef USE_ARM_SIMD
- 	if (!info && pixman_have_arm_simd())
- 	    info = get_fast_path (arm_simd_fast_paths, op, pSrc, pMask, pDst, pixbuf);
diff --git a/recipes/xorg-lib/pixman/pixman-28986.patch b/recipes/xorg-lib/pixman/pixman-28986.patch
deleted file mode 100644
index f5ba4c3..0000000
--- a/recipes/xorg-lib/pixman/pixman-28986.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 7b7860d61fb1526acdf010dd8fd644bbf1396b9e Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Fri, 28 Aug 2009 22:34:21 +0300
-Subject: [PATCH] ARM: workaround for gcc bug in vshll_n_u8 intrinsic
-
-Some versions of gcc (cs2009q1, 4.4.1) incorrectly reject
-shift operand having value >= 8, claiming that it is out of
-range. So inline assembly is used as a workaround.
----
- pixman/pixman-arm-neon.c |    6 ++++++
- 1 files changed, 6 insertions(+), 0 deletions(-)
-
-diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
-index 4125d1b..3e7f566 100644
---- a/pixman/pixman-arm-neon.c
-+++ b/pixman/pixman-arm-neon.c
-@@ -64,6 +64,12 @@ unpack0565 (uint16x8_t rgb)
-     return res;
- }
- 
-+#ifdef USE_GCC_INLINE_ASM
-+/* Some versions of gcc have problems with vshll_n_u8 intrinsic (Bug 23576) */
-+#define vshll_n_u8(a, n) ({ uint16x8_t r; \
-+    asm ("vshll.u8 %q0, %P1, %2\n" : "=w" (r) : "w" (a), "i" (n)); r; })
-+#endif
-+
- static force_inline uint16x8_t
- pack0565 (uint8x8x4_t s)
- {
--- 
-1.5.4.3
-
diff --git a/recipes/xorg-lib/pixman/pixman-arm.patch b/recipes/xorg-lib/pixman/pixman-arm.patch
deleted file mode 100644
index 91dda03..0000000
--- a/recipes/xorg-lib/pixman/pixman-arm.patch
+++ /dev/null
@@ -1,632 +0,0 @@
-From: Jeff Muizelaar <jmuizelaar at mozilla.com>
-Date: Wed, 17 Sep 2008 19:53:20 +0000 (-0400)
-Subject: Add support for ARMv6 SIMD fastpaths.
-X-Git-Url: http://gitweb.freedesktop.org/?p=pixman.git;a=commitdiff;h=d0b181f347ef4720d130beee3f03196afbd28aba
-
-Add support for ARMv6 SIMD fastpaths.
----
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -277,6 +277,44 @@ AC_SUBST(VMX_CFLAGS)
- 
- AM_CONDITIONAL(USE_VMX, test $have_vmx_intrinsics = yes)
- 
-+dnl Check for ARM
-+
-+have_armv6_simd=no
-+AC_MSG_CHECKING(whether to use ARM assembler)
-+xserver_save_CFLAGS=$CFLAGS
-+CFLAGS="$CFLAGS $ARM_CFLAGS"
-+AC_COMPILE_IFELSE([
-+int main () {
-+    asm("uqadd8 r1, r1, r2");
-+    return 0;
-+}], have_armv6_simd=yes)
-+CFLAGS=$xserver_save_CFLAGS
-+
-+AC_ARG_ENABLE(arm,
-+   [AC_HELP_STRING([--disable-arm],
-+                   [disable ARM fast paths])],
-+   [enable_arm=$enableval], [enable_arm=auto])
-+
-+if test $enable_arm = no ; then
-+   have_armv6_simd=disabled
-+fi
-+
-+if test $have_armv6_simd = yes ; then
-+   AC_DEFINE(USE_ARM, 1, [use ARM compiler intrinsics])
-+else
-+   ARM_CFLAGS=
-+fi
-+
-+AC_MSG_RESULT($have_armv6_simd)
-+if test $enable_arm = yes && test $have_armv6_simd = no ; then
-+   AC_MSG_ERROR([ARM intrinsics not detected])
-+fi
-+
-+AC_SUBST(ARM_CFLAGS)
-+
-+AM_CONDITIONAL(USE_ARM, test $have_armv6_simd = yes)
-+
-+
- AC_ARG_ENABLE(gtk,
-    [AC_HELP_STRING([--enable-gtk],
-                    [enable tests using GTK+ [default=auto]])],
---- a/pixman/Makefile.am
-+++ b/pixman/Makefile.am
-@@ -79,3 +79,15 @@ libpixman_sse2_la_LIBADD = $(DEP_LIBS)
- libpixman_1_la_LIBADD += libpixman-sse2.la
- endif
- 
-+# arm code
-+if USE_ARM
-+noinst_LTLIBRARIES += libpixman-arm.la
-+libpixman_arm_la_SOURCES = \
-+	pixman-arm.c \
-+	pixman-arm.h
-+libpixman_arm_la_CFLAGS = $(DEP_CFLAGS) $(ARM_CFLAGS)
-+libpixman_arm_la_LIBADD = $(DEP_LIBS)
-+libpixman_1_la_LIBADD += libpixman-arm.la
-+endif
-+
-+
---- /dev/null
-+++ b/pixman/pixman-arm.c
-@@ -0,0 +1,409 @@
-+/*
-+ * Copyright © 2008 Mozilla Corporation
-+ *
-+ * Permission to use, copy, modify, distribute, and sell this software and its
-+ * documentation for any purpose is hereby granted without fee, provided that
-+ * the above copyright notice appear in all copies and that both that
-+ * copyright notice and this permission notice appear in supporting
-+ * documentation, and that the name of Mozilla Corporation not be used in
-+ * advertising or publicity pertaining to distribution of the software without
-+ * specific, written prior permission.  Mozilla Corporation makes no
-+ * representations about the suitability of this software for any purpose.  It
-+ * is provided "as is" without express or implied warranty.
-+ *
-+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
-+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
-+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-+ * SOFTWARE.
-+ *
-+ * Author:  Jeff Muizelaar (jeff at infidigm.net)
-+ *
-+ */
-+#ifdef HAVE_CONFIG_H
-+#include <config.h>
-+#endif
-+
-+#include "pixman-arm.h"
-+
-+void
-+fbCompositeSrcAdd_8000x8000arm (pixman_op_t op,
-+				pixman_image_t * pSrc,
-+				pixman_image_t * pMask,
-+				pixman_image_t * pDst,
-+				int16_t      xSrc,
-+				int16_t      ySrc,
-+				int16_t      xMask,
-+				int16_t      yMask,
-+				int16_t      xDst,
-+				int16_t      yDst,
-+				uint16_t     width,
-+				uint16_t     height)
-+{
-+    uint8_t	*dstLine, *dst;
-+    uint8_t	*srcLine, *src;
-+    int	dstStride, srcStride;
-+    uint16_t	w;
-+    uint8_t	s, d;
-+
-+    fbComposeGetStart (pSrc, xSrc, ySrc, uint8_t, srcStride, srcLine, 1);
-+    fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 1);
-+
-+    while (height--)
-+    {
-+	dst = dstLine;
-+	dstLine += dstStride;
-+	src = srcLine;
-+	srcLine += srcStride;
-+	w = width;
-+
-+	while (w && (unsigned long)dst & 3)
-+	{
-+	    s = *src;
-+	    d = *dst;
-+	    asm("uqadd8 %0, %1, %2" : "+r"(d) : "r"(s));
-+	    *dst = d;
-+
-+	    dst++;
-+	    src++;
-+	    w--;
-+	}
-+
-+	while (w >= 4)
-+	{
-+	    asm("uqadd8 %0, %1, %2" : "=r"(*(uint32_t*)dst) : "r"(*(uint32_t*)src), "r"(*(uint32_t*)dst));
-+	    dst += 4;
-+	    src += 4;
-+	    w -= 4;
-+	}
-+
-+	while (w)
-+	{
-+	    s = *src;
-+	    d = *dst;
-+	    asm("uqadd8 %0, %1, %2" : "+r"(d) : "r"(s));
-+	    *dst = d;
-+
-+	    dst++;
-+	    src++;
-+	    w--;
-+	}
-+    }
-+
-+}
-+
-+void
-+fbCompositeSrc_8888x8888arm (pixman_op_t op,
-+			 pixman_image_t * pSrc,
-+			 pixman_image_t * pMask,
-+			 pixman_image_t * pDst,
-+			 int16_t      xSrc,
-+			 int16_t      ySrc,
-+			 int16_t      xMask,
-+			 int16_t      yMask,
-+			 int16_t      xDst,
-+			 int16_t      yDst,
-+			 uint16_t     width,
-+			 uint16_t     height)
-+{
-+    uint32_t	*dstLine, *dst;
-+    uint32_t	*srcLine, *src;
-+    int	dstStride, srcStride;
-+    uint16_t	w;
-+    uint32_t component_half = 0x800080;
-+    uint32_t upper_component_mask = 0xff00ff00;
-+    uint32_t alpha_mask = 0xff;
-+
-+    fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
-+    fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
-+
-+    while (height--)
-+    {
-+	dst = dstLine;
-+	dstLine += dstStride;
-+	src = srcLine;
-+	srcLine += srcStride;
-+	w = width;
-+
-+//#define inner_branch
-+	asm volatile (
-+			"cmp %[w], #0\n\t"
-+			"beq 2f\n\t"
-+			"1:\n\t"
-+			/* load dest */
-+			"ldr r5, [%[src]], #4\n\t"
-+#ifdef inner_branch
-+			/* We can avoid doing the multiplication in two cases: 0x0 or 0xff.
-+			 * The 0x0 case also allows us to avoid doing an unecessary data
-+			 * write which is more valuable so we only check for that */
-+			"cmp r5, #0x1000000\n\t"
-+			"blt 3f\n\t"
-+
-+			/* = 255 - alpha */
-+			"sub r8, %[alpha_mask], r5, lsr #24\n\t"
-+
-+			"ldr r4, [%[dest]] \n\t"
-+
-+#else
-+			"ldr r4, [%[dest]] \n\t"
-+
-+			/* = 255 - alpha */
-+			"sub r8, %[alpha_mask], r5, lsr #24\n\t"
-+#endif
-+			"uxtb16 r6, r4\n\t"
-+			"uxtb16 r7, r4, ror #8\n\t"
-+
-+			/* multiply by 257 and divide by 65536 */
-+			"mla r6, r6, r8, %[component_half]\n\t"
-+			"mla r7, r7, r8, %[component_half]\n\t"
-+
-+			"uxtab16 r6, r6, r6, ror #8\n\t"
-+			"uxtab16 r7, r7, r7, ror #8\n\t"
-+
-+			/* recombine the 0xff00ff00 bytes of r6 and r7 */
-+			"and r7, %[upper_component_mask]\n\t"
-+			"uxtab16 r6, r7, r6, ror #8\n\t"
-+
-+			"uqadd8 r5, r6, r5\n\t"
-+
-+#ifdef inner_branch
-+			"3:\n\t"
-+
-+#endif
-+			"str r5, [%[dest]], #4\n\t"
-+			/* increment counter and jmp to top */
-+			"subs	%[w], %[w], #1\n\t"
-+			"bne	1b\n\t"
-+			"2:\n\t"
-+			: [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src)
-+			: [component_half] "r" (component_half), [upper_component_mask] "r" (upper_component_mask),
-+			  [alpha_mask] "r" (alpha_mask)
-+			: "r4", "r5", "r6", "r7", "r8", "cc", "memory"
-+			);
-+    }
-+}
-+
-+void
-+fbCompositeSrc_8888x8x8888arm (pixman_op_t op,
-+			       pixman_image_t * pSrc,
-+			       pixman_image_t * pMask,
-+			       pixman_image_t * pDst,
-+			       int16_t	xSrc,
-+			       int16_t	ySrc,
-+			       int16_t      xMask,
-+			       int16_t      yMask,
-+			       int16_t      xDst,
-+			       int16_t      yDst,
-+			       uint16_t     width,
-+			       uint16_t     height)
-+{
-+    uint32_t	*dstLine, *dst;
-+    uint32_t	*srcLine, *src;
-+    uint32_t	mask;
-+    int	dstStride, srcStride;
-+    uint16_t	w;
-+    uint32_t component_half = 0x800080;
-+    uint32_t alpha_mask = 0xff;
-+
-+    fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
-+    fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
-+
-+    fbComposeGetSolid (pMask, mask, pDst->bits.format);
-+    mask = (mask) >> 24;
-+
-+    while (height--)
-+    {
-+	dst = dstLine;
-+	dstLine += dstStride;
-+	src = srcLine;
-+	srcLine += srcStride;
-+	w = width;
-+
-+//#define inner_branch
-+	asm volatile (
-+			"cmp %[w], #0\n\t"
-+			"beq 2f\n\t"
-+			"1:\n\t"
-+			/* load dest */
-+			"ldr r5, [%[src]], #4\n\t"
-+#ifdef inner_branch
-+			/* We can avoid doing the multiplication in two cases: 0x0 or 0xff.
-+			 * The 0x0 case also allows us to avoid doing an unecessary data
-+			 * write which is more valuable so we only check for that */
-+			"cmp r5, #0x1000000\n\t"
-+			"blt 3f\n\t"
-+
-+#endif
-+			"ldr r4, [%[dest]] \n\t"
-+
-+			"uxtb16 r6, r5\n\t"
-+			"uxtb16 r7, r5, ror #8\n\t"
-+
-+			/* multiply by alpha (r8) then by 257 and divide by 65536 */
-+			"mla r6, r6, %[mask_alpha], %[component_half]\n\t"
-+			"mla r7, r7, %[mask_alpha], %[component_half]\n\t"
-+
-+			"uxtab16 r6, r6, r6, ror #8\n\t"
-+			"uxtab16 r7, r7, r7, ror #8\n\t"
-+
-+			"uxtb16 r6, r6, ror #8\n\t"
-+			"uxtb16 r7, r7, ror #8\n\t"
-+
-+			/* recombine */
-+			"orr r5, r6, r7, lsl #8\n\t"
-+
-+			"uxtb16 r6, r4\n\t"
-+			"uxtb16 r7, r4, ror #8\n\t"
-+
-+			/* 255 - alpha */
-+			"sub r8, %[alpha_mask], r5, lsr #24\n\t"
-+
-+			/* multiply by alpha (r8) then by 257 and divide by 65536 */
-+			"mla r6, r6, r8, %[component_half]\n\t"
-+			"mla r7, r7, r8, %[component_half]\n\t"
-+
-+			"uxtab16 r6, r6, r6, ror #8\n\t"
-+			"uxtab16 r7, r7, r7, ror #8\n\t"
-+
-+			"uxtb16 r6, r6, ror #8\n\t"
-+			"uxtb16 r7, r7, ror #8\n\t"
-+
-+			/* recombine */
-+			"orr r6, r6, r7, lsl #8\n\t"
-+
-+			"uqadd8 r5, r6, r5\n\t"
-+
-+#ifdef inner_branch
-+			"3:\n\t"
-+
-+#endif
-+			"str r5, [%[dest]], #4\n\t"
-+			/* increment counter and jmp to top */
-+			"subs	%[w], %[w], #1\n\t"
-+			"bne	1b\n\t"
-+			"2:\n\t"
-+			: [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src)
-+			: [component_half] "r" (component_half), [mask_alpha] "r" (mask),
-+			  [alpha_mask] "r" (alpha_mask)
-+			: "r4", "r5", "r6", "r7", "r8", "r9", "cc", "memory"
-+			);
-+    }
-+}
-+
-+void
-+fbCompositeSolidMask_nx8x8888arm (pixman_op_t      op,
-+			       pixman_image_t * pSrc,
-+			       pixman_image_t * pMask,
-+			       pixman_image_t * pDst,
-+			       int16_t      xSrc,
-+			       int16_t      ySrc,
-+			       int16_t      xMask,
-+			       int16_t      yMask,
-+			       int16_t      xDst,
-+			       int16_t      yDst,
-+			       uint16_t     width,
-+			       uint16_t     height)
-+{
-+    uint32_t	 src, srca;
-+    uint32_t	*dstLine, *dst;
-+    uint8_t	*maskLine, *mask;
-+    int		 dstStride, maskStride;
-+    uint16_t	 w;
-+
-+    fbComposeGetSolid(pSrc, src, pDst->bits.format);
-+
-+    srca = src >> 24;
-+    if (src == 0)
-+	return;
-+
-+    uint32_t component_mask = 0xff00ff;
-+    uint32_t component_half = 0x800080;
-+
-+    uint32_t src_hi = (src >> 8) & component_mask;
-+    uint32_t src_lo = src & component_mask;
-+
-+    fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
-+    fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1);
-+
-+    while (height--)
-+    {
-+	dst = dstLine;
-+	dstLine += dstStride;
-+	mask = maskLine;
-+	maskLine += maskStride;
-+	w = width;
-+
-+//#define inner_branch
-+	asm volatile (
-+			"cmp %[w], #0\n\t"
-+			"beq 2f\n\t"
-+			"1:\n\t"
-+			/* load mask */
-+			"ldrb r5, [%[mask]], #1\n\t"
-+#ifdef inner_branch
-+			/* We can avoid doing the multiplication in two cases: 0x0 or 0xff.
-+			 * The 0x0 case also allows us to avoid doing an unecessary data
-+			 * write which is more valuable so we only check for that */
-+			/* 0x1000000 is the least value that contains alpha all values
-+			 * less than it have a 0 alpha value */
-+			"cmp r5, #0x0\n\t"
-+			"beq 3f\n\t"
-+
-+#endif
-+			"ldr r4, [%[dest]] \n\t"
-+
-+			/* multiply by alpha (r8) then by 257 and divide by 65536 */
-+			"mla r6, %[src_lo], r5, %[component_half]\n\t"
-+			"mla r7, %[src_hi], r5, %[component_half]\n\t"
-+
-+			"uxtab16 r6, r6, r6, ror #8\n\t"
-+			"uxtab16 r7, r7, r7, ror #8\n\t"
-+
-+			"uxtb16 r6, r6, ror #8\n\t"
-+			"uxtb16 r7, r7, ror #8\n\t"
-+
-+			/* recombine */
-+			"orr r5, r6, r7, lsl #8\n\t"
-+
-+			"uxtb16 r6, r4\n\t"
-+			"uxtb16 r7, r4, ror #8\n\t"
-+
-+			/* we could simplify this to use 'sub' if we were
-+			 * willing to give up a register for alpha_mask */
-+			"mvn r8, r5\n\t"
-+			"mov r8, r8, lsr #24\n\t"
-+
-+			/* multiply by alpha (r8) then by 257 and divide by 65536 */
-+			"mla r6, r6, r8, %[component_half]\n\t"
-+			"mla r7, r7, r8, %[component_half]\n\t"
-+
-+			"uxtab16 r6, r6, r6, ror #8\n\t"
-+			"uxtab16 r7, r7, r7, ror #8\n\t"
-+
-+			"uxtb16 r6, r6, ror #8\n\t"
-+			"uxtb16 r7, r7, ror #8\n\t"
-+
-+			/* recombine */
-+			"orr r6, r6, r7, lsl #8\n\t"
-+
-+			"uqadd8 r5, r6, r5\n\t"
-+
-+#ifdef inner_branch
-+			"3:\n\t"
-+
-+#endif
-+			"str r5, [%[dest]], #4\n\t"
-+			/* increment counter and jmp to top */
-+			"subs	%[w], %[w], #1\n\t"
-+			"bne	1b\n\t"
-+			"2:\n\t"
-+			: [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src), [mask] "+r" (mask)
-+			: [component_half] "r" (component_half),
-+			  [src_hi] "r" (src_hi), [src_lo] "r" (src_lo)
-+			: "r4", "r5", "r6", "r7", "r8", "cc", "memory"
-+			);
-+    }
-+}
---- /dev/null
-+++ b/pixman/pixman-arm.h
-@@ -0,0 +1,94 @@
-+/*
-+ * Copyright © 2008 Mozilla Corporation
-+ *
-+ * Permission to use, copy, modify, distribute, and sell this software and its
-+ * documentation for any purpose is hereby granted without fee, provided that
-+ * the above copyright notice appear in all copies and that both that
-+ * copyright notice and this permission notice appear in supporting
-+ * documentation, and that the name of Mozilla Corporation not be used in
-+ * advertising or publicity pertaining to distribution of the software without
-+ * specific, written prior permission.  Mozilla Corporation makes no
-+ * representations about the suitability of this software for any purpose.  It
-+ * is provided "as is" without express or implied warranty.
-+ *
-+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
-+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
-+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-+ * SOFTWARE.
-+ *
-+ * Author:  Jeff Muizelaar (jeff at infidigm.net)
-+ *
-+ */
-+
-+#include "pixman-private.h"
-+
-+#ifdef USE_ARM
-+
-+static inline pixman_bool_t pixman_have_arm(void) { return TRUE; }
-+
-+#else
-+#define pixman_have_arm() FALSE
-+#endif
-+
-+#ifdef USE_ARM
-+
-+void
-+fbCompositeSrcAdd_8000x8000arm (pixman_op_t op,
-+				pixman_image_t * pSrc,
-+				pixman_image_t * pMask,
-+				pixman_image_t * pDst,
-+				int16_t      xSrc,
-+				int16_t      ySrc,
-+				int16_t      xMask,
-+				int16_t      yMask,
-+				int16_t      xDst,
-+				int16_t      yDst,
-+				uint16_t     width,
-+				uint16_t     height);
-+void
-+fbCompositeSrc_8888x8888arm (pixman_op_t op,
-+			 pixman_image_t * pSrc,
-+			 pixman_image_t * pMask,
-+			 pixman_image_t * pDst,
-+			 int16_t      xSrc,
-+			 int16_t      ySrc,
-+			 int16_t      xMask,
-+			 int16_t      yMask,
-+			 int16_t      xDst,
-+			 int16_t      yDst,
-+			 uint16_t     width,
-+			 uint16_t     height);
-+
-+void
-+fbCompositeSrc_8888x8x8888arm (pixman_op_t op,
-+			 pixman_image_t * pSrc,
-+			 pixman_image_t * pMask,
-+			 pixman_image_t * pDst,
-+			 int16_t      xSrc,
-+			 int16_t      ySrc,
-+			 int16_t      xMask,
-+			 int16_t      yMask,
-+			 int16_t      xDst,
-+			 int16_t      yDst,
-+			 uint16_t     width,
-+			 uint16_t     height);
-+void
-+fbCompositeSolidMask_nx8x8888arm (pixman_op_t op,
-+			 pixman_image_t * pSrc,
-+			 pixman_image_t * pMask,
-+			 pixman_image_t * pDst,
-+			 int16_t      xSrc,
-+			 int16_t      ySrc,
-+			 int16_t      xMask,
-+			 int16_t      yMask,
-+			 int16_t      xDst,
-+			 int16_t      yDst,
-+			 uint16_t     width,
-+			 uint16_t     height);
-+
-+
-+#endif /* USE_ARM */
---- a/pixman/pixman-pict.c
-+++ b/pixman/pixman-pict.c
-@@ -34,6 +34,7 @@
- #include "pixman-mmx.h"
- #include "pixman-vmx.h"
- #include "pixman-sse2.h"
-+#include "pixman-arm.h"
- #include "pixman-combine32.h"
- 
- #ifdef __GNUC__
-@@ -1479,6 +1480,26 @@ static const FastPathInfo vmx_fast_paths
- };
- #endif
- 
-+#ifdef USE_ARM
-+static const FastPathInfo arm_fast_paths[] =
-+{
-+    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null,     PIXMAN_a8r8g8b8, fbCompositeSrc_8888x8888arm,      0 },
-+    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null,	PIXMAN_x8r8g8b8, fbCompositeSrc_8888x8888arm,	   0 },
-+    { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null,	PIXMAN_a8b8g8r8, fbCompositeSrc_8888x8888arm,	   0 },
-+    { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null,	PIXMAN_x8b8g8r8, fbCompositeSrc_8888x8888arm,	   0 },
-+    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8,       PIXMAN_a8r8g8b8, fbCompositeSrc_8888x8x8888arm,    NEED_SOLID_MASK },
-+    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8,       PIXMAN_x8r8g8b8, fbCompositeSrc_8888x8x8888arm,	   NEED_SOLID_MASK },
-+
-+    { PIXMAN_OP_ADD, PIXMAN_a8,        PIXMAN_null,     PIXMAN_a8,       fbCompositeSrcAdd_8000x8000arm,   0 },
-+
-+    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_a8r8g8b8, fbCompositeSolidMask_nx8x8888arm,     0 },
-+    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_x8r8g8b8, fbCompositeSolidMask_nx8x8888arm,     0 },
-+    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_a8b8g8r8, fbCompositeSolidMask_nx8x8888arm,     0 },
-+    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_a8,       PIXMAN_x8b8g8r8, fbCompositeSolidMask_nx8x8888arm,     0 },
-+
-+    { PIXMAN_OP_NONE },
-+};
-+#endif
- 
- static const FastPathInfo c_fast_paths[] =
- {
-@@ -1829,6 +1850,12 @@ pixman_image_composite (pixman_op_t     
- 	if (!info && pixman_have_vmx())
- 	    info = get_fast_path (vmx_fast_paths, op, pSrc, pMask, pDst, pixbuf);
- #endif
-+
-+#ifdef USE_ARM
-+	if (!info && pixman_have_arm())
-+	    info = get_fast_path (arm_fast_paths, op, pSrc, pMask, pDst, pixbuf);
-+#endif
-+
-         if (!info)
- 	    info = get_fast_path (c_fast_paths, op, pSrc, pMask, pDst, pixbuf);
- 
diff --git a/recipes/xorg-lib/pixman/pixman-x888-565.patch b/recipes/xorg-lib/pixman/pixman-x888-565.patch
deleted file mode 100644
index a3fa331..0000000
--- a/recipes/xorg-lib/pixman/pixman-x888-565.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From: Vladimir Vukicevic <vladimir at slide.(none)>
-Date: Wed, 17 Sep 2008 20:01:31 +0000 (-0400)
-Subject: Add SRC x888x0565 C fast path
-X-Git-Url: http://gitweb.freedesktop.org/?p=pixman.git;a=commitdiff;h=7180230d4d87c55dfef1e17a0cc3b125d45aa3a0
-
-Add SRC x888x0565 C fast path
----
-
---- a/pixman/pixman-pict.c
-+++ b/pixman/pixman-pict.c
-@@ -759,6 +759,46 @@ fbCompositeSrc_8888x0565 (pixman_op_t op
-     }
- }
- 
-+
-+void
-+fbCompositeSrc_x888x0565 (pixman_op_t op,
-+                          pixman_image_t * pSrc,
-+                          pixman_image_t * pMask,
-+                          pixman_image_t * pDst,
-+                          int16_t      xSrc,
-+                          int16_t      ySrc,
-+                          int16_t      xMask,
-+                          int16_t      yMask,
-+                          int16_t      xDst,
-+                          int16_t      yDst,
-+                          uint16_t     width,
-+                          uint16_t     height)
-+{
-+    uint16_t	*dstLine, *dst;
-+    uint32_t	*srcLine, *src, s;
-+    int	dstStride, srcStride;
-+    uint16_t	w;
-+
-+    fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
-+    fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
-+
-+    while (height--)
-+    {
-+	dst = dstLine;
-+	dstLine += dstStride;
-+	src = srcLine;
-+	srcLine += srcStride;
-+	w = width;
-+
-+	while (w--)
-+	{
-+	    s = READ(pSrc, src++);
-+	    WRITE(pDst, dst, cvt8888to0565(s));
-+	    dst++;
-+	}
-+    }
-+}
-+
- void
- fbCompositeSrcAdd_8000x8000 (pixman_op_t	op,
- 			     pixman_image_t * pSrc,
-@@ -1568,6 +1608,10 @@ static const FastPathInfo c_fast_paths[]
-     { PIXMAN_OP_SRC, PIXMAN_r5g6b5,    PIXMAN_null,     PIXMAN_r5g6b5,   fbCompositeSrcSrc_nxn, 0 },
-     { PIXMAN_OP_SRC, PIXMAN_b5g6r5,    PIXMAN_null,     PIXMAN_b5g6r5,   fbCompositeSrcSrc_nxn, 0 },
- #endif
-+    { PIXMAN_OP_SRC, PIXMAN_a8r8g8b8,  PIXMAN_null,     PIXMAN_r5g6b5,   fbCompositeSrc_x888x0565, 0 },
-+    { PIXMAN_OP_SRC, PIXMAN_x8r8g8b8,  PIXMAN_null,     PIXMAN_r5g6b5,   fbCompositeSrc_x888x0565, 0 },
-+    { PIXMAN_OP_SRC, PIXMAN_a8b8g8r8,  PIXMAN_null,     PIXMAN_b5g6r5,   fbCompositeSrc_x888x0565, 0 },
-+    { PIXMAN_OP_SRC, PIXMAN_x8b8g8r8,  PIXMAN_null,     PIXMAN_b5g6r5,   fbCompositeSrc_x888x0565, 0 },
-     { PIXMAN_OP_IN,  PIXMAN_a8,        PIXMAN_null,     PIXMAN_a8,       fbCompositeSrcIn_8x8,   0 },
-     { PIXMAN_OP_IN,  PIXMAN_solid,     PIXMAN_a8,	PIXMAN_a8,	 fbCompositeSolidMaskIn_nx8x8, 0 },
-     { PIXMAN_OP_NONE },
diff --git a/recipes/xorg-lib/pixman/prefetch.patch b/recipes/xorg-lib/pixman/prefetch.patch
deleted file mode 100644
index c2e856e..0000000
--- a/recipes/xorg-lib/pixman/prefetch.patch
+++ /dev/null
@@ -1,298 +0,0 @@
-From d0044bfbd596f22ed1560579ea6537b39f3dc1af Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Thu, 29 Oct 2009 19:06:42 +0000
-Subject: ARM: Don't emit prefetch code if prefetch distance is set to 0
-
-Also it is now possible to disable prefetch globally with
-a configuration macro
----
-diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
-index bca499a..35e6a7e 100644
---- a/pixman/pixman-arm-neon-asm.S
-+++ b/pixman/pixman-arm-neon-asm.S
-@@ -219,33 +219,33 @@
-     vshrn.u16   d7, q2, #3
-     vsli.u16    q2, q2, #5
-         vshll.u8    q14, d16, #8
--                                    add PF_X, PF_X, #8
-+                                    PF add PF_X, PF_X, #8
-         vshll.u8    q8, d19, #8
--                                    tst PF_CTL, #0xF
-+                                    PF tst PF_CTL, #0xF
-     vsri.u8     d6, d6, #5
--                                    addne PF_X, PF_X, #8
-+                                    PF addne PF_X, PF_X, #8
-     vmvn.8      d3, d3
--                                    subne PF_CTL, PF_CTL, #1
-+                                    PF subne PF_CTL, PF_CTL, #1
-     vsri.u8     d7, d7, #6
-     vshrn.u16   d30, q2, #2
-     vmull.u8    q10, d3, d6
--                                    pld [PF_SRC, PF_X, lsl #src_bpp_shift]
-+                                    PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
-     vmull.u8    q11, d3, d7
-     vmull.u8    q12, d3, d30
--                                    pld [PF_DST, PF_X, lsl #dst_bpp_shift]
-+                                    PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
-         vsri.u16    q14, q8, #5
--                                    cmp PF_X, ORIG_W
-+                                    PF cmp PF_X, ORIG_W
-         vshll.u8    q9, d18, #8
-     vrshr.u16   q13, q10, #8
--                                    subge PF_X, PF_X, ORIG_W
-+                                    PF subge PF_X, PF_X, ORIG_W
-     vrshr.u16   q3, q11, #8
-     vrshr.u16   q15, q12, #8
--                                    subges PF_CTL, PF_CTL, #0x10
-+                                    PF subges PF_CTL, PF_CTL, #0x10
-         vsri.u16    q14, q9, #11
--                                    ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
-+                                    PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
-     vraddhn.u16 d20, q10, q13
-     vraddhn.u16 d23, q11, q3
--                                    ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
-+                                    PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
-     vraddhn.u16 d22, q12, q15
-         vst1.16     {d28, d29}, [DST_W, :128]!
- .endm
-@@ -323,20 +323,20 @@ generate_composite_function \
- 
- .macro pixman_composite_src_8888_0565_process_pixblock_tail_head
-         vsri.u16    q14, q8, #5
--                                    add PF_X, PF_X, #8
--                                    tst PF_CTL, #0xF
-+                                    PF add PF_X, PF_X, #8
-+                                    PF tst PF_CTL, #0xF
-     vld4.8      {d0, d1, d2, d3}, [SRC]!
--                                    addne PF_X, PF_X, #8
--                                    subne PF_CTL, PF_CTL, #1
-+                                    PF addne PF_X, PF_X, #8
-+                                    PF subne PF_CTL, PF_CTL, #1
-         vsri.u16    q14, q9, #11
--                                    cmp PF_X, ORIG_W
--                                    pld [PF_SRC, PF_X, lsl #src_bpp_shift]
-+                                    PF cmp PF_X, ORIG_W
-+                                    PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
-     vshll.u8    q8, d1, #8
-         vst1.16     {d28, d29}, [DST_W, :128]!
--                                    subge PF_X, PF_X, ORIG_W
--                                    subges PF_CTL, PF_CTL, #0x10
-+                                    PF subge PF_X, PF_X, ORIG_W
-+                                    PF subges PF_CTL, PF_CTL, #0x10
-     vshll.u8    q14, d2, #8
--                                    ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
-+                                    PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
-     vshll.u8    q9, d0, #8
- .endm
- 
-@@ -363,20 +363,20 @@ generate_composite_function \
- 
- .macro pixman_composite_add_8000_8000_process_pixblock_tail_head
-     vld1.8      {d0, d1, d2, d3}, [SRC]!
--                                    add PF_X, PF_X, #32
--                                    tst PF_CTL, #0xF
-+                                    PF add PF_X, PF_X, #32
-+                                    PF tst PF_CTL, #0xF
-     vld1.8      {d4, d5, d6, d7}, [DST_R, :128]!
--                                    addne PF_X, PF_X, #32
--                                    subne PF_CTL, PF_CTL, #1
-+                                    PF addne PF_X, PF_X, #32
-+                                    PF subne PF_CTL, PF_CTL, #1
-         vst1.8      {d28, d29, d30, d31}, [DST_W, :128]!
--                                    cmp PF_X, ORIG_W
--                                    pld [PF_SRC, PF_X, lsl #src_bpp_shift]
--                                    pld [PF_DST, PF_X, lsl #dst_bpp_shift]
--                                    subge PF_X, PF_X, ORIG_W
--                                    subges PF_CTL, PF_CTL, #0x10
-+                                    PF cmp PF_X, ORIG_W
-+                                    PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
-+                                    PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
-+                                    PF subge PF_X, PF_X, ORIG_W
-+                                    PF subges PF_CTL, PF_CTL, #0x10
-     vqadd.u8    q14, q0, q2
--                                    ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
--                                    ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
-+                                    PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
-+                                    PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
-     vqadd.u8    q15, q1, q3
- .endm
- 
-@@ -418,32 +418,32 @@ generate_composite_function \
- .macro pixman_composite_over_8888_8888_process_pixblock_tail_head
-     vld4.8      {d4, d5, d6, d7}, [DST_R, :128]!
-         vrshr.u16   q14, q8, #8
--                                    add PF_X, PF_X, #8
--                                    tst PF_CTL, #0xF
-+                                    PF add PF_X, PF_X, #8
-+                                    PF tst PF_CTL, #0xF
-         vrshr.u16   q15, q9, #8
-         vrshr.u16   q12, q10, #8
-         vrshr.u16   q13, q11, #8
--                                    addne PF_X, PF_X, #8
--                                    subne PF_CTL, PF_CTL, #1
-+                                    PF addne PF_X, PF_X, #8
-+                                    PF subne PF_CTL, PF_CTL, #1
-         vraddhn.u16 d28, q14, q8
-         vraddhn.u16 d29, q15, q9
--                                    cmp PF_X, ORIG_W
-+                                    PF cmp PF_X, ORIG_W
-         vraddhn.u16 d30, q12, q10
-         vraddhn.u16 d31, q13, q11
-         vqadd.u8    q14, q0, q14
-         vqadd.u8    q15, q1, q15
-     vld4.8      {d0, d1, d2, d3}, [SRC]!
--                                    pld [PF_SRC, PF_X, lsl #src_bpp_shift]
-+                                    PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
-     vmvn.8      d22, d3
--                                    pld [PF_DST, PF_X, lsl #dst_bpp_shift]
-+                                    PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
-         vst4.8      {d28, d29, d30, d31}, [DST_W, :128]!
--                                    subge PF_X, PF_X, ORIG_W
-+                                    PF subge PF_X, PF_X, ORIG_W
-     vmull.u8    q8, d22, d4
--                                    subges PF_CTL, PF_CTL, #0x10
-+                                    PF subges PF_CTL, PF_CTL, #0x10
-     vmull.u8    q9, d22, d5
--                                    ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
-+                                    PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
-     vmull.u8    q10, d22, d6
--                                    ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
-+                                    PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
-     vmull.u8    q11, d22, d7
- .endm
- 
-diff --git a/pixman/pixman-arm-neon-asm.h b/pixman/pixman-arm-neon-asm.h
-index d276ab9..a2941ae 100644
---- a/pixman/pixman-arm-neon-asm.h
-+++ b/pixman/pixman-arm-neon-asm.h
-@@ -58,6 +58,11 @@
- #define RESPECT_STRICT_ALIGNMENT 1
- 
- /*
-+ * If set to nonzero value, prefetch is globally disabled
-+ */
-+#define PREFETCH_GLOBALLY_DISABLED 0 
-+
-+/*
-  * Definitions of supplementary pixld/pixst macros (for partial load/store of
-  * pixel data)
-  */
-@@ -218,37 +223,43 @@
-  * pixels processing like simple copy. Anyway, having prefetch is a must
-  * when working with graphics data.
-  */
-+.macro PF a, x:vararg
-+.if (ADVANCED_PREFETCH_ENABLED != 0) && (PREFETCH_GLOBALLY_DISABLED == 0)
-+    a x
-+.endif
-+.endm
-+
- .macro cache_preload std_increment, boost_increment
- .if (src_bpp_shift >= 0) || (dst_r_bpp != 0) || (mask_bpp_shift >= 0)
- .if regs_shortage
--    ldr ORIG_W, [sp] /* If we are short on regs, ORIG_W is kept on stack */
-+    PF ldr ORIG_W, [sp] /* If we are short on regs, ORIG_W is kept on stack */
- .endif
- .if std_increment != 0
--    add PF_X, PF_X, #std_increment
-+    PF add PF_X, PF_X, #std_increment
- .endif
--    tst PF_CTL, #0xF
--    addne PF_X, PF_X, #boost_increment
--    subne PF_CTL, PF_CTL, #1
--    cmp PF_X, ORIG_W
-+    PF tst PF_CTL, #0xF
-+    PF addne PF_X, PF_X, #boost_increment
-+    PF subne PF_CTL, PF_CTL, #1
-+    PF cmp PF_X, ORIG_W
- .if src_bpp_shift >= 0
--    pld [PF_SRC, PF_X, lsl #src_bpp_shift]
-+    PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
- .endif
- .if dst_r_bpp != 0
--    pld [PF_DST, PF_X, lsl #dst_bpp_shift]
-+    PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
- .endif
- .if mask_bpp_shift >= 0
--    pld [PF_MASK, PF_X, lsl #mask_bpp_shift]
-+    PF pld, [PF_MASK, PF_X, lsl #mask_bpp_shift]
- .endif
--    subge PF_X, PF_X, ORIG_W
--    subges PF_CTL, PF_CTL, #0x10
-+    PF subge PF_X, PF_X, ORIG_W
-+    PF subges PF_CTL, PF_CTL, #0x10
- .if src_bpp_shift >= 0
--    ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
-+    PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
- .endif
- .if dst_r_bpp != 0
--    ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
-+    PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
- .endif
- .if mask_bpp_shift >= 0
--    ldrgeb DUMMY, [PF_MASK, MASK_STRIDE, lsl #mask_bpp_shift]!
-+    PF ldrgeb DUMMY, [PF_MASK, MASK_STRIDE, lsl #mask_bpp_shift]!
- .endif
- .endif
- .endm
-@@ -297,6 +308,12 @@ fname:
-     PF_DST      .req        r12
-     PF_MASK     .req        r14
- 
-+.if prefetch_distance == 0
-+    .set ADVANCED_PREFETCH_ENABLED, 0
-+.else
-+    .set ADVANCED_PREFETCH_ENABLED, 1
-+.endif
-+
- .if mask_bpp == 0
-     ORIG_W      .req        r7      /* saved original width */
-     DUMMY       .req        r8      /* temporary register */
-@@ -374,12 +391,12 @@ fname:
-     ldr         MASK_STRIDE, [sp, #52]
- .endif
-     mov         DST_R, DST_W
--    mov         PF_SRC, SRC
--    mov         PF_DST, DST_R
--    mov         PF_MASK, MASK
--    mov         PF_CTL, H, lsl #4
--    /* pf_ctl = 10 | ((h - 1) << 4) */
--    add         PF_CTL, #(prefetch_distance - 0x10)
-+    PF mov      PF_SRC, SRC
-+    PF mov      PF_DST, DST_R
-+    PF mov      PF_MASK, MASK
-+    /* PF_CTL = prefetch_distance | ((h - 1) << 4) */
-+    PF mov      PF_CTL, H, lsl #4
-+    PF add      PF_CTL, #(prefetch_distance - 0x10)
- 
-     init
- .if regs_shortage
-@@ -412,7 +429,7 @@ fname:
- .else
-     add         DST_R, DST_R, #lowbit
- .endif
--    add         PF_X, PF_X, #(lowbit * 8 / dst_w_bpp)
-+    PF add      PF_X, PF_X, #(lowbit * 8 / dst_w_bpp)
-     sub         W, W, #(lowbit * 8 / dst_w_bpp)
- 1:
- .endif
-@@ -444,7 +461,7 @@ fname:
-                 (src_basereg - pixblock_size * src_bpp / 64), SRC
-     pixld       pixblock_size, mask_bpp, \
-                 (mask_basereg - pixblock_size * mask_bpp / 64), MASK
--    add         PF_X, PF_X, #pixblock_size
-+    PF add      PF_X, PF_X, #pixblock_size
-     process_pixblock_head
-     cache_preload 0, pixblock_size
-     subs        W, W, #(pixblock_size * 2)
-@@ -468,7 +485,7 @@ fname:
-     pixld       chunk_size, src_bpp, src_basereg, SRC
-     pixld       chunk_size, mask_bpp, mask_basereg, MASK
-     pixld_a     chunk_size, dst_r_bpp, dst_r_basereg, DST_R
--    add         PF_X, PF_X, #chunk_size
-+    PF add      PF_X, PF_X, #chunk_size
- 1:
- .endif
- .endr
---
-cgit v0.8.2
diff --git a/recipes/xorg-lib/pixman/remove-broken.patch b/recipes/xorg-lib/pixman/remove-broken.patch
deleted file mode 100644
index fd025b4..0000000
--- a/recipes/xorg-lib/pixman/remove-broken.patch
+++ /dev/null
@@ -1,826 +0,0 @@
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Sun, 26 Jul 2009 22:21:26 +0000 (+0300)
-Subject: ARM: Removal of unused/broken NEON code
-X-Git-Url: http://siarhei.siamashka.name/gitweb/?p=pixman.git;a=commitdiff_plain;h=7ef2322eefcccc28a2d45c0da22c0fee88b8f464
-
-ARM: Removal of unused/broken NEON code
----
-
-diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
-index 4125d1b..9404c70 100644
---- a/pixman/pixman-arm-neon.c
-+++ b/pixman/pixman-arm-neon.c
-@@ -1895,710 +1895,6 @@ pixman_fill_neon (uint32_t *bits,
- #endif
- }
- 
--/* TODO: is there a more generic way of doing this being introduced? */
--#define NEON_SCANLINE_BUFFER_PIXELS (1024)
--
--static inline void
--neon_quadword_copy (void *   dst,
--		    void *   src,
--		    uint32_t count,         /* of quadwords */
--		    uint32_t trailer_count  /* of bytes */)
--{
--    uint8_t *t_dst = dst, *t_src = src;
--
--    /* Uses aligned multi-register loads to maximise read bandwidth
--     * on uncached memory such as framebuffers
--     * The accesses do not have the aligned qualifiers, so that the copy
--     * may convert between aligned-uncached and unaligned-cached memory.
--     * It is assumed that the CPU can infer alignedness from the address.
--     */
--
--#ifdef USE_GCC_INLINE_ASM
--
--    asm volatile (
--        "	cmp       %[count], #8				\n"
--        "	blt 1f    @ skip oversized fragments		\n"
--        "0: @ start with eight quadwords at a time		\n"
--        "	sub       %[count], %[count], #8		\n"
--        "	vld1.8    {d16, d17, d18, d19}, [%[src]]!		\n"
--        "	vld1.8    {d20, d21, d22, d23}, [%[src]]!		\n"
--        "	vld1.8    {d24, d25, d26, d27}, [%[src]]!		\n"
--        "	vld1.8    {d28, d29, d30, d31}, [%[src]]!		\n"
--        "	cmp       %[count], #8				\n"
--        "	vst1.8    {d16, d17, d18, d19}, [%[dst]]!		\n"
--        "	vst1.8    {d20, d21, d22, d23}, [%[dst]]!		\n"
--        "	vst1.8    {d24, d25, d26, d27}, [%[dst]]!		\n"
--        "	vst1.8    {d28, d29, d30, d31}, [%[dst]]!		\n"
--        "	bge 0b						\n"
--        "1: @ four quadwords					\n"
--        "	tst       %[count], #4				\n"
--        "	beq 2f    @ skip oversized fragment		\n"
--        "	vld1.8    {d16, d17, d18, d19}, [%[src]]!		\n"
--        "	vld1.8    {d20, d21, d22, d23}, [%[src]]!		\n"
--        "	vst1.8    {d16, d17, d18, d19}, [%[dst]]!		\n"
--        "	vst1.8    {d20, d21, d22, d23}, [%[dst]]!		\n"
--        "2: @ two quadwords					\n"
--        "	tst       %[count], #2				\n"
--        "	beq 3f    @ skip oversized fragment		\n"
--        "	vld1.8    {d16, d17, d18, d19}, [%[src]]!		\n"
--        "	vst1.8    {d16, d17, d18, d19}, [%[dst]]!		\n"
--        "3: @ one quadword					\n"
--        "	tst       %[count], #1				\n"
--        "	beq 4f    @ skip oversized fragment		\n"
--        "	vld1.8    {d16, d17}, [%[src]]!			\n"
--        "	vst1.8    {d16, d17}, [%[dst]]!			\n"
--        "4: @ end						\n"
--
--        /* Clobbered input registers marked as input/outputs */
--	: [dst] "+r" (t_dst), [src] "+r" (t_src), [count] "+r" (count)
--
--	  /* No unclobbered inputs */
--	:
--
--        /* Clobbered vector registers */
--	: "d16", "d17", "d18", "d19", "d20", "d21", "d22", "d23", "d24", "d25",
--	  "d26", "d27", "d28", "d29", "d30", "d31", "cc", "memory");
--
--#else
--
--    while (count >= 8)
--    {
--	uint8x16x4_t t1 = vld4q_u8 (t_src);
--	uint8x16x4_t t2 = vld4q_u8 (t_src + sizeof(uint8x16x4_t));
--	
--	t_src += sizeof(uint8x16x4_t) * 2;
--	vst4q_u8 (t_dst, t1);
--	vst4q_u8 (t_dst + sizeof(uint8x16x4_t), t2);
--	t_dst += sizeof(uint8x16x4_t) * 2;
--	count -= 8;
--    }
--
--    if (count & 4)
--    {
--	uint8x16x4_t t1 = vld4q_u8 (t_src);
--	
--	t_src += sizeof(uint8x16x4_t);
--	vst4q_u8 (t_dst, t1);
--	t_dst += sizeof(uint8x16x4_t);
--    }
--
--    if (count & 2)
--    {
--	uint8x8x4_t t1 = vld4_u8 (t_src);
--	
--	t_src += sizeof(uint8x8x4_t);
--	vst4_u8 (t_dst, t1);
--	t_dst += sizeof(uint8x8x4_t);
--    }
--
--    if (count & 1)
--    {
--	uint8x16_t t1 = vld1q_u8 (t_src);
--	
--	t_src += sizeof(uint8x16_t);
--	vst1q_u8 (t_dst, t1);
--	t_dst += sizeof(uint8x16_t);
--    }
--
--#endif  /* !USE_GCC_INLINE_ASM */
--
--    if (trailer_count)
--    {
--	if (trailer_count & 8)
--	{
--	    uint8x8_t t1 = vld1_u8 (t_src);
--	    
--	    t_src += sizeof(uint8x8_t);
--	    vst1_u8 (t_dst, t1);
--	    t_dst += sizeof(uint8x8_t);
--	}
--
--	if (trailer_count & 4)
--	{
--	    *((uint32_t*) t_dst) = *((uint32_t*) t_src);
--	    
--	    t_dst += 4;
--	    t_src += 4;
--	}
--
--	if (trailer_count & 2)
--	{
--	    *((uint16_t*) t_dst) = *((uint16_t*) t_src);
--	    
--	    t_dst += 2;
--	    t_src += 2;
--	}
--
--	if (trailer_count & 1)
--	{
--	    *t_dst++ = *t_src++;
--	}
--    }
--}
--
--static inline void
--solid_over_565_8_pix_neon (uint32_t  glyph_colour,
--                           uint16_t *dest,
--                           uint8_t * in_mask,
--                           uint32_t  dest_stride,    /* bytes, not elements */
--                           uint32_t  mask_stride,
--                           uint32_t  count           /* 8-pixel groups */)
--{
--    /* Inner loop of glyph blitter (solid colour, alpha mask) */
--
--#ifdef USE_GCC_INLINE_ASM
--
--    asm volatile (
--        "	vld4.8 {d20[], d21[], d22[], d23[]}, [%[glyph_colour]]  @ splat solid colour components	\n"
--        "0:	@ loop																				\n"
--        "	vld1.16   {d0, d1}, [%[dest]]         @ load first pixels from framebuffer			\n"
--        "	vld1.8    {d17}, [%[in_mask]]         @ load alpha mask of glyph						\n"
--        "	vmull.u8  q9, d17, d23               @ apply glyph colour alpha to mask				\n"
--        "	vshrn.u16 d17, q9, #8                @ reformat it to match original mask			\n"
--        "	vmvn      d18, d17                   @ we need the inverse mask for the background	\n"
--        "	vsli.u16  q3, q0, #5                 @ duplicate framebuffer blue bits				\n"
--        "	vshrn.u16 d2, q0, #8                 @ unpack red from framebuffer pixels			\n"
--        "	vshrn.u16 d4, q0, #3                 @ unpack green									\n"
--        "	vsri.u8   d2, d2, #5                 @ duplicate red bits (extend 5 to 8)			\n"
--        "	vshrn.u16 d6, q3, #2                 @ unpack extended blue (truncate 10 to 8)		\n"
--        "	vsri.u8   d4, d4, #6                 @ duplicate green bits (extend 6 to 8)			\n"
--        "	vmull.u8  q1, d2, d18                @ apply inverse mask to background red...		\n"
--        "	vmull.u8  q2, d4, d18                @ ...green...									\n"
--        "	vmull.u8  q3, d6, d18                @ ...blue										\n"
--        "	subs      %[count], %[count], #1     @ decrement/test loop counter					\n"
--        "	vmlal.u8  q1, d17, d22               @ add masked foreground red...					\n"
--        "	vmlal.u8  q2, d17, d21               @ ...green...									\n"
--        "	vmlal.u8  q3, d17, d20               @ ...blue										\n"
--        "	add %[in_mask], %[in_mask], %[mask_stride] @ advance mask pointer, while we wait		\n"
--        "	vsri.16   q1, q2, #5                 @ pack green behind red						\n"
--        "	vsri.16   q1, q3, #11                @ pack blue into pixels						\n"
--        "	vst1.16   {d2, d3}, [%[dest]]         @ store composited pixels						\n"
--        "	add %[dest], %[dest], %[dest_stride]  @ advance framebuffer pointer					\n"
--        "	bne 0b                               @ next please									\n"
--
--	/* Clobbered registers marked as input/outputs */
--	: [dest] "+r" (dest), [in_mask] "+r" (in_mask), [count] "+r" (count)
--	  
--	  /* Inputs */
--	: [dest_stride] "r" (dest_stride), [mask_stride] "r" (mask_stride), [glyph_colour] "r" (&glyph_colour)
--
--	  /* Clobbers, including the inputs we modify, and potentially lots of memory */
--	: "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d17", "d18", "d19",
--	  "d20", "d21", "d22", "d23", "d24", "d25", "cc", "memory"
--        );
--
--#else
--
--    uint8x8x4_t solid_colour = vld4_dup_u8 ((uint8_t*) &glyph_colour);
--
--    while (count--)
--    {
--	uint16x8_t pixels = vld1q_u16 (dest);
--	uint8x8_t mask = vshrn_n_u16 (vmull_u8 (solid_colour.val[3], vld1_u8 (in_mask)), 8);
--	uint8x8_t mask_image = vmvn_u8 (mask);
--
--	uint8x8_t t_red   = vshrn_n_u16 (pixels, 8);
--	uint8x8_t t_green = vshrn_n_u16 (pixels, 3);
--	uint8x8_t t_blue  = vshrn_n_u16 (vsli_n_u8 (pixels, pixels, 5), 2);
--
--	uint16x8_t s_red   = vmull_u8 (vsri_n_u8 (t_red, t_red, 5), mask_image);
--	uint16x8_t s_green = vmull_u8 (vsri_n_u8 (t_green, t_green, 6), mask_image);
--	uint16x8_t s_blue  = vmull_u8 (t_blue, mask_image);
--
--	s_red   = vmlal (s_red, mask, solid_colour.val[2]);
--	s_green = vmlal (s_green, mask, solid_colour.val[1]);
--	s_blue  = vmlal (s_blue, mask, solid_colour.val[0]);
--
--	pixels = vsri_n_u16 (s_red, s_green, 5);
--	pixels = vsri_n_u16 (pixels, s_blue, 11);
--	vst1q_u16 (dest, pixels);
--
--	dest += dest_stride;
--	mask += mask_stride;
--    }
--
--#endif
--}
--
--#if 0 /* this is broken currently */
--static void
--neon_composite_over_n_8_0565 (pixman_implementation_t * impl,
--                              pixman_op_t               op,
--                              pixman_image_t *          src_image,
--                              pixman_image_t *          mask_image,
--                              pixman_image_t *          dst_image,
--                              int32_t                   src_x,
--                              int32_t                   src_y,
--                              int32_t                   mask_x,
--                              int32_t                   mask_y,
--                              int32_t                   dest_x,
--                              int32_t                   dest_y,
--                              int32_t                   width,
--                              int32_t                   height)
--{
--    uint32_t  src, srca;
--    uint16_t *dst_line, *aligned_line;
--    uint8_t  *mask_line;
--    uint32_t  dst_stride, mask_stride;
--    uint32_t  kernel_count, copy_count, copy_tail;
--    uint8_t   kernel_offset, copy_offset;
--
--    src = _pixman_image_get_solid (src_image, dst_image->bits.format);
--
--    /* bail out if fully transparent or degenerate */
--    srca = src >> 24;
--    if (src == 0)
--	return;
--
--    if (width == 0 || height == 0)
--	return;
--
--    if (width > NEON_SCANLINE_BUFFER_PIXELS)
--    {
--	/* split the blit, so we can use a fixed-size scanline buffer
--	 * TODO: there must be a more elegant way of doing this.
--	 */
--	int x;
--	for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS)
--	{
--	    neon_composite_over_n_8_0565 (
--		impl, op,
--		src_image, mask_image, dst_image,
--		src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y,
--		(x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height);
--	}
--
--	return;
--    }
--    
--    PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1);
--    PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t, mask_stride, mask_line, 1);
--
--    /* keep within minimum number of aligned quadwords on width
--     * while also keeping the minimum number of columns to process
--     */
--    {
--	unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF;
--	unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF;
--	unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF;
--
--	/* the fast copy should be quadword aligned */
--	copy_offset = dst_line - ((uint16_t*) aligned_left);
--	aligned_line = dst_line - copy_offset;
--	copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4);
--	copy_tail = 0;
--
--	if (aligned_right - aligned_left > ceiling_length)
--	{
--	    /* unaligned routine is tightest */
--	    kernel_count = (uint32_t) (ceiling_length >> 4);
--	    kernel_offset = copy_offset;
--	}
--	else
--	{
--	    /* aligned routine is equally tight, so it is safer to align */
--	    kernel_count = copy_count;
--	    kernel_offset = 0;
--	}
--
--	/* We should avoid reading beyond scanline ends for safety */
--	if (aligned_line < (dst_line - dest_x) ||
--	    (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width))
--	{
--	    /* switch to precise read */
--	    copy_offset = kernel_offset = 0;
--	    aligned_line = dst_line;
--	    kernel_count = (uint32_t) (ceiling_length >> 4);
--	    copy_count = (width * sizeof(*dst_line)) >> 4;
--	    copy_tail = (width * sizeof(*dst_line)) & 0xF;
--	}
--    }
--
--    {
--	uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8];         /* deliberately not initialised */
--	uint8_t glyph_line[NEON_SCANLINE_BUFFER_PIXELS + 8];
--	int y = height;
--
--	/* row-major order */
--	/* left edge, middle block, right edge */
--	for ( ; y--; mask_line += mask_stride, aligned_line += dst_stride, dst_line += dst_stride)
--	{
--	    /* We don't want to overrun the edges of the glyph,
--	     * so realign the edge data into known buffers
--	     */
--	    neon_quadword_copy (glyph_line + copy_offset, mask_line, width >> 4, width & 0xF);
--
--	    /* Uncached framebuffer access is really, really slow
--	     * if we do it piecemeal. It should be much faster if we
--	     * grab it all at once. One scanline should easily fit in
--	     * L1 cache, so this should not waste RAM bandwidth.
--	     */
--	    neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail);
--
--	    /* Apply the actual filter */
--	    solid_over_565_8_pix_neon (
--		src, scan_line + kernel_offset,
--		glyph_line + kernel_offset, 8 * sizeof(*dst_line),
--		8, kernel_count);
--
--	    /* Copy the modified scanline back */
--	    neon_quadword_copy (dst_line, scan_line + copy_offset,
--				width >> 3, (width & 7) * 2);
--	}
--    }
--}
--#endif
--
--#ifdef USE_GCC_INLINE_ASM
--
--static inline void
--plain_over_565_8_pix_neon (uint32_t  colour,
--			   uint16_t *dest,
--			   uint32_t  dest_stride,     /* bytes, not elements */
--			   uint32_t  count            /* 8-pixel groups */)
--{
--    /* Inner loop for plain translucent rects
--     * (solid colour without alpha mask)
--     */
--    asm volatile (
--        "	vld4.8   {d20[], d21[], d22[], d23[]}, [%[colour]]  @ solid colour load/splat \n"
--        "	vmull.u8  q12, d23, d22              @ premultiply alpha red   \n"
--        "	vmull.u8  q13, d23, d21              @ premultiply alpha green \n"
--        "	vmull.u8  q14, d23, d20              @ premultiply alpha blue  \n"
--        "	vmvn      d18, d23                   @ inverse alpha for background \n"
--        "0:	@ loop\n"
--        "	vld1.16   {d0, d1}, [%[dest]]         @ load first pixels from framebuffer	\n"
--        "	vshrn.u16 d2, q0, #8                 @ unpack red from framebuffer pixels	\n"
--        "	vshrn.u16 d4, q0, #3                 @ unpack green				\n"
--        "	vsli.u16  q3, q0, #5                 @ duplicate framebuffer blue bits		\n"
--        "	vsri.u8   d2, d2, #5                 @ duplicate red bits (extend 5 to 8)	\n"
--        "	vsri.u8   d4, d4, #6                 @ duplicate green bits (extend 6 to 8)	\n"
--        "	vshrn.u16 d6, q3, #2                 @ unpack extended blue (truncate 10 to 8)	\n"
--        "	vmov      q0, q12                    @ retrieve foreground red   \n"
--        "	vmlal.u8  q0, d2, d18                @ blend red - my kingdom for a four-operand MLA \n"
--        "	vmov      q1, q13                    @ retrieve foreground green \n"
--        "	vmlal.u8  q1, d4, d18                @ blend green               \n"
--        "	vmov      q2, q14                    @ retrieve foreground blue  \n"
--        "	vmlal.u8  q2, d6, d18                @ blend blue                \n"
--        "	subs      %[count], %[count], #1     @ decrement/test loop counter		\n"
--        "	vsri.16   q0, q1, #5                 @ pack green behind red			\n"
--        "	vsri.16   q0, q2, #11                @ pack blue into pixels			\n"
--        "	vst1.16   {d0, d1}, [%[dest]]         @ store composited pixels			\n"
--        "	add %[dest], %[dest], %[dest_stride]  @ advance framebuffer pointer		\n"
--        "	bne 0b                               @ next please				\n"
--
--        /* Clobbered registers marked as input/outputs */
--	: [dest] "+r" (dest), [count] "+r" (count)
--
--	  /* Inputs */
--	: [dest_stride] "r" (dest_stride), [colour] "r" (&colour)
--
--	  /* Clobbers, including the inputs we modify, and
--	   * potentially lots of memory
--	   */
--	: "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d18", "d19",
--	  "d20", "d21", "d22", "d23", "d24", "d25", "d26", "d27", "d28", "d29",
--	  "cc", "memory"
--        );
--}
--
--static void
--neon_composite_over_n_0565 (pixman_implementation_t * impl,
--                            pixman_op_t               op,
--                            pixman_image_t *          src_image,
--                            pixman_image_t *          mask_image,
--                            pixman_image_t *          dst_image,
--                            int32_t                   src_x,
--                            int32_t                   src_y,
--                            int32_t                   mask_x,
--                            int32_t                   mask_y,
--                            int32_t                   dest_x,
--                            int32_t                   dest_y,
--                            int32_t                   width,
--                            int32_t                   height)
--{
--    uint32_t src, srca;
--    uint16_t    *dst_line, *aligned_line;
--    uint32_t dst_stride;
--    uint32_t kernel_count, copy_count, copy_tail;
--    uint8_t kernel_offset, copy_offset;
--
--    src = _pixman_image_get_solid (src_image, dst_image->bits.format);
--
--    /* bail out if fully transparent */
--    srca = src >> 24;
--    if (src == 0)
--	return;
--    
--    if (width == 0 || height == 0)
--	return;
--
--    if (width > NEON_SCANLINE_BUFFER_PIXELS)
--    {
--	/* split the blit, so we can use a fixed-size scanline buffer *
--	 * TODO: there must be a more elegant way of doing this.
--	 */
--	int x;
--	
--	for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS)
--	{
--	    neon_composite_over_n_0565 (
--		impl, op,
--		src_image, mask_image, dst_image,
--		src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y,
--		(x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height);
--	}
--	return;
--    }
--
--    PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1);
--
--    /* keep within minimum number of aligned quadwords on width
--     * while also keeping the minimum number of columns to process
--     */
--    {
--	unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF;
--	unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF;
--	unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF;
--
--	/* the fast copy should be quadword aligned */
--	copy_offset = dst_line - ((uint16_t*) aligned_left);
--	aligned_line = dst_line - copy_offset;
--	copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4);
--	copy_tail = 0;
--
--	if (aligned_right - aligned_left > ceiling_length)
--	{
--	    /* unaligned routine is tightest */
--	    kernel_count = (uint32_t) (ceiling_length >> 4);
--	    kernel_offset = copy_offset;
--	}
--	else
--	{
--	    /* aligned routine is equally tight, so it is safer to align */
--	    kernel_count = copy_count;
--	    kernel_offset = 0;
--	}
--
--	/* We should avoid reading beyond scanline ends for safety */
--	if (aligned_line < (dst_line - dest_x) ||
--	    (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width))
--	{
--	    /* switch to precise read */
--	    copy_offset = kernel_offset = 0;
--	    aligned_line = dst_line;
--	    kernel_count = (uint32_t) (ceiling_length >> 4);
--	    copy_count = (width * sizeof(*dst_line)) >> 4;
--	    copy_tail = (width * sizeof(*dst_line)) & 0xF;
--	}
--    }
--
--    {
--	uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8];  /* deliberately not initialised */
--
--	/* row-major order */
--	/* left edge, middle block, right edge */
--	for ( ; height--; aligned_line += dst_stride, dst_line += dst_stride)
--	{
--	    /* Uncached framebuffer access is really, really slow if we do it piecemeal.
--	     * It should be much faster if we grab it all at once.
--	     * One scanline should easily fit in L1 cache, so this should
--	     * not waste RAM bandwidth.
--	     */
--	    neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail);
--
--	    /* Apply the actual filter */
--	    plain_over_565_8_pix_neon (
--		src, scan_line + kernel_offset, 8 * sizeof(*dst_line), kernel_count);
--
--	    /* Copy the modified scanline back */
--	    neon_quadword_copy (
--		dst_line, scan_line + copy_offset, width >> 3, (width & 7) * 2);
--	}
--    }
--}
--
--static inline void
--ARGB8_over_565_8_pix_neon (uint32_t *src,
--                           uint16_t *dest,
--                           uint32_t  src_stride,     /* bytes, not elements */
--                           uint32_t  count           /* 8-pixel groups */)
--{
--    asm volatile (
--        "0:	@ loop\n"
--        "	pld   [%[src], %[src_stride]]         @ preload from next scanline	\n"
--        "	vld1.16   {d0, d1}, [%[dest]]         @ load pixels from framebuffer	\n"
--        "	vld4.8   {d20, d21, d22, d23},[%[src]]! @ load source image pixels		\n"
--        "	vsli.u16  q3, q0, #5                 @ duplicate framebuffer blue bits		\n"
--        "	vshrn.u16 d2, q0, #8                 @ unpack red from framebuffer pixels	\n"
--        "	vshrn.u16 d4, q0, #3                 @ unpack green				\n"
--        "	vmvn      d18, d23                   @ we need the inverse alpha for the background	\n"
--        "	vsri.u8   d2, d2, #5                 @ duplicate red bits (extend 5 to 8)	\n"
--        "	vshrn.u16 d6, q3, #2                 @ unpack extended blue (truncate 10 to 8)	\n"
--        "	vsri.u8   d4, d4, #6                 @ duplicate green bits (extend 6 to 8)	\n"
--        "	vmull.u8  q1, d2, d18                @ apply inverse alpha to background red...	\n"
--        "	vmull.u8  q2, d4, d18                @ ...green...				\n"
--        "	vmull.u8  q3, d6, d18                @ ...blue					\n"
--        "	subs      %[count], %[count], #1     @ decrement/test loop counter		\n"
--        "	vmlal.u8  q1, d23, d22               @ add blended foreground red...		\n"
--        "	vmlal.u8  q2, d23, d21               @ ...green...				\n"
--        "	vmlal.u8  q3, d23, d20               @ ...blue					\n"
--        "	vsri.16   q1, q2, #5                 @ pack green behind red			\n"
--        "	vsri.16   q1, q3, #11                @ pack blue into pixels			\n"
--        "	vst1.16   {d2, d3}, [%[dest]]!        @ store composited pixels			\n"
--        "	bne 0b                               @ next please				\n"
--
--        /* Clobbered registers marked as input/outputs */
--	: [dest] "+r" (dest), [src] "+r" (src), [count] "+r" (count)
--
--	  /* Inputs */
--	: [src_stride] "r" (src_stride)
--
--	  /* Clobbers, including the inputs we modify, and potentially lots of memory */
--	: "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d17", "d18", "d20",
--	  "d21", "d22", "d23", "cc", "memory"
--        );
--}
--
--static void
--neon_composite_over_8888_0565 (pixman_implementation_t * impl,
--                               pixman_op_t               op,
--                               pixman_image_t *          src_image,
--                               pixman_image_t *          mask_image,
--                               pixman_image_t *          dst_image,
--                               int32_t                   src_x,
--                               int32_t                   src_y,
--                               int32_t                   mask_x,
--                               int32_t                   mask_y,
--                               int32_t                   dest_x,
--                               int32_t                   dest_y,
--                               int32_t                   width,
--                               int32_t                   height)
--{
--    uint32_t    *src_line;
--    uint16_t    *dst_line, *aligned_line;
--    uint32_t dst_stride, src_stride;
--    uint32_t kernel_count, copy_count, copy_tail;
--    uint8_t kernel_offset, copy_offset;
--
--    /* we assume mask is opaque 
--     * so the only alpha to deal with is embedded in src
--     */
--    if (width > NEON_SCANLINE_BUFFER_PIXELS)
--    {
--	/* split the blit, so we can use a fixed-size scanline buffer */
--	int x;
--	for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS)
--	{
--	    neon_composite_over_8888_0565 (
--		impl, op,
--		src_image, mask_image, dst_image,
--		src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y,
--		(x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height);
--	}
--	return;
--    }
--
--    PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1);
--    PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, src_stride, src_line, 1);
--
--    /* keep within minimum number of aligned quadwords on width
--     * while also keeping the minimum number of columns to process
--     */
--    {
--	unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF;
--	unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF;
--	unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF;
--
--	/* the fast copy should be quadword aligned */
--	copy_offset = dst_line - ((uint16_t*) aligned_left);
--	aligned_line = dst_line - copy_offset;
--	copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4);
--	copy_tail = 0;
--
--	if (aligned_right - aligned_left > ceiling_length)
--	{
--	    /* unaligned routine is tightest */
--	    kernel_count = (uint32_t) (ceiling_length >> 4);
--	    kernel_offset = copy_offset;
--	}
--	else
--	{
--	    /* aligned routine is equally tight, so it is safer to align */
--	    kernel_count = copy_count;
--	    kernel_offset = 0;
--	}
--
--	/* We should avoid reading beyond scanline ends for safety */
--	if (aligned_line < (dst_line - dest_x) ||
--	    (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width))
--	{
--	    /* switch to precise read */
--	    copy_offset = kernel_offset = 0;
--	    aligned_line = dst_line;
--	    kernel_count = (uint32_t) (ceiling_length >> 4);
--	    copy_count = (width * sizeof(*dst_line)) >> 4;
--	    copy_tail = (width * sizeof(*dst_line)) & 0xF;
--	}
--    }
--
--    /* Preload the first input scanline */
--    {
--	uint8_t *src_ptr = (uint8_t*) src_line;
--	uint32_t count = (width + 15) / 16;
--
--#ifdef USE_GCC_INLINE_ASM
--	asm volatile (
--	    "0: @ loop						\n"
--	    "	subs    %[count], %[count], #1			\n"
--	    "	pld     [%[src]]				\n"
--	    "	add     %[src], %[src], #64			\n"
--	    "	bgt 0b						\n"
--
--	    /* Clobbered input registers marked as input/outputs */
--	    : [src] "+r" (src_ptr), [count] "+r" (count)
--	    :     /* no unclobbered inputs */
--	    : "cc"
--	    );
--#else
--	do
--	{
--	    __pld (src_ptr);
--	    src_ptr += 64;
--	}
--	while (--count);
--#endif
--    }
--
--    {
--	uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; /* deliberately not initialised */
--
--	/* row-major order */
--	/* left edge, middle block, right edge */
--	for ( ; height--; src_line += src_stride, aligned_line += dst_stride)
--	{
--	    /* Uncached framebuffer access is really, really slow if we do
--	     * it piecemeal. It should be much faster if we grab it all at
--	     * once. One scanline should easily fit in L1 cache, so this
--	     * should not waste RAM bandwidth.
--	     */
--	    neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail);
--
--	    /* Apply the actual filter */
--	    ARGB8_over_565_8_pix_neon (
--		src_line, scan_line + kernel_offset,
--		src_stride * sizeof(*src_line), kernel_count);
--
--	    /* Copy the modified scanline back */
--	    neon_quadword_copy (dst_line,
--				scan_line + copy_offset,
--				width >> 3, (width & 7) * 2);
--	}
--    }
--}
--
--#endif  /* USE_GCC_INLINE_ASM */
--
- static const pixman_fast_path_t arm_neon_fast_path_array[] =
- {
-     { PIXMAN_OP_ADD,  PIXMAN_solid,    PIXMAN_a8,       PIXMAN_a8,       neon_composite_add_8888_8_8,     0 },
-@@ -2612,12 +1908,6 @@ static const pixman_fast_path_t arm_neon_fast_path_array[] =
- #ifdef USE_GCC_INLINE_ASM
-     { PIXMAN_OP_SRC,  PIXMAN_r5g6b5,   PIXMAN_null,     PIXMAN_r5g6b5,   neon_composite_src_16_16,        0 },
-     { PIXMAN_OP_SRC,  PIXMAN_b5g6r5,   PIXMAN_null,     PIXMAN_b5g6r5,   neon_composite_src_16_16,        0 },
--#if 0 /* this code has some bugs */
--    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_null,     PIXMAN_r5g6b5,   neon_composite_over_n_0565,      0 },
--    { PIXMAN_OP_OVER, PIXMAN_solid,    PIXMAN_null,     PIXMAN_b5g6r5,   neon_composite_over_n_0565,      0 },
--    { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null,     PIXMAN_r5g6b5,   neon_composite_over_8888_0565,   0 },
--    { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null,     PIXMAN_b5g6r5,   neon_composite_over_8888_0565,   0 },
--#endif
- #endif
-     { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null,     PIXMAN_a8r8g8b8, neon_composite_over_8888_8888,   0 },
-     { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null,     PIXMAN_x8r8g8b8, neon_composite_over_8888_8888,   0 },
-@@ -2668,79 +1958,6 @@ arm_neon_composite (pixman_implementation_t *imp,
- }
- 
- static pixman_bool_t
--pixman_blt_neon (void *src_bits,
--                 void *dst_bits,
--                 int   src_stride,
--                 int   dst_stride,
--                 int   src_bpp,
--                 int   dst_bpp,
--                 int   src_x,
--                 int   src_y,
--                 int   dst_x,
--                 int   dst_y,
--                 int   width,
--                 int   height)
--{
--    if (!width || !height)
--	return TRUE;
--
--    /* accelerate only straight copies involving complete bytes */
--    if (src_bpp != dst_bpp || (src_bpp & 7))
--	return FALSE;
--
--    {
--	uint32_t bytes_per_pixel = src_bpp >> 3;
--	uint32_t byte_width = width * bytes_per_pixel;
--	/* parameter is in words for some reason */
--	int32_t src_stride_bytes = src_stride * 4;
--	int32_t dst_stride_bytes = dst_stride * 4;
--	uint8_t *src_bytes = ((uint8_t*) src_bits) +
--	    src_y * src_stride_bytes + src_x * bytes_per_pixel;
--	uint8_t *dst_bytes = ((uint8_t*) dst_bits) +
--	    dst_y * dst_stride_bytes + dst_x * bytes_per_pixel;
--	uint32_t quadword_count = byte_width / 16;
--	uint32_t offset         = byte_width % 16;
--
--	while (height--)
--	{
--	    neon_quadword_copy (dst_bytes, src_bytes, quadword_count, offset);
--	    src_bytes += src_stride_bytes;
--	    dst_bytes += dst_stride_bytes;
--	}
--    }
--
--    return TRUE;
--}
--
--static pixman_bool_t
--arm_neon_blt (pixman_implementation_t *imp,
--              uint32_t *               src_bits,
--              uint32_t *               dst_bits,
--              int                      src_stride,
--              int                      dst_stride,
--              int                      src_bpp,
--              int                      dst_bpp,
--              int                      src_x,
--              int                      src_y,
--              int                      dst_x,
--              int                      dst_y,
--              int                      width,
--              int                      height)
--{
--    if (pixman_blt_neon (
--            src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp,
--            src_x, src_y, dst_x, dst_y, width, height))
--    {
--	return TRUE;
--    }
--
--    return _pixman_implementation_blt (
--               imp->delegate,
--               src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp,
--               src_x, src_y, dst_x, dst_y, width, height);
--}
--
--static pixman_bool_t
- arm_neon_fill (pixman_implementation_t *imp,
-                uint32_t *               bits,
-                int                      stride,
-@@ -2765,9 +1982,6 @@ _pixman_implementation_create_arm_neon (void)
-     pixman_implementation_t *imp = _pixman_implementation_create (simd);
- 
-     imp->composite = arm_neon_composite;
--#if 0 /* this code has some bugs */
--    imp->blt = arm_neon_blt;
--#endif
-     imp->fill = arm_neon_fill;
- 
-     return imp;
diff --git a/recipes/xorg-lib/pixman/src-8888-0565.patch b/recipes/xorg-lib/pixman/src-8888-0565.patch
deleted file mode 100644
index c544225..0000000
--- a/recipes/xorg-lib/pixman/src-8888-0565.patch
+++ /dev/null
@@ -1,324 +0,0 @@
-From 6494f9ae8820078d0e6109bf8f294156f7a5da4c Mon Sep 17 00:00:00 2001
-From: Siarhei Siamashka <siarhei.siamashka at nokia.com>
-Date: Fri, 05 Mar 2010 00:40:34 +0000
-Subject: ARM: added 'armv6_composite_src_8888_0565' fast path
-
-Provides ~3x performance improvement when working with
-data in L1 cache, and ~80% performace improvement when working
-with memory. This fast path is important for 32bpp -> 16bpp
-color format conversion and is commonly used with 16bpp desktop.
-
-Microbenchmark from N800 (ARM11 @ 400MHz), measured in MPix/s:
-
-before:
-
- src_8888_0565 = L1:  21.54 M: 15.62
-
-after (armv4):
-
- src_8888_0565 = L1:  45.26 M: 23.29
-
-after (armv6):
-
- src_8888_0565 = L1:  60.62 M: 28.37
----
-diff --git a/pixman/pixman-arm-simd.c b/pixman/pixman-arm-simd.c
-index c375c01..69243c1 100644
---- a/pixman/pixman-arm-simd.c
-+++ b/pixman/pixman-arm-simd.c
-@@ -604,6 +604,282 @@ armv6_composite_over_n_8_0565 (pixman_implementation_t * impl,
- 	dst_stride - width, mask_stride - width, height);
- }
- 
-+static inline void
-+armv4_composite_src_8888_0565_asm (
-+    uint16_t *dst, uint32_t *src, int w, int dst_stride,
-+    int src_stride, int h)
-+{
-+    uint32_t a, x, y, c1F001F = 0x1F001F, cFFFF = 0xFFFF;
-+    int backup_w = w;
-+    while (h--)
-+    {
-+        w = backup_w;
-+        if (w > 0 && (uintptr_t)dst & 2)
-+        {
-+            x = *src++;
-+
-+            a = (x >> 3) & c1F001F;
-+            x &= 0xFC00;
-+            a |= a >> 5;
-+            a |= x >> 5;
-+
-+            *dst++ = a;
-+            w--;
-+        }
-+
-+        asm volatile(
-+            "subs  %[w], %[w], #2\n"
-+            "blt   2f\n"
-+        "1:\n"
-+            "ldr   %[x], [%[src]], #4\n"
-+            "ldr   %[y], [%[src]], #4\n"
-+            "subs  %[w], %[w], #2\n"
-+
-+            "and   %[a], %[c1F001F], %[x], lsr #3\n"
-+            "and   %[x], %[x], #0xFC00\n\n"
-+            "orr   %[a], %[a], %[a], lsr #5\n"
-+            "orr   %[x], %[a], %[x], lsr #5\n"
-+
-+            "and   %[a], %[c1F001F], %[y], lsr #3\n"
-+            "and   %[y], %[y], #0xFC00\n\n"
-+            "orr   %[a], %[a], %[a], lsr #5\n"
-+            "orr   %[y], %[a], %[y], lsr #5\n"
-+            /*
-+             * Writing single 32-bit value is much faster than two
-+             * separate 16-bit values for older CPUs without (efficient)
-+             * write combining, even though it costs an extra instruction.
-+             */
-+            "and   %[x], %[x], %[cFFFF]\n"
-+            "orr   %[x], %[x], %[y], lsl #16\n"
-+            "str   %[x], [%[dst]], #4\n"
-+            "bge   1b\n"
-+        "2:\n"
-+        : [c1F001F] "+&r" (c1F001F), [cFFFF] "+&r" (cFFFF),
-+          [src] "+&r" (src), [dst] "+&r" (dst), [a] "=&r" (a),
-+          [x] "=&r" (x), [y] "=&r" (y), [w] "+&r" (w)
-+        );
-+
-+        if (w & 1)
-+        {
-+            x = *src++;
-+
-+            a = (x >> 3) & c1F001F;
-+            x = x & 0xFC00;
-+            a |= a >> 5;
-+            a |= x >> 5;
-+
-+            *dst++ = a;
-+        }
-+
-+        src += src_stride - backup_w;
-+        dst += dst_stride - backup_w;
-+    }
-+}
-+
-+/*
-+ * Conversion x8r8g8b8 -> r5g6b5
-+ *
-+ * Note: 'w' must be >= 7 here
-+ */
-+static void __attribute__((naked))
-+armv6_composite_src_8888_0565_asm (
-+    uint16_t *dst, uint32_t *src, int w, int dst_stride,
-+    int src_stride, int h)
-+{
-+    asm volatile(
-+        /* define supplementary macros */
-+        ".macro cvt8888to565 PIX\n"
-+            "and   A, C1F001F, \\PIX, lsr #3\n"
-+            "and   \\PIX, \\PIX, #0xFC00\n\n"
-+            "orr   A, A, A, lsr #5\n"
-+            "orr   \\PIX, A, \\PIX, lsr #5\n"
-+        ".endm\n"
-+
-+        ".macro combine_pixels_pair PIX1, PIX2\n"
-+            /* Note: assume little endian byte order */
-+            "pkhbt \\PIX1, \\PIX1, \\PIX2, lsl #16\n"
-+        ".endm\n"
-+
-+        /* function entry, save all registers (10 words) to stack */
-+        "stmdb   sp!, {r4-r11, ip, lr}\n"
-+
-+        /* define some aliases */
-+        "DST     .req  r0\n"
-+        "SRC     .req  r1\n"
-+        "W       .req  r2\n"
-+        "H       .req  r3\n"
-+
-+        "TMP1    .req  r4\n"
-+        "TMP2    .req  r5\n"
-+        "TMP3    .req  r6\n"
-+        "TMP4    .req  r7\n"
-+        "TMP5    .req  r8\n"
-+        "TMP6    .req  r9\n"
-+        "TMP7    .req  r10\n"
-+        "TMP8    .req  r11\n"
-+
-+        "C1F001F .req  ip\n"
-+        "A       .req  lr\n"
-+
-+        "ldr     TMP1, [sp, #(10*4+0)]\n" /* load src_stride */
-+        "ldr     C1F001F, =0x1F001F\n"
-+        "sub     r3, r3, W\n"
-+        "str     r3, [sp, #(10*4+0)]\n" /* store (dst_stride-w) */
-+        "ldr     r3, [sp, #(10*4+4)]\n" /* load h */
-+        "sub     TMP1, TMP1, W\n"
-+        "str     TMP1, [sp, #(10*4+4)]\n" /* store (src_stride-w) */
-+
-+        "str     W, [sp, #(8*4)]\n" /* saved ip = W */
-+
-+    "0:\n"
-+        "subs    H, H, #1\n"
-+        "blt     6f\n"
-+    "1:\n"
-+        /* align DST at 4 byte boundary */
-+        "tst     DST, #2\n"
-+        "beq     2f\n"
-+        "ldr     TMP1, [SRC], #4\n"
-+        "sub     W, W, #1\n"
-+        "cvt8888to565 TMP1\n"
-+        "strh    TMP1, [DST], #2\n"
-+    "2:"
-+        /* align DST at 8 byte boundary */
-+        "tst     DST, #4\n"
-+        "beq     2f\n"
-+        "ldmia   SRC!, {TMP1, TMP2}\n"
-+        "sub     W, W, #2\n"
-+        "cvt8888to565 TMP1\n"
-+        "cvt8888to565 TMP2\n"
-+        "combine_pixels_pair TMP1, TMP2\n"
-+        "str     TMP1, [DST], #4\n"
-+    "2:"
-+        /* align DST at 16 byte boundary */
-+        "tst     DST, #8\n"
-+        "beq     2f\n"
-+        "ldmia   SRC!, {TMP1, TMP2, TMP3, TMP4}\n"
-+        "sub     W, W, #4\n"
-+        "cvt8888to565 TMP1\n"
-+        "cvt8888to565 TMP2\n"
-+        "cvt8888to565 TMP3\n"
-+        "cvt8888to565 TMP4\n"
-+        "combine_pixels_pair TMP1, TMP2\n"
-+        "combine_pixels_pair TMP3, TMP4\n"
-+        "stmia DST!, {TMP1, TMP3}\n"
-+    "2:"
-+        /* inner loop, process 8 pixels per iteration */
-+        "subs    W, W, #8\n"
-+        "blt     4f\n"
-+    "3:\n"
-+        "ldmia   SRC!, {TMP1, TMP2, TMP3, TMP4, TMP5, TMP6, TMP7, TMP8}\n"
-+        "subs    W, W, #8\n"
-+        "cvt8888to565 TMP1\n"
-+        "cvt8888to565 TMP2\n"
-+        "cvt8888to565 TMP3\n"
-+        "cvt8888to565 TMP4\n"
-+        "cvt8888to565 TMP5\n"
-+        "cvt8888to565 TMP6\n"
-+        "cvt8888to565 TMP7\n"
-+        "cvt8888to565 TMP8\n"
-+        "combine_pixels_pair TMP1, TMP2\n"
-+        "combine_pixels_pair TMP3, TMP4\n"
-+        "combine_pixels_pair TMP5, TMP6\n"
-+        "combine_pixels_pair TMP7, TMP8\n"
-+        "stmia   DST!, {TMP1, TMP3, TMP5, TMP7}\n"
-+        "bge     3b\n"
-+    "4:\n"
-+
-+        /* process the remaining pixels */
-+        "tst     W, #4\n"
-+        "beq     4f\n"
-+        "ldmia   SRC!, {TMP1, TMP2, TMP3, TMP4}\n"
-+        "cvt8888to565 TMP1\n"
-+        "cvt8888to565 TMP2\n"
-+        "cvt8888to565 TMP3\n"
-+        "cvt8888to565 TMP4\n"
-+        "combine_pixels_pair TMP1, TMP2\n"
-+        "combine_pixels_pair TMP3, TMP4\n"
-+        "stmia   DST!, {TMP1, TMP3}\n"
-+    "4:\n"
-+        "tst     W, #2\n"
-+        "beq     4f\n"
-+        "ldmia   SRC!, {TMP1, TMP2}\n"
-+        "cvt8888to565 TMP1\n"
-+        "cvt8888to565 TMP2\n"
-+        "combine_pixels_pair TMP1, TMP2\n"
-+        "str     TMP1, [DST], #4\n"
-+    "4:\n"
-+        "tst     W, #1\n"
-+        "beq     4f\n"
-+        "ldr     TMP1, [SRC], #4\n"
-+        "cvt8888to565 TMP1\n"
-+        "strh    TMP1, [DST], #2\n"
-+    "4:\n"
-+        "ldr     TMP1, [sp, #(10*4+0)]\n" /* (dst_stride-w) */
-+        "ldr     TMP2, [sp, #(10*4+4)]\n" /* (src_stride-w) */
-+        "ldr     W, [sp, #(8*4)]\n"
-+        "subs    H, H, #1\n"
-+        "add     DST, DST, TMP1, lsl #1\n"
-+        "add     SRC, SRC, TMP2, lsl #2\n"
-+        "bge     1b\n"
-+    "6:\n"
-+        /* restore all registers and return */
-+        "ldmia   sp!, {r4-r11, ip, pc}\n"
-+        ".ltorg\n"
-+
-+        ".unreq   DST\n"
-+        ".unreq   SRC\n"
-+        ".unreq   W\n"
-+        ".unreq   H\n"
-+
-+        ".unreq   TMP1\n"
-+        ".unreq   TMP2\n"
-+        ".unreq   TMP3\n"
-+        ".unreq   TMP4\n"
-+        ".unreq   TMP5\n"
-+        ".unreq   TMP6\n"
-+        ".unreq   TMP7\n"
-+        ".unreq   TMP8\n"
-+
-+        ".unreq   C1F001F\n"
-+        ".unreq   A\n"
-+
-+        ".purgem  cvt8888to565\n"
-+        ".purgem  combine_pixels_pair\n"
-+    );
-+}
-+
-+static void
-+armv6_composite_src_8888_0565 (pixman_implementation_t * impl,
-+			       pixman_op_t               op,
-+			       pixman_image_t *          src_image,
-+			       pixman_image_t *          mask_image,
-+			       pixman_image_t *          dst_image,
-+			       int32_t                   src_x,
-+			       int32_t                   src_y,
-+			       int32_t                   mask_x,
-+			       int32_t                   mask_y,
-+			       int32_t                   dest_x,
-+			       int32_t                   dest_y,
-+			       int32_t                   width,
-+			       int32_t                   height)
-+{
-+    uint32_t *src;
-+    uint16_t *dst;
-+    int src_stride, dst_stride;
-+
-+    PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t,
-+			   dst_stride, dst, 1);
-+    PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t,
-+			   src_stride, src, 1);
-+
-+    if (width < 7)
-+	armv4_composite_src_8888_0565_asm (dst, src, width,
-+					   dst_stride, src_stride, height);
-+    else
-+	armv6_composite_src_8888_0565_asm (dst, src, width,
-+					   dst_stride, src_stride, height);
-+}
-+
- #endif
- 
- static const pixman_fast_path_t arm_simd_fast_paths[] =
-@@ -624,6 +900,10 @@ static const pixman_fast_path_t arm_simd_fast_paths[] =
- #if defined(__ARM_EABI__) && defined(__linux__)
-     PIXMAN_STD_FAST_PATH (OVER, solid, a8, r5g6b5, armv6_composite_over_n_8_0565),
-     PIXMAN_STD_FAST_PATH (OVER, solid, a8, b5g6r5, armv6_composite_over_n_8_0565),
-+    PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, r5g6b5, armv6_composite_src_8888_0565),
-+    PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, r5g6b5, armv6_composite_src_8888_0565),
-+    PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, b5g6r5, armv6_composite_src_8888_0565),
-+    PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, b5g6r5, armv6_composite_src_8888_0565),
- #endif
-     { PIXMAN_OP_NONE },
- };
---
-cgit v0.8.3-6-g21f6
diff --git a/recipes/xorg-lib/pixman/tls.patch b/recipes/xorg-lib/pixman/tls.patch
deleted file mode 100644
index 316caed..0000000
--- a/recipes/xorg-lib/pixman/tls.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 714559dccda3165a72f0a9935c1edc3aef535f30 Mon Sep 17 00:00:00 2001
-From: Søren Sandmann Pedersen <ssp at redhat.com>
-Date: Wed, 07 Apr 2010 05:44:12 +0000
-Subject: Fixes for pthread thread local storage.
-
-The tls_name_key variable is passed to tls_name_get(), and the first
-time this happens it isn't initialized. tls_name_get() then passes it
-on to tls_name_alloc() which passes it on to pthread_setspecific()
-leading to undefined behavior.
-
-None of this is actually necessary at all because there is only one
-such variable per thread local variable, so it doesn't need to passed
-as a parameter at all.
-
-All of this was pointed out by Tor Lillqvist on the cairo mailing
-list.
----
-diff --git a/pixman/pixman-compiler.h b/pixman/pixman-compiler.h
-index cdac0d8..531c8c9 100644
---- a/pixman/pixman-compiler.h
-+++ b/pixman/pixman-compiler.h
-@@ -99,16 +99,16 @@
-     }									\
- 									\
-     static type *							\
--    tls_ ## name ## _alloc (key)					\
-+    tls_ ## name ## _alloc (void)					\
-     {									\
- 	type *value = calloc (1, sizeof (type));			\
- 	if (value)							\
--	    pthread_setspecific (key, value);				\
-+	    pthread_setspecific (tls_ ## name ## _key, value);		\
- 	return value;							\
-     }									\
- 									\
-     static force_inline type *						\
--    tls_ ## name ## _get (key)						\
-+    tls_ ## name ## _get (void)						\
-     {									\
- 	type *value = NULL;						\
- 	if (pthread_once (&tls_ ## name ## _once_control,		\
-@@ -116,13 +116,13 @@
- 	{								\
- 	    value = pthread_getspecific (tls_ ## name ## _key);		\
- 	    if (!value)							\
--		value = tls_ ## name ## _alloc (key);			\
-+		value = tls_ ## name ## _alloc ();			\
- 	}								\
- 	return value;							\
-     }
- 
- #   define PIXMAN_GET_THREAD_LOCAL(name)				\
--    tls_ ## name ## _get (tls_ ## name ## _key)
-+    tls_ ## name ## _get ()
- 
- #else
- 
---
-cgit v0.8.3-6-g21f6
diff --git a/recipes/xorg-lib/pixman_0.10.0.bb b/recipes/xorg-lib/pixman_0.10.0.bb
deleted file mode 100644
index 8690818..0000000
--- a/recipes/xorg-lib/pixman_0.10.0.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require pixman.inc
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "41804ac38025102dcc9891dfd4a3d105"
-SRC_URI[archive.sha256sum] = "48625f6b5ce130672942503c683d306d957ee40f59f8e59be6ca30a245ad47d0"
diff --git a/recipes/xorg-lib/pixman_0.11.4.bb b/recipes/xorg-lib/pixman_0.11.4.bb
deleted file mode 100644
index b058104..0000000
--- a/recipes/xorg-lib/pixman_0.11.4.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require pixman.inc
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "8c8afc259af61d42aa9b3d8ec5a9a03b"
-SRC_URI[archive.sha256sum] = "d034f4afb4329c38e8789a5a7a384194c7402094b4c2b7600d2d86d8589e8571"
-
-DEFAULT_PREFERENCE = "-1"
diff --git a/recipes/xorg-lib/pixman_0.11.8.bb b/recipes/xorg-lib/pixman_0.11.8.bb
deleted file mode 100644
index d7c6717..0000000
--- a/recipes/xorg-lib/pixman_0.11.8.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require pixman.inc
-PR = "${INC_PR}.0"
-
-SRC_URI += " \
-           file://pixman-arm.patch \
-           file://pixman-x888-565.patch \
-          "
-SRC_URI[archive.md5sum] = "7b5db768c51337b5e5e954fc9c961cd3"
-SRC_URI[archive.sha256sum] = "720db5ef6ed0e744b9bac5360ade9a7c024f9fb3fab05c83a90ee28b08e66e01"
diff --git a/recipes/xorg-lib/pixman_0.15.18.bb b/recipes/xorg-lib/pixman_0.15.18.bb
deleted file mode 100644
index 4811a01..0000000
--- a/recipes/xorg-lib/pixman_0.15.18.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require pixman.inc
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "9b60fe7623621b546b76777b8b7d2490"
-SRC_URI[archive.sha256sum] = "3a5003cf6c7d5b03ed5977c108ee11410cfd7849eea370eb4feae98f2822c795"
-
-DEFAULT_PREFERENCE = "-1"
diff --git a/recipes/xorg-lib/pixman_0.15.6.bb b/recipes/xorg-lib/pixman_0.15.6.bb
deleted file mode 100644
index a09de4e..0000000
--- a/recipes/xorg-lib/pixman_0.15.6.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require pixman.inc
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "fe922698df46b21d7e19f28ded4ca100"
-SRC_URI[archive.sha256sum] = "3438437c131c9847b34106225a728c11e522776ac454bb8740a9bc7aea409f22"
-
-DEFAULT_PREFERENCE = "-1"
diff --git a/recipes/xorg-lib/pixman_0.17.12.bb b/recipes/xorg-lib/pixman_0.17.12.bb
deleted file mode 100644
index b476aaa..0000000
--- a/recipes/xorg-lib/pixman_0.17.12.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-require pixman.inc
-PR = "${INC_PR}.0"
-
-SRC_URI += "\
-           file://0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch \
-           file://0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch \
-           file://0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch \
-           file://0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch \
-           file://0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch \
-           file://0006-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch \
-           file://over-n-8-0565.patch \
-           file://src-8888-0565.patch \
-"
-SRC_URI[archive.md5sum] = "331415d7a110145cf27aa00e11d0a683"
-SRC_URI[archive.sha256sum] = "8cce103af1b4200a13bedca5b763f74c9bc99a55985ab44ca92ba532dac6b57f"
-
-NEON = " --disable-arm-neon "
-NEON_armv7a = " "
-
-EXTRA_OECONF = "${NEON} --disable-gtk"
-
-DEFAULT_PREFERENCE = "-1"
-DEFAULT_PREFERENCE_angstrom = "2"
-DEFAULT_PREFERENCE_shr = "2"
diff --git a/recipes/xorg-lib/pixman_0.17.8.bb b/recipes/xorg-lib/pixman_0.17.8.bb
deleted file mode 100644
index 55c70c8..0000000
--- a/recipes/xorg-lib/pixman_0.17.8.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-require pixman.inc
-PR = "${INC_PR}.0"
-
-SRC_URI += " \
-           file://0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch \
-           file://0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch \
-           file://0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch \
-           file://0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch \
-           file://1-composite.patch \
-           file://2-composite.patch \
-           file://3-composite.patch \
-          "
-SRC_URI[archive.md5sum] = "a7deb2ff6b286b676d67aa6ae91317ae"
-SRC_URI[archive.sha256sum] = "ea24e9003455a0881bd43bf7e4169f2b34c90c8521405103e3490553876a81b4"
-
-NEON = " --disable-arm-neon "
-NEON_armv7a = " "
-
-EXTRA_OECONF = "${NEON} --disable-gtk"
-
-DEFAULT_PREFERENCE = "-1"
-DEFAULT_PREFERENCE_angstrom = "2"
-DEFAULT_PREFERENCE_shr = "2"
diff --git a/recipes/xorg-lib/pixman_0.18.0.bb b/recipes/xorg-lib/pixman_0.18.0.bb
deleted file mode 100644
index c099b77..0000000
--- a/recipes/xorg-lib/pixman_0.18.0.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-require pixman.inc
-PR = "${INC_PR}.3"
-
-SRC_URI += "\
-           file://0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch \
-           file://0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch \
-           file://0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch \
-           file://0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch \
-           file://0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch \
-           file://calloc.patch \
-           file://tls.patch \
-           file://565-scanline.patch \
-           file://missing-cache-preload.diff \
-"
-SRC_URI[archive.md5sum] = "a4fb870fc325be258089f1683642e976"
-SRC_URI[archive.sha256sum] = "b305291bba3d9271a4481e5eedf901025ac8ba4ec8f7b76ccafc5094610cd4ff"
-
-NEON = " --disable-arm-neon "
-NEON_armv7a = " "
-
-EXTRA_OECONF = "${NEON} --disable-gtk"
-
-DEFAULT_PREFERENCE = "-1"
-DEFAULT_PREFERENCE_shr = "2"
diff --git a/recipes/xorg-lib/pixman_0.9.4.bb b/recipes/xorg-lib/pixman_0.9.4.bb
deleted file mode 100644
index 254bf61..0000000
--- a/recipes/xorg-lib/pixman_0.9.4.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "Library for lowlevel pixel operations"
-DEPENDS = "virtual/libx11"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "c354ab5b0da10227226d3ef604254875"
-SRC_URI[archive.sha256sum] = "261d239e9e3070a0a81e5b3eab92e6236c6295979bdae0a1ded05cbef93f67aa"
diff --git a/recipes/xorg-lib/pixman_0.9.5.bb b/recipes/xorg-lib/pixman_0.9.5.bb
deleted file mode 100644
index 6259dea..0000000
--- a/recipes/xorg-lib/pixman_0.9.5.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "Library for lowlevel pixel operations"
-DEPENDS = "virtual/libx11"
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://dont-copy-unused-bits-to-alpha-channel.patch"
-SRC_URI[archive.md5sum] = "f9fea77e46ec7a3a16e925e137f146e7"
-SRC_URI[archive.sha256sum] = "a9d4545b5dfc018cdd33fd21bc73c3f1b3c9c207f1bb6843606cc180eb10c6c8"
diff --git a/recipes/xorg-lib/pixman_git.bb b/recipes/xorg-lib/pixman_git.bb
deleted file mode 100644
index 12140c1..0000000
--- a/recipes/xorg-lib/pixman_git.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-require pixman.inc
-PV = "0.17.13"
-PR = "${INC_PR}.2"
-PR_append = "+gitr${SRCPV}"
-
-SRC_URI = "git://anongit.freedesktop.org/pixman;protocol=git;branch=master \
-           file://0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch \
-           file://0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch \
-           file://0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch \
-           file://0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch \
-           file://0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch \
-           file://0006-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch \
-           file://over-n-8-0565.patch \
-           file://src-8888-0565.patch \
-           file://calloc.patch \
-           file://tls.patch \
-"
-
-SRCREV = "69f1ec9a7827aeb522fcae99846237ef0f896e7b"
-S = "${WORKDIR}/git"
-
-NEON = " --disable-arm-neon "
-NEON_armv7a = " "
-
-EXTRA_OECONF = "${NEON} --disable-gtk"
-
-DEFAULT_PREFERENCE = "-1"
diff --git a/recipes/xorg-lib/xtrans/fix-missing-includepath.patch b/recipes/xorg-lib/xtrans/fix-missing-includepath.patch
deleted file mode 100644
index 043d14f..0000000
--- a/recipes/xorg-lib/xtrans/fix-missing-includepath.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- xtrans-X11R7.0-1.0.0/xtrans.pc.in~fix-missing-includepath	2005-07-02 20:00:50.000000000 +0200
-+++ xtrans-X11R7.0-1.0.0/xtrans.pc.in	2006-08-11 19:27:58.000000000 +0200
-@@ -6,4 +6,4 @@
- Name: XTrans
- Description: Abstract network code for X
- Version: @PACKAGE_VERSION@
--Cflags: -I${includedir} -D_BSD_SOURCE @fchown_define@ @sticky_bit_define@
-+Cflags: -I${includedir} -I${includedir}/X11/Xtrans -D_BSD_SOURCE @fchown_define@ @sticky_bit_define@
diff --git a/recipes/xorg-lib/xtrans_1.0.3.bb b/recipes/xorg-lib/xtrans_1.0.3.bb
deleted file mode 100644
index 19a56fa..0000000
--- a/recipes/xorg-lib/xtrans_1.0.3.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "network API translation layer to insulate X applications and \
-libraries from OS network vageries."
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://fix-missing-includepath.patch"
-SRC_URI[archive.md5sum] = "bb196907ea1e182dcb396eb22f7d2c1a"
-SRC_URI[archive.sha256sum] = "e1a3c4986f16a5fbca611d0547cc7499a1fa47ca2096593644037e2609363085"
-
-FILESPATHPKG .= ":xtrans-${PV}:xtrans"
-
-ALLOW_EMPTY = "1"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes/xorg-lib/xtrans_1.0.4.bb b/recipes/xorg-lib/xtrans_1.0.4.bb
deleted file mode 100644
index d19a6c0..0000000
--- a/recipes/xorg-lib/xtrans_1.0.4.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "network API translation layer to insulate X applications and \
-libraries from OS network vageries."
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://fix-missing-includepath.patch"
-SRC_URI[archive.md5sum] = "8b36cdf08df12be96615e3d550236626"
-SRC_URI[archive.sha256sum] = "765219fa822edeffb0650e93458e4ebf63c23176e58fce06806fb251fbfe7d8c"
-
-FILESPATHPKG .= ":xtrans-${PV}:xtrans"
-
-ALLOW_EMPTY = "1"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes/xorg-lib/xtrans_1.1.bb b/recipes/xorg-lib/xtrans_1.1.bb
deleted file mode 100644
index 1f3fcb4..0000000
--- a/recipes/xorg-lib/xtrans_1.1.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "network API translation layer to insulate X applications and \
-libraries from OS network vageries."
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://fix-missing-includepath.patch"
-SRC_URI[archive.md5sum] = "8546e3a060aefb42c889eaa4b5db33af"
-SRC_URI[archive.sha256sum] = "16bc4646f105efd3d0dd105899ac19035d67acf50950ca8c70cf68772508272d"
-
-FILESPATHPKG .= ":xtrans-${PV}:xtrans"
-
-ALLOW_EMPTY = "1"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes/xorg-lib/xtrans_1.2.1.bb b/recipes/xorg-lib/xtrans_1.2.1.bb
deleted file mode 100644
index e695e35..0000000
--- a/recipes/xorg-lib/xtrans_1.2.1.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "network API translation layer to insulate X applications and \
-libraries from OS network vageries."
-RDEPENDS_${PN}-dev = ""
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "96e142331edd498a9364887b2548f1bb"
-SRC_URI[archive.sha256sum] = "9ff21a8d9ea524ca9b7cb6d6b4d522b4cb20b1c35edeb8995a9e9265a0df64bd"
-
-FILESPATHPKG .= ":xtrans-${PV}:xtrans"
-
-ALLOW_EMPTY = "1"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes/xorg-lib/xtrans_1.2.3.bb b/recipes/xorg-lib/xtrans_1.2.3.bb
deleted file mode 100644
index 1f0ec39..0000000
--- a/recipes/xorg-lib/xtrans_1.2.3.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "network API translation layer to insulate X applications and \
-libraries from OS network vageries."
-RDEPENDS_${PN}-dev = ""
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI[archive.md5sum] = "f9cf791dfad59cf044e276aab3a71e1d"
-SRC_URI[archive.sha256sum] = "a67a8b09d9530021e2bd4b93136f385e72a8d8e4f2c26a99aeb169bee88facf0"
-
-FILESPATHPKG .= ":xtrans-${PV}:xtrans"
-
-ALLOW_EMPTY = "1"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes/xorg-lib/xtrans_1.2.bb b/recipes/xorg-lib/xtrans_1.2.bb
deleted file mode 100644
index 8a4ddca..0000000
--- a/recipes/xorg-lib/xtrans_1.2.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require xorg-lib-common.inc
-DESCRIPTION = "network API translation layer to insulate X applications and \
-libraries from OS network vageries."
-PE = "1"
-PR = "${INC_PR}.0"
-
-SRC_URI += "file://fix-missing-includepath.patch"
-SRC_URI[archive.md5sum] = "a91fef8b932b21992af7dfff7b2643f3"
-SRC_URI[archive.sha256sum] = "d6c3cabd5ecd0183a8a9bc6b3471545df8e2c78956b4c4cfd48f0c545a88c9a4"
-
-FILESPATHPKG .= ":xtrans-${PV}:xtrans"
-
-ALLOW_EMPTY = "1"
-
-BBCLASSEXTEND = "native nativesdk"
-- 
1.7.2





More information about the Openembedded-devel mailing list