* Xorg upgrade and libpixman removal @ 2010-01-20 12:27 Martin Jansa 2010-01-20 12:27 ` [PATCH 1/6] cairo-native: depend on pixman-native instead libpixman-native Martin Jansa 2010-01-21 6:55 ` Xorg upgrade and libpixman removal Martin Jansa 0 siblings, 2 replies; 11+ messages in thread From: Martin Jansa @ 2010-01-20 12:27 UTC (permalink / raw) To: openembedded-devel Hi, libpixman-native and pixman "conflicts" It ends like this (libpixman-native is 0.10.0): arm-oe-linux-gnueabi-libtool: link: cannot find the library `/home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/lib/libpixman-1.la' or unhandled argument `/home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/lib/libpixman-1.la' It can be resolved by rebuilding both in right order, but libpixman was used only in cairo-native, so I moved libpixman to obsolete and added pixman-native to normal pixman recipes (Koen agreed that libpixman can be removed) Can someone test NEON on armv7? especially pixman-0.17.4/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch, because it was partially included upstream and I'm not following it as close as I should :). There is also few updates for Xorg, tested on spitz and om-gta02 (with rebuild from scratch - to use xorg-macros for all recipes). Regards, ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/6] cairo-native: depend on pixman-native instead libpixman-native 2010-01-20 12:27 Xorg upgrade and libpixman removal Martin Jansa @ 2010-01-20 12:27 ` Martin Jansa 2010-01-20 12:27 ` [PATCH 2/6] libpixman: move all to obsolete directory (replaced with pixman recipes) Martin Jansa 2010-01-21 6:55 ` Xorg upgrade and libpixman removal Martin Jansa 1 sibling, 1 reply; 11+ messages in thread From: Martin Jansa @ 2010-01-20 12:27 UTC (permalink / raw) To: openembedded-devel Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> --- recipes/cairo/cairo-native_1.8.0.bb | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/cairo/cairo-native_1.8.0.bb b/recipes/cairo/cairo-native_1.8.0.bb index c575cdc..d58e16b 100644 --- a/recipes/cairo/cairo-native_1.8.0.bb +++ b/recipes/cairo/cairo-native_1.8.0.bb @@ -3,8 +3,7 @@ require cairo_1.8.0.bb inherit native -DEPENDS += "glib-2.0-native libpng-native libpixman-native libx11-native fontconfig-native" +DEPENDS += "glib-2.0-native libpng-native pixman-native libx11-native fontconfig-native" PROVIDES = "cairo-native" -PR = "r0" - +PR = "r1" -- 1.6.6 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/6] libpixman: move all to obsolete directory (replaced with pixman recipes) 2010-01-20 12:27 ` [PATCH 1/6] cairo-native: depend on pixman-native instead libpixman-native Martin Jansa @ 2010-01-20 12:27 ` Martin Jansa 2010-01-20 12:27 ` [PATCH 3/6] pixman_0.16.2: drop DEFAULT_PREFERENCE = -1 and add BBCLASSEXTEND=native (pixman-native used in cairo-native) Martin Jansa 0 siblings, 1 reply; 11+ messages in thread From: Martin Jansa @ 2010-01-20 12:27 UTC (permalink / raw) To: openembedded-devel Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> --- recipes/libpixman/libpixman-native_0.12.0.bb | 6 ------ recipes/libpixman/libpixman_0.1.5.bb | 12 ------------ recipes/libpixman/libpixman_0.1.6.bb | 12 ------------ recipes/libpixman/libpixman_0.10.0.bb | 13 ------------- recipes/libpixman/libpixman_0.9.6.bb | 13 ------------- recipes/libpixman/libpixman_cvs.bb | 16 ---------------- .../obsolete/libpixman/libpixman-native_0.12.0.bb | 6 ++++++ recipes/obsolete/libpixman/libpixman_0.1.5.bb | 12 ++++++++++++ recipes/obsolete/libpixman/libpixman_0.1.6.bb | 12 ++++++++++++ recipes/obsolete/libpixman/libpixman_0.10.0.bb | 13 +++++++++++++ recipes/obsolete/libpixman/libpixman_0.9.6.bb | 13 +++++++++++++ recipes/obsolete/libpixman/libpixman_cvs.bb | 16 ++++++++++++++++ 12 files changed, 72 insertions(+), 72 deletions(-) delete mode 100644 recipes/libpixman/libpixman-native_0.12.0.bb delete mode 100644 recipes/libpixman/libpixman_0.1.5.bb delete mode 100644 recipes/libpixman/libpixman_0.1.6.bb delete mode 100644 recipes/libpixman/libpixman_0.10.0.bb delete mode 100644 recipes/libpixman/libpixman_0.9.6.bb delete mode 100644 recipes/libpixman/libpixman_cvs.bb create mode 100644 recipes/obsolete/libpixman/libpixman-native_0.12.0.bb create mode 100644 recipes/obsolete/libpixman/libpixman_0.1.5.bb create mode 100644 recipes/obsolete/libpixman/libpixman_0.1.6.bb create mode 100644 recipes/obsolete/libpixman/libpixman_0.10.0.bb create mode 100644 recipes/obsolete/libpixman/libpixman_0.9.6.bb create mode 100644 recipes/obsolete/libpixman/libpixman_cvs.bb diff --git a/recipes/libpixman/libpixman-native_0.12.0.bb b/recipes/libpixman/libpixman-native_0.12.0.bb deleted file mode 100644 index 808cc86..0000000 --- a/recipes/libpixman/libpixman-native_0.12.0.bb +++ /dev/null @@ -1,6 +0,0 @@ -require libpixman_0.10.0.bb - -inherit native - -PROVIDES = "libpixman-native" - diff --git a/recipes/libpixman/libpixman_0.1.5.bb b/recipes/libpixman/libpixman_0.1.5.bb deleted file mode 100644 index bf23947..0000000 --- a/recipes/libpixman/libpixman_0.1.5.bb +++ /dev/null @@ -1,12 +0,0 @@ -SECTION = "libs" -PRIORITY = "optional" -DEPENDS = "virtual/libx11" -DESCRIPTION = "Cairo support library" -LICENSE = "X11" -SRC_URI = "http://cairographics.org/snapshots/libpixman-${PV}.tar.gz" - -inherit autotools pkgconfig - -do_stage () { - autotools_stage_all -} diff --git a/recipes/libpixman/libpixman_0.1.6.bb b/recipes/libpixman/libpixman_0.1.6.bb deleted file mode 100644 index bf23947..0000000 --- a/recipes/libpixman/libpixman_0.1.6.bb +++ /dev/null @@ -1,12 +0,0 @@ -SECTION = "libs" -PRIORITY = "optional" -DEPENDS = "virtual/libx11" -DESCRIPTION = "Cairo support library" -LICENSE = "X11" -SRC_URI = "http://cairographics.org/snapshots/libpixman-${PV}.tar.gz" - -inherit autotools pkgconfig - -do_stage () { - autotools_stage_all -} diff --git a/recipes/libpixman/libpixman_0.10.0.bb b/recipes/libpixman/libpixman_0.10.0.bb deleted file mode 100644 index fba7dc9..0000000 --- a/recipes/libpixman/libpixman_0.10.0.bb +++ /dev/null @@ -1,13 +0,0 @@ -SECTION = "libs" -PRIORITY = "optional" -DESCRIPTION = "Low-level pixel manipulation library." -LICENSE = "X11" -SRC_URI = "http://cairographics.org/releases/pixman-${PV}.tar.gz" -S = "${WORKDIR}/pixman-${PV}" - -inherit autotools pkgconfig - -do_stage () { - autotools_stage_all -} - diff --git a/recipes/libpixman/libpixman_0.9.6.bb b/recipes/libpixman/libpixman_0.9.6.bb deleted file mode 100644 index fba7dc9..0000000 --- a/recipes/libpixman/libpixman_0.9.6.bb +++ /dev/null @@ -1,13 +0,0 @@ -SECTION = "libs" -PRIORITY = "optional" -DESCRIPTION = "Low-level pixel manipulation library." -LICENSE = "X11" -SRC_URI = "http://cairographics.org/releases/pixman-${PV}.tar.gz" -S = "${WORKDIR}/pixman-${PV}" - -inherit autotools pkgconfig - -do_stage () { - autotools_stage_all -} - diff --git a/recipes/libpixman/libpixman_cvs.bb b/recipes/libpixman/libpixman_cvs.bb deleted file mode 100644 index a75a284..0000000 --- a/recipes/libpixman/libpixman_cvs.bb +++ /dev/null @@ -1,16 +0,0 @@ -PV = "0.0+cvs${SRCDATE}" -SECTION = "libs" -PRIORITY = "optional" -DEPENDS = "virtual/libx11" -DESCRIPTION = "Cairo support library" -LICENSE = "X11" -SRC_URI = "cvs://anoncvs:anoncvs@cvs.cairographics.org/cvs/cairo;module=libpixman" -S = "${WORKDIR}/libpixman" - -DEFAULT_PREFERENCE = "-1" - -inherit autotools pkgconfig - -do_stage () { - autotools_stage_all -} diff --git a/recipes/obsolete/libpixman/libpixman-native_0.12.0.bb b/recipes/obsolete/libpixman/libpixman-native_0.12.0.bb new file mode 100644 index 0000000..808cc86 --- /dev/null +++ b/recipes/obsolete/libpixman/libpixman-native_0.12.0.bb @@ -0,0 +1,6 @@ +require libpixman_0.10.0.bb + +inherit native + +PROVIDES = "libpixman-native" + diff --git a/recipes/obsolete/libpixman/libpixman_0.1.5.bb b/recipes/obsolete/libpixman/libpixman_0.1.5.bb new file mode 100644 index 0000000..bf23947 --- /dev/null +++ b/recipes/obsolete/libpixman/libpixman_0.1.5.bb @@ -0,0 +1,12 @@ +SECTION = "libs" +PRIORITY = "optional" +DEPENDS = "virtual/libx11" +DESCRIPTION = "Cairo support library" +LICENSE = "X11" +SRC_URI = "http://cairographics.org/snapshots/libpixman-${PV}.tar.gz" + +inherit autotools pkgconfig + +do_stage () { + autotools_stage_all +} diff --git a/recipes/obsolete/libpixman/libpixman_0.1.6.bb b/recipes/obsolete/libpixman/libpixman_0.1.6.bb new file mode 100644 index 0000000..bf23947 --- /dev/null +++ b/recipes/obsolete/libpixman/libpixman_0.1.6.bb @@ -0,0 +1,12 @@ +SECTION = "libs" +PRIORITY = "optional" +DEPENDS = "virtual/libx11" +DESCRIPTION = "Cairo support library" +LICENSE = "X11" +SRC_URI = "http://cairographics.org/snapshots/libpixman-${PV}.tar.gz" + +inherit autotools pkgconfig + +do_stage () { + autotools_stage_all +} diff --git a/recipes/obsolete/libpixman/libpixman_0.10.0.bb b/recipes/obsolete/libpixman/libpixman_0.10.0.bb new file mode 100644 index 0000000..fba7dc9 --- /dev/null +++ b/recipes/obsolete/libpixman/libpixman_0.10.0.bb @@ -0,0 +1,13 @@ +SECTION = "libs" +PRIORITY = "optional" +DESCRIPTION = "Low-level pixel manipulation library." +LICENSE = "X11" +SRC_URI = "http://cairographics.org/releases/pixman-${PV}.tar.gz" +S = "${WORKDIR}/pixman-${PV}" + +inherit autotools pkgconfig + +do_stage () { + autotools_stage_all +} + diff --git a/recipes/obsolete/libpixman/libpixman_0.9.6.bb b/recipes/obsolete/libpixman/libpixman_0.9.6.bb new file mode 100644 index 0000000..fba7dc9 --- /dev/null +++ b/recipes/obsolete/libpixman/libpixman_0.9.6.bb @@ -0,0 +1,13 @@ +SECTION = "libs" +PRIORITY = "optional" +DESCRIPTION = "Low-level pixel manipulation library." +LICENSE = "X11" +SRC_URI = "http://cairographics.org/releases/pixman-${PV}.tar.gz" +S = "${WORKDIR}/pixman-${PV}" + +inherit autotools pkgconfig + +do_stage () { + autotools_stage_all +} + diff --git a/recipes/obsolete/libpixman/libpixman_cvs.bb b/recipes/obsolete/libpixman/libpixman_cvs.bb new file mode 100644 index 0000000..a75a284 --- /dev/null +++ b/recipes/obsolete/libpixman/libpixman_cvs.bb @@ -0,0 +1,16 @@ +PV = "0.0+cvs${SRCDATE}" +SECTION = "libs" +PRIORITY = "optional" +DEPENDS = "virtual/libx11" +DESCRIPTION = "Cairo support library" +LICENSE = "X11" +SRC_URI = "cvs://anoncvs:anoncvs@cvs.cairographics.org/cvs/cairo;module=libpixman" +S = "${WORKDIR}/libpixman" + +DEFAULT_PREFERENCE = "-1" + +inherit autotools pkgconfig + +do_stage () { + autotools_stage_all +} -- 1.6.6 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/6] pixman_0.16.2: drop DEFAULT_PREFERENCE = -1 and add BBCLASSEXTEND=native (pixman-native used in cairo-native) 2010-01-20 12:27 ` [PATCH 2/6] libpixman: move all to obsolete directory (replaced with pixman recipes) Martin Jansa @ 2010-01-20 12:27 ` Martin Jansa 2010-01-20 12:27 ` [PATCH 4/6] pixman: add version 0.17.4 with neon patches Martin Jansa 0 siblings, 1 reply; 11+ messages in thread From: Martin Jansa @ 2010-01-20 12:27 UTC (permalink / raw) To: openembedded-devel Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> --- recipes/xorg-lib/pixman_0.16.2.bb | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/recipes/xorg-lib/pixman_0.16.2.bb b/recipes/xorg-lib/pixman_0.16.2.bb index 2517f8f..1a15ac4 100644 --- a/recipes/xorg-lib/pixman_0.16.2.bb +++ b/recipes/xorg-lib/pixman_0.16.2.bb @@ -3,7 +3,9 @@ PRIORITY = "optional" DESCRIPTION = "Low-level pixel manipulation library." LICENSE = "X11" -DEFAULT_PREFERENCE = "-1" +PR = "r1" + +BBCLASSEXTEND="native" SRC_URI = "http://cairographics.org/releases/pixman-${PV}.tar.gz \ " -- 1.6.6 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/6] pixman: add version 0.17.4 with neon patches 2010-01-20 12:27 ` [PATCH 3/6] pixman_0.16.2: drop DEFAULT_PREFERENCE = -1 and add BBCLASSEXTEND=native (pixman-native used in cairo-native) Martin Jansa @ 2010-01-20 12:27 ` Martin Jansa 2010-01-20 12:27 ` [PATCH 5/6] pixman_git: add BBCLASSEXTEND=native (pixman-native used in cairo-native) Martin Jansa 2010-02-05 10:02 ` [PATCH 4/6] pixman: add version 0.17.4 with neon patches Koen Kooi 0 siblings, 2 replies; 11+ messages in thread From: Martin Jansa @ 2010-01-20 12:27 UTC (permalink / raw) To: openembedded-devel Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> --- ...Dropped-delegation-support-for-pixman_blt.patch | 356 ++++++++++++++++++++ ...0002-Test-program-for-pixman_blt-function.patch | 178 ++++++++++ ...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.4.bb | 29 ++ 7 files changed, 953 insertions(+), 0 deletions(-) create mode 100644 recipes/xorg-lib/pixman-0.17.4/0001-Dropped-delegation-support-for-pixman_blt.patch create mode 100644 recipes/xorg-lib/pixman-0.17.4/0002-Test-program-for-pixman_blt-function.patch create mode 100644 recipes/xorg-lib/pixman-0.17.4/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch create mode 100644 recipes/xorg-lib/pixman-0.17.4/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch create mode 100644 recipes/xorg-lib/pixman-0.17.4/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch create mode 100644 recipes/xorg-lib/pixman-0.17.4/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch create mode 100644 recipes/xorg-lib/pixman_0.17.4.bb diff --git a/recipes/xorg-lib/pixman-0.17.4/0001-Dropped-delegation-support-for-pixman_blt.patch b/recipes/xorg-lib/pixman-0.17.4/0001-Dropped-delegation-support-for-pixman_blt.patch new file mode 100644 index 0000000..d52ee35 --- /dev/null +++ b/recipes/xorg-lib/pixman-0.17.4/0001-Dropped-delegation-support-for-pixman_blt.patch @@ -0,0 +1,356 @@ +From c4ce33821e2340ff95e30fce5758013287172d52 Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Wed, 21 Oct 2009 23:48:43 +0000 +Subject: Dropped delegation support for 'pixman_blt' + +Function 'pixman_blt' is too simple and hardly needs any +delegation. This reduces call overhead somewhat. The saving +is minor, but every little bit helps. +--- +diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c +index efeabeb..c8c5579 100644 +--- a/pixman/pixman-arm-neon.c ++++ b/pixman/pixman-arm-neon.c +@@ -470,35 +470,6 @@ arm_neon_composite (pixman_implementation_t *imp, + } + + 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 _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); +- } +- +- return TRUE; +-} +- +-static pixman_bool_t + arm_neon_fill (pixman_implementation_t *imp, + uint32_t * bits, + int stride, +@@ -556,7 +527,7 @@ _pixman_implementation_create_arm_neon (void) + imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u; + + imp->composite = arm_neon_composite; +- imp->blt = arm_neon_blt; ++ imp->blt = pixman_blt_neon; + imp->fill = arm_neon_fill; + + return imp; +diff --git a/pixman/pixman-arm-simd.c b/pixman/pixman-arm-simd.c +index 4795246..11c5f1b 100644 +--- a/pixman/pixman-arm-simd.c ++++ b/pixman/pixman-arm-simd.c +@@ -480,6 +480,7 @@ _pixman_implementation_create_arm_simd (void) + pixman_implementation_t *imp = _pixman_implementation_create (general); + + imp->composite = arm_simd_composite; ++ imp->blt = general->blt; + + return imp; + } +diff --git a/pixman/pixman-fast-path.c b/pixman/pixman-fast-path.c +index 75a0c1e..8da6b1f 100644 +--- a/pixman/pixman-fast-path.c ++++ b/pixman/pixman-fast-path.c +@@ -1690,6 +1690,7 @@ _pixman_implementation_create_fast_path (void) + pixman_implementation_t *imp = _pixman_implementation_create (general); + + imp->composite = fast_path_composite; ++ imp->blt = general->blt; + imp->fill = fast_path_fill; + + return imp; +diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c +index c96a3f9..c3f96f9 100644 +--- a/pixman/pixman-general.c ++++ b/pixman/pixman-general.c +@@ -286,8 +286,7 @@ general_composite (pixman_implementation_t * imp, + } + + static pixman_bool_t +-general_blt (pixman_implementation_t *imp, +- uint32_t * src_bits, ++general_blt (uint32_t * src_bits, + uint32_t * dst_bits, + int src_stride, + int dst_stride, +diff --git a/pixman/pixman-implementation.c b/pixman/pixman-implementation.c +index 6488332..0520e36 100644 +--- a/pixman/pixman-implementation.c ++++ b/pixman/pixman-implementation.c +@@ -100,27 +100,6 @@ delegate_combine_64_ca (pixman_implementation_t * imp, + } + + static pixman_bool_t +-delegate_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) +-{ +- 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 + delegate_fill (pixman_implementation_t *imp, + uint32_t * bits, + int stride, +@@ -153,7 +132,7 @@ _pixman_implementation_create (pixman_implementation_t *delegate) + /* Fill out function pointers with ones that just delegate + */ + imp->composite = delegate_composite; +- imp->blt = delegate_blt; ++ imp->blt = NULL; + imp->fill = delegate_fill; + + for (i = 0; i < PIXMAN_N_OPERATORS; ++i) +@@ -233,26 +212,6 @@ _pixman_implementation_composite (pixman_implementation_t * imp, + } + + pixman_bool_t +-_pixman_implementation_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) +-{ +- return (*imp->blt) (imp, src_bits, dst_bits, src_stride, dst_stride, +- src_bpp, dst_bpp, src_x, src_y, dst_x, dst_y, +- width, height); +-} +- +-pixman_bool_t + _pixman_implementation_fill (pixman_implementation_t *imp, + uint32_t * bits, + int stride, +diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c +index b1591d9..a3080b6 100644 +--- a/pixman/pixman-mmx.c ++++ b/pixman/pixman-mmx.c +@@ -3318,35 +3318,6 @@ mmx_composite (pixman_implementation_t *imp, + } + + static pixman_bool_t +-mmx_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_mmx ( +- src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, +- src_x, src_y, dst_x, dst_y, width, height)) +- +- { +- 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); +- } +- +- return TRUE; +-} +- +-static pixman_bool_t + mmx_fill (pixman_implementation_t *imp, + uint32_t * bits, + int stride, +@@ -3397,7 +3368,7 @@ _pixman_implementation_create_mmx (void) + imp->combine_32_ca[PIXMAN_OP_ADD] = mmx_combine_add_ca; + + imp->composite = mmx_composite; +- imp->blt = mmx_blt; ++ imp->blt = pixman_blt_mmx; + imp->fill = mmx_fill; + + return imp; +diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h +index c99f2a2..209cba4 100644 +--- a/pixman/pixman-private.h ++++ b/pixman/pixman-private.h +@@ -399,8 +399,7 @@ typedef void (*pixman_composite_func_t) (pixman_implementation_t *imp, + int32_t dest_y, + int32_t width, + int32_t height); +-typedef pixman_bool_t (*pixman_blt_func_t) (pixman_implementation_t *imp, +- uint32_t * src_bits, ++typedef pixman_bool_t (*pixman_blt_func_t) (uint32_t * src_bits, + uint32_t * dst_bits, + int src_stride, + int dst_stride, +diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c +index 1f8aa6e..8c2e114 100644 +--- a/pixman/pixman-sse2.c ++++ b/pixman/pixman-sse2.c +@@ -5893,8 +5893,7 @@ sse2_composite (pixman_implementation_t *imp, + __attribute__((__force_align_arg_pointer__)) + #endif + static pixman_bool_t +-sse2_blt (pixman_implementation_t *imp, +- uint32_t * src_bits, ++sse2_blt (uint32_t * src_bits, + uint32_t * dst_bits, + int src_stride, + int dst_stride, +@@ -5907,18 +5906,9 @@ sse2_blt (pixman_implementation_t *imp, + int width, + int height) + { +- if (!pixman_blt_sse2 ( ++ return pixman_blt_sse2 ( + src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, +- src_x, src_y, dst_x, dst_y, width, height)) +- +- { +- 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); +- } +- +- return TRUE; ++ src_x, src_y, dst_x, dst_y, width, height); + } + + #if defined(__GNUC__) && !defined(__x86_64__) && !defined(__amd64__) +diff --git a/pixman/pixman-vmx.c b/pixman/pixman-vmx.c +index 06325a7..e31bcb3 100644 +--- a/pixman/pixman-vmx.c ++++ b/pixman/pixman-vmx.c +@@ -1615,6 +1615,8 @@ _pixman_implementation_create_vmx (void) + + /* Set up function pointers */ + ++ imp->blt = fast->blt; ++ + imp->combine_32[PIXMAN_OP_OVER] = vmx_combine_over_u; + imp->combine_32[PIXMAN_OP_OVER_REVERSE] = vmx_combine_over_reverse_u; + imp->combine_32[PIXMAN_OP_IN] = vmx_combine_in_u; +diff --git a/pixman/pixman.c b/pixman/pixman.c +index 0edd967..07ad767 100644 +--- a/pixman/pixman.c ++++ b/pixman/pixman.c +@@ -57,6 +57,22 @@ static const optimized_operator_info_t optimized_operators[] = + + static pixman_implementation_t *imp; + ++static pixman_bool_t ++pixman_blt_stub (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); ++ ++static pixman_blt_func_t pixman_blt_imp = pixman_blt_stub; ++ + /* + * Check if the current operator could be optimized + */ +@@ -216,6 +232,31 @@ pixman_image_composite (pixman_op_t op, + unapply_workaround (dest, dest_bits, dest_dx, dest_dy); + } + ++static pixman_bool_t ++pixman_blt_stub (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 (!imp) ++ imp = _pixman_choose_implementation (); ++ ++ pixman_blt_imp = imp->blt; ++ return pixman_blt_imp (src_bits, dst_bits, src_stride, dst_stride, ++ src_bpp, dst_bpp, ++ src_x, src_y, ++ dst_x, dst_y, ++ width, height); ++} ++ + PIXMAN_EXPORT pixman_bool_t + pixman_blt (uint32_t *src_bits, + uint32_t *dst_bits, +@@ -230,14 +271,11 @@ pixman_blt (uint32_t *src_bits, + int width, + int height) + { +- if (!imp) +- imp = _pixman_choose_implementation (); +- +- return _pixman_implementation_blt (imp, src_bits, dst_bits, src_stride, dst_stride, +- src_bpp, dst_bpp, +- src_x, src_y, +- dst_x, dst_y, +- width, height); ++ return pixman_blt_imp (src_bits, dst_bits, src_stride, dst_stride, ++ src_bpp, dst_bpp, ++ src_x, src_y, ++ dst_x, dst_y, ++ width, height); + } + + PIXMAN_EXPORT pixman_bool_t +-- +cgit v0.8.3-6-g21f6 diff --git a/recipes/xorg-lib/pixman-0.17.4/0002-Test-program-for-pixman_blt-function.patch b/recipes/xorg-lib/pixman-0.17.4/0002-Test-program-for-pixman_blt-function.patch new file mode 100644 index 0000000..ba62b88 --- /dev/null +++ b/recipes/xorg-lib/pixman-0.17.4/0002-Test-program-for-pixman_blt-function.patch @@ -0,0 +1,178 @@ +From 364406e03f9651aacb1bc684de6c00a27f9df66d Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Mon, 19 Oct 2009 20:32:55 +0300 +Subject: [PATCH 2/6] Test program for pixman_blt function + +It can do some basic correctness tests and also check whether +overlapping of source and destination images is supported. +--- + test/Makefile.am | 2 + + test/overlapped-blt-test.c | 136 ++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 138 insertions(+), 0 deletions(-) + create mode 100644 test/overlapped-blt-test.c + +diff --git a/test/Makefile.am b/test/Makefile.am +index 89d32e9..40c305f 100644 +--- a/test/Makefile.am ++++ b/test/Makefile.am +@@ -6,6 +6,7 @@ + fetch-test \ + oob-test \ + window-test \ ++ overlapped-blt-test \ + trap-crasher \ + alphamap \ + blitters-test \ +@@ -18,6 +19,7 @@ + trap_crasher_LDADD = $(TEST_LDADD) + oob_test_LDADD = $(TEST_LDADD) + window_test_LDADD = $(TEST_LDADD) ++overlapped_blt_test_LDADD = $(TEST_LDADD) + + blitters_test_LDADD = $(TEST_LDADD) + blitters_test_SOURCES = blitters-test.c utils.c utils.h +diff --git a/test/overlapped-blt-test.c b/test/overlapped-blt-test.c +new file mode 100644 +index 0000000..95fbc54 +--- /dev/null ++++ b/test/overlapped-blt-test.c +@@ -0,0 +1,136 @@ ++/* ++ * A small test program which can check whether pixman_blt function ++ * can support overlapping of source and destination images. ++ * Efficient blit with overlapping is useful for scrolling. ++ */ ++ ++#include <stdint.h> ++#include <stdio.h> ++#include <stdlib.h> ++#include <string.h> ++#include "pixman.h" ++ ++/* reference implementation (slow) */ ++static void ++trivial_copy8_2d ( ++ uint8_t *dst, int dst_stride, ++ uint8_t *src, int src_stride, ++ int dx, int dy, int sx, int sy, ++ int w, int h) ++{ ++ int x, y; ++ uint8_t *tmp = malloc (src_stride * (sy + h)); ++ memcpy (tmp, src, src_stride * (sy + h)); ++ for (y = 0; y < h; y++) ++ { ++ for (x = 0; x < w; x++) ++ { ++ *(dst + (dy + y) * dst_stride + dx + x) = ++ *(tmp + (sy + y) * src_stride + sx + x); ++ } ++ } ++ free (tmp); ++} ++ ++static void ++trivial_copy_2d ( ++ uint8_t *dst, int dst_stride, ++ uint8_t *src, int src_stride, ++ int dx, int dy, int sx, int sy, ++ int w, int h, int bpp) ++{ ++ trivial_copy8_2d (dst, dst_stride, src, src_stride, ++ dx * (bpp / 8), dy, sx * (bpp / 8), sy, w * (bpp / 8), h); ++} ++ ++/* now the test itself */ ++ ++#define ST_UNSUPPORTED 1 ++#define ST_NORMAL_BUG 2 ++#define ST_OVERLAPPED_BUG 4 ++ ++#define MAX_SIZE_X 64 ++#define MAX_SIZE_Y 64 ++ ++static void print_result(int bpp, int flags) ++{ ++ printf("bpp=%d, supported=%d, normal_ok=%d, overlapped_ok=%d\n", ++ bpp, ++ !(flags & ST_UNSUPPORTED), ++ !(flags & ST_NORMAL_BUG), ++ !(flags & ST_OVERLAPPED_BUG)); ++} ++ ++int main() ++{ ++ int c = 100000, r; ++ int bpp_st[33] = {0}; ++ srand(0); ++ while (c-- > 0) ++ { ++ uint8_t *src1, *src2, *src3; ++ int i; ++ int sizex = rand() % MAX_SIZE_X + 1; ++ int sizey = rand() % MAX_SIZE_Y + 1; ++ int sx = rand() % sizex; ++ int sy = rand() % sizey; ++ int dx = rand() % sizex; ++ int dy = rand() % sizey; ++ int w = rand() % sizex; ++ int h = rand() % sizex; ++ int bpp = 8 * (1 << (rand() % 3)); ++ int stride_delta = rand() % 8; ++ int bufsize; ++ if ((sizex + stride_delta) % 4) ++ stride_delta += 4 - ((sizex + stride_delta) % 4); ++ bufsize = (sizex + stride_delta) * sizey * bpp / 8; ++ src1 = malloc (bufsize); ++ src2 = malloc (bufsize); ++ src3 = malloc (bufsize); ++ for (i = 0; i < bufsize; i++) ++ src1[i] = rand(); ++ memcpy (src2, src1, bufsize); ++ memcpy (src3, src1, bufsize); ++ if (sx + w > sizex) ++ w = sizex - sx; ++ if (dx + w > sizex) ++ w = sizex - dx; ++ if (sy + h > sizey) ++ h = sizey - sy; ++ if (dy + h > sizey) ++ h = sizey - dy; ++ /* get reference result */ ++ trivial_copy_2d (src1, (sizex + stride_delta) * bpp / 8, ++ src1, (sizex + stride_delta) * bpp / 8, ++ dx, dy, sx, sy, w, h, bpp); ++ /* check nonoverlapped pixman result */ ++ r = pixman_blt ((uint32_t *)src3, (uint32_t *)src2, ++ (sizex + stride_delta) * bpp / 8 / 4, ++ (sizex + stride_delta) * bpp / 8 / 4, ++ bpp, bpp, sx, sy, dx, dy, w, h); ++ if (!r) ++ bpp_st[bpp] |= ST_UNSUPPORTED; ++ if (memcmp (src1, src2, bufsize) != 0) ++ bpp_st[bpp] |= ST_NORMAL_BUG; ++ /* check overlapped pixman result */ ++ r = pixman_blt ((uint32_t *)src3, (uint32_t *)src3, ++ (sizex + stride_delta) * bpp / 8 / 4, ++ (sizex + stride_delta) * bpp / 8 / 4, ++ bpp, bpp, sx, sy, dx, dy, w, h); ++ if (!r) ++ bpp_st[bpp] |= ST_UNSUPPORTED; ++ if (memcmp (src1, src3, bufsize) != 0) ++ bpp_st[bpp] |= ST_OVERLAPPED_BUG; ++ /* free buffers */ ++ free (src1); ++ free (src2); ++ free (src3); ++ } ++ ++ /* report results */ ++ print_result (8, bpp_st[8]); ++ print_result (16, bpp_st[16]); ++ print_result (32, bpp_st[32]); ++ ++ return 0; ++} +-- +1.6.2.4 + diff --git a/recipes/xorg-lib/pixman-0.17.4/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/recipes/xorg-lib/pixman-0.17.4/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch new file mode 100644 index 0000000..25ce7ee --- /dev/null +++ b/recipes/xorg-lib/pixman-0.17.4/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@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.4/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/recipes/xorg-lib/pixman-0.17.4/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch new file mode 100644 index 0000000..74c7b45 --- /dev/null +++ b/recipes/xorg-lib/pixman-0.17.4/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@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.4/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/recipes/xorg-lib/pixman-0.17.4/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch new file mode 100644 index 0000000..3704fbf --- /dev/null +++ b/recipes/xorg-lib/pixman-0.17.4/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@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.4/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/recipes/xorg-lib/pixman-0.17.4/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch new file mode 100644 index 0000000..7c22483 --- /dev/null +++ b/recipes/xorg-lib/pixman-0.17.4/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@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.4.bb b/recipes/xorg-lib/pixman_0.17.4.bb new file mode 100644 index 0000000..b648219 --- /dev/null +++ b/recipes/xorg-lib/pixman_0.17.4.bb @@ -0,0 +1,29 @@ +SECTION = "libs" +PRIORITY = "optional" +DESCRIPTION = "Low-level pixel manipulation library." +LICENSE = "X11" + +DEFAULT_PREFERENCE = "-1" +DEFAULT_PREFERENCE_angstrom = "1" +DEFAULT_PREFERENCE_shr = "1" + +BBCLASSEXTEND="native" + +SRC_URI = "http://cairographics.org/releases/pixman-${PV}.tar.gz \ + file://0001-Dropped-delegation-support-for-pixman_blt.patch;patch=1 \ + file://0002-Test-program-for-pixman_blt-function.patch;patch=1 \ + file://0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch;patch=1 \ + file://0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch;patch=1 \ + file://0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch;patch=1 \ + file://0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch;patch=1 \ + " + +inherit autotools_stage + +NEON = " --disable-arm-neon " +NEON_armv7a = "" + +EXTRA_OECONF = "${NEON}" + +AUTOTOOLS_STAGE_PKGCONFIG = "1" + -- 1.6.6 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 5/6] pixman_git: add BBCLASSEXTEND=native (pixman-native used in cairo-native) 2010-01-20 12:27 ` [PATCH 4/6] pixman: add version 0.17.4 with neon patches Martin Jansa @ 2010-01-20 12:27 ` Martin Jansa 2010-01-20 12:27 ` [PATCH 6/6] xorg: update recipes to latest releases 2010-01-18 Martin Jansa 2010-02-05 10:02 ` [PATCH 4/6] pixman: add version 0.17.4 with neon patches Koen Kooi 1 sibling, 1 reply; 11+ messages in thread From: Martin Jansa @ 2010-01-20 12:27 UTC (permalink / raw) To: openembedded-devel Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> --- recipes/xorg-lib/pixman_git.bb | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/recipes/xorg-lib/pixman_git.bb b/recipes/xorg-lib/pixman_git.bb index 1b5ca63..0c3008d 100644 --- a/recipes/xorg-lib/pixman_git.bb +++ b/recipes/xorg-lib/pixman_git.bb @@ -4,9 +4,11 @@ DESCRIPTION = "Low-level pixel manipulation library." LICENSE = "X11" PV = "0.17.3" -PR = "r4" +PR = "r5" PR_append = "+gitr${SRCREV}" +BBCLASSEXTEND="native" + SRCREV = "c97b1e803fc214e9880eaeff98410c8fa37f9ddc" DEFAULT_PREFERENCE = "-1" -- 1.6.6 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 6/6] xorg: update recipes to latest releases 2010-01-18 2010-01-20 12:27 ` [PATCH 5/6] pixman_git: add BBCLASSEXTEND=native (pixman-native used in cairo-native) Martin Jansa @ 2010-01-20 12:27 ` Martin Jansa 0 siblings, 0 replies; 11+ messages in thread From: Martin Jansa @ 2010-01-20 12:27 UTC (permalink / raw) To: openembedded-devel Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> --- .../include/preferred-xorg-versions-live.inc | 29 ++++++++--------- recipes/dri/libdrm_2.4.17.bb | 16 +++++++++ recipes/xorg-app/xvidtune_1.0.2.bb | 6 +++ recipes/xorg-driver/xf86-video-intel_2.10.0.bb | 5 +++ recipes/xorg-driver/xf86-video-vesa_2.3.0.bb | 2 + recipes/xorg-driver/xf86-video-vmware_10.16.9.bb | 6 +++ .../libx11-1.3.3/x11_disable_makekeys.patch | 23 ++++++++++++++ recipes/xorg-lib/libx11-native_1.3.3.bb | 10 ++++++ recipes/xorg-lib/libx11_1.3.3.bb | 33 ++++++++++++++++++++ recipes/xorg-proto/dri2proto_2.2.bb | 3 ++ recipes/xorg-proto/glproto_1.4.11.bb | 4 ++ recipes/xorg-util/util-macros-native_1.5.0.bb | 7 ++++ recipes/xorg-util/util-macros_1.5.0.bb | 6 +++ ...ack-assume-pixman-supports-overlapped-blt.patch | 14 ++++++++ recipes/xorg-xserver/xserver-xorg_1.7.4.bb | 25 +++++++++++++++ 15 files changed, 173 insertions(+), 16 deletions(-) create mode 100644 recipes/dri/libdrm_2.4.17.bb create mode 100644 recipes/xorg-app/xvidtune_1.0.2.bb create mode 100644 recipes/xorg-driver/xf86-video-intel_2.10.0.bb create mode 100644 recipes/xorg-driver/xf86-video-vesa_2.3.0.bb create mode 100644 recipes/xorg-driver/xf86-video-vmware_10.16.9.bb create mode 100644 recipes/xorg-lib/libx11-1.3.3/x11_disable_makekeys.patch create mode 100644 recipes/xorg-lib/libx11-native_1.3.3.bb create mode 100644 recipes/xorg-lib/libx11_1.3.3.bb create mode 100644 recipes/xorg-proto/dri2proto_2.2.bb create mode 100644 recipes/xorg-proto/glproto_1.4.11.bb create mode 100644 recipes/xorg-util/util-macros-native_1.5.0.bb create mode 100644 recipes/xorg-util/util-macros_1.5.0.bb create mode 100644 recipes/xorg-xserver/xserver-xorg-1.7.4/hack-assume-pixman-supports-overlapped-blt.patch create mode 100644 recipes/xorg-xserver/xserver-xorg_1.7.4.bb diff --git a/conf/distro/include/preferred-xorg-versions-live.inc b/conf/distro/include/preferred-xorg-versions-live.inc index bea2b41..65e94fa 100644 --- a/conf/distro/include/preferred-xorg-versions-live.inc +++ b/conf/distro/include/preferred-xorg-versions-live.inc @@ -1,4 +1,4 @@ -#Thu Dec 31 14:54:51 CET 2009 +#Mon Jan 18 14:00:56 CET 2010 #app PREFERRED_VERSION_appres ?= "1.0.2" PREFERRED_VERSION_bdftopcf ?= "1.0.2" @@ -98,7 +98,7 @@ PREFERRED_VERSION_xsetroot ?= "1.0.3" PREFERRED_VERSION_xsm ?= "1.0.1" PREFERRED_VERSION_xstdcmap ?= "1.0.1" PREFERRED_VERSION_xtrap ?= "1.0.2" -PREFERRED_VERSION_xvidtune ?= "1.0.1" +PREFERRED_VERSION_xvidtune ?= "1.0.2" PREFERRED_VERSION_xvinfo ?= "1.1.0" PREFERRED_VERSION_xwd ?= "1.0.3" PREFERRED_VERSION_xwininfo ?= "1.0.5" @@ -156,8 +156,7 @@ PREFERRED_VERSION_xf86-video-i740 ?= "1.3.2" PREFERRED_VERSION_xf86-video-i810 ?= "1.7.4" PREFERRED_VERSION_xf86-video-impact ?= "0.2.0" PREFERRED_VERSION_xf86-video-imstt ?= "1.1.0" -#PREFERRED_VERSION_xf86-video-intel ?= "2.9.99.902" -PREFERRED_VERSION_xf86-video-intel ?= "2.9.1" +PREFERRED_VERSION_xf86-video-intel ?= "2.10.0" PREFERRED_VERSION_xf86-video-mach64 ?= "6.8.2" PREFERRED_VERSION_xf86-video-mga ?= "1.9.100" PREFERRED_VERSION_xf86-video-neomagic ?= "1.2.4" @@ -187,11 +186,10 @@ PREFERRED_VERSION_xf86-video-trident ?= "1.3.3" PREFERRED_VERSION_xf86-video-tseng ?= "1.2.3" PREFERRED_VERSION_xf86-video-v4l ?= "0.2.0" PREFERRED_VERSION_xf86-video-vermilion ?= "1.0.1" -PREFERRED_VERSION_xf86-video-vesa ?= "2.2.1" +PREFERRED_VERSION_xf86-video-vesa ?= "2.3.0" PREFERRED_VERSION_xf86-video-vga ?= "4.1.0" PREFERRED_VERSION_xf86-video-via ?= "0.2.2" -#PREFERRED_VERSION_xf86-video-vmware ?= "10.16.9" -PREFERRED_VERSION_xf86-video-vmware ?= "10.16.8" +PREFERRED_VERSION_xf86-video-vmware ?= "10.16.9" PREFERRED_VERSION_xf86-video-voodoo ?= "1.2.3" PREFERRED_VERSION_xf86-video-wsfb ?= "0.3.0" PREFERRED_VERSION_xf86-video-xgi ?= "1.5.1" @@ -244,8 +242,8 @@ PREFERRED_VERSION_libice-native ?= "1.0.6" PREFERRED_VERSION_libsm ?= "1.1.1" PREFERRED_VERSION_libsm-native ?= "1.1.1" PREFERRED_VERSION_libwindowswm ?= "1.0.1" -PREFERRED_VERSION_libx11 ?= "1.3.2" -PREFERRED_VERSION_libx11-native ?= "1.3.2" +PREFERRED_VERSION_libx11 ?= "1.3.3" +PREFERRED_VERSION_libx11-native ?= "1.3.3" PREFERRED_VERSION_libxscrnsaver ?= "1.2.0" PREFERRED_VERSION_libxtrap ?= "1.0.0" PREFERRED_VERSION_libxau ?= "1.0.5" @@ -294,8 +292,7 @@ PREFERRED_VERSION_libpciaccess ?= "0.11.0" PREFERRED_VERSION_libxkbfile ?= "1.0.6" PREFERRED_VERSION_libxkbfile-native ?= "1.0.6" PREFERRED_VERSION_libxkbui ?= "1.0.2" -#PREFERRED_VERSION_pixman ?= "0.17.2" -PREFERRED_VERSION_pixman ?= "0.16.2" +PREFERRED_VERSION_pixman ?= "0.17.4" PREFERRED_VERSION_xtrans ?= "1.2.5" PREFERRED_VERSION_xtrans-native ?= "1.2.5" #proto @@ -305,7 +302,7 @@ PREFERRED_VERSION_bigreqsproto-native ?= "1.1.0" PREFERRED_VERSION_compositeproto ?= "0.4.1" PREFERRED_VERSION_damageproto ?= "1.2.0" PREFERRED_VERSION_dmxproto ?= "2.3" -PREFERRED_VERSION_dri2proto ?= "2.1" +PREFERRED_VERSION_dri2proto ?= "2.2" PREFERRED_VERSION_evieext ?= "1.1.0" PREFERRED_VERSION_fixesproto ?= "4.1.1" PREFERRED_VERSION_fixesproto-native ?= "4.1.1" @@ -313,7 +310,7 @@ PREFERRED_VERSION_fontcacheproto ?= "0.1.3" PREFERRED_VERSION_fontcacheproto-native ?= "0.1.3" PREFERRED_VERSION_fontsproto ?= "2.1.0" PREFERRED_VERSION_fontsproto-native ?= "2.1.0" -PREFERRED_VERSION_glproto ?= "1.4.10" +PREFERRED_VERSION_glproto ?= "1.4.11" PREFERRED_VERSION_inputproto ?= "2.0" PREFERRED_VERSION_inputproto-native ?= "2.0" PREFERRED_VERSION_kbproto ?= "1.0.4" @@ -349,9 +346,9 @@ PREFERRED_VERSION_imake ?= "1.0.2" PREFERRED_VERSION_lndir ?= "1.0.1" PREFERRED_VERSION_makedepend ?= "1.0.2" PREFERRED_VERSION_makedepend-native ?= "1.0.2" -PREFERRED_VERSION_util-macros ?= "1.4.1" -PREFERRED_VERSION_util-macros-native ?= "1.4.1" +PREFERRED_VERSION_util-macros ?= "1.5.0" +PREFERRED_VERSION_util-macros-native ?= "1.5.0" PREFERRED_VERSION_xorg-cf-files ?= "1.0.3" #xserver #PREFERRED_VERSION_xserver-xorg ?= "1.7.99.2" -PREFERRED_VERSION_xserver-xorg ?= "1.7.3" +PREFERRED_VERSION_xserver-xorg ?= "1.7.4" diff --git a/recipes/dri/libdrm_2.4.17.bb b/recipes/dri/libdrm_2.4.17.bb new file mode 100644 index 0000000..4f2af1e --- /dev/null +++ b/recipes/dri/libdrm_2.4.17.bb @@ -0,0 +1,16 @@ +SECTION = "x11/base" +DEPENDS = "libpthread-stubs" +LICENSE = "MIT" +SRC_URI = "http://dri.freedesktop.org/libdrm/libdrm-${PV}.tar.bz2" +PROVIDES = "drm" +PR = "r1" + +inherit autotools pkgconfig + +do_stage() { + autotools_stage_all +} + +PACKAGES =+ "${PN}-intel" + +FILES_${PN}-intel = "${libdir}/libdrm_intel.so.*" diff --git a/recipes/xorg-app/xvidtune_1.0.2.bb b/recipes/xorg-app/xvidtune_1.0.2.bb new file mode 100644 index 0000000..bfab14a --- /dev/null +++ b/recipes/xorg-app/xvidtune_1.0.2.bb @@ -0,0 +1,6 @@ +require xorg-app-common.inc +PE = "1" + +DEPENDS += " libxaw libxxf86vm libxt" + +FILES_${PN} += " ${datadir}/X11/app-defaults/Xvidtune " diff --git a/recipes/xorg-driver/xf86-video-intel_2.10.0.bb b/recipes/xorg-driver/xf86-video-intel_2.10.0.bb new file mode 100644 index 0000000..eed1fcb --- /dev/null +++ b/recipes/xorg-driver/xf86-video-intel_2.10.0.bb @@ -0,0 +1,5 @@ +require xorg-driver-video.inc + +DESCRIPTION = "X.Org X server -- Intel i8xx, i9xx display driver" +DEPENDS += " virtual/libx11 libxvmc drm xf86driproto" +PE = "1" diff --git a/recipes/xorg-driver/xf86-video-vesa_2.3.0.bb b/recipes/xorg-driver/xf86-video-vesa_2.3.0.bb new file mode 100644 index 0000000..c2b6b76 --- /dev/null +++ b/recipes/xorg-driver/xf86-video-vesa_2.3.0.bb @@ -0,0 +1,2 @@ +require xorg-driver-video.inc +PE = "1" diff --git a/recipes/xorg-driver/xf86-video-vmware_10.16.9.bb b/recipes/xorg-driver/xf86-video-vmware_10.16.9.bb new file mode 100644 index 0000000..994b8b6 --- /dev/null +++ b/recipes/xorg-driver/xf86-video-vmware_10.16.9.bb @@ -0,0 +1,6 @@ +require xorg-driver-video.inc +PE = "1" + +#DESCRIPTION = "" + +DEPENDS += " xineramaproto xf86miscproto drm xf86driproto" 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 new file mode 100644 index 0000000..5d0a24c --- /dev/null +++ b/recipes/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/xorg-lib/libx11-native_1.3.3.bb b/recipes/xorg-lib/libx11-native_1.3.3.bb new file mode 100644 index 0000000..98fe79f --- /dev/null +++ b/recipes/xorg-lib/libx11-native_1.3.3.bb @@ -0,0 +1,10 @@ +require libx11_${PV}.bb + +SRC_URI += "file://dolt-fix.patch;patch=1" + +FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libx11" + +DEPENDS = "xproto-native xextproto-native libxau-native xtrans-native libxdmcp-native xcmiscproto-native xf86bigfontproto-native kbproto-native inputproto-native bigreqsproto-native util-macros-native" +PROVIDES = "" + +inherit native diff --git a/recipes/xorg-lib/libx11_1.3.3.bb b/recipes/xorg-lib/libx11_1.3.3.bb new file mode 100644 index 0000000..8858a09 --- /dev/null +++ b/recipes/xorg-lib/libx11_1.3.3.bb @@ -0,0 +1,33 @@ +require xorg-lib-common.inc + +DESCRIPTION = "Base X libs." +DEPENDS += "bigreqsproto xproto xextproto xtrans libxau xcmiscproto \ + libxdmcp xf86bigfontproto kbproto inputproto xproto-native" +PROVIDES = "virtual/libx11" +PE = "1" +PR = "r3" + +XORG_PN = "libX11" + +SRC_URI += "file://x11_disable_makekeys.patch;patch=1 \ +# file://dolt-fix.patch;patch=1 \ +# file://keysymdef_include.patch;patch=1 \ +" + +EXTRA_OECONF += "--without-xcb --with-keysymdef=${STAGING_INCDIR}/X11/keysymdef.h" + +do_compile() { + ( + unset CC LD CXX CCLD CFLAGS CPPFLAGS LDFLAGS CXXFLAGS + cd src/util; + mv makekeys.c.orig makekeys.c || true + touch makekeys-makekeys.o ; ${BUILD_CC} ${BUILD_CFLAGS} -I${STAGING_INCDIR_NATIVE} makekeys.c -o makekeys + # mv to stop it getting rebuilt + mv makekeys.c makekeys.c.orig + cd ../../ + ) || exit 1 + oe_runmake +} + +FILES_${PN} += "${datadir}/X11/XKeysymDB ${datadir}/X11/XErrorDB ${libdir}/X11/Xcms.txt" +FILES_${PN}-locale += "${datadir}/X11/locale ${libdir}/X11/locale" diff --git a/recipes/xorg-proto/dri2proto_2.2.bb b/recipes/xorg-proto/dri2proto_2.2.bb new file mode 100644 index 0000000..a0e1fd3 --- /dev/null +++ b/recipes/xorg-proto/dri2proto_2.2.bb @@ -0,0 +1,3 @@ +DESCRIPTION = "DRI2 extension headers" + +require xorg-proto-common.inc diff --git a/recipes/xorg-proto/glproto_1.4.11.bb b/recipes/xorg-proto/glproto_1.4.11.bb new file mode 100644 index 0000000..9f09fff --- /dev/null +++ b/recipes/xorg-proto/glproto_1.4.11.bb @@ -0,0 +1,4 @@ +require xorg-proto-common.inc + +PR = "r1" +PE = "1" diff --git a/recipes/xorg-util/util-macros-native_1.5.0.bb b/recipes/xorg-util/util-macros-native_1.5.0.bb new file mode 100644 index 0000000..618e78f --- /dev/null +++ b/recipes/xorg-util/util-macros-native_1.5.0.bb @@ -0,0 +1,7 @@ +require util-macros_${PV}.bb + +inherit native + +XORG_PN = "util-macros" + +S = "${WORKDIR}/util-macros-${PV}" diff --git a/recipes/xorg-util/util-macros_1.5.0.bb b/recipes/xorg-util/util-macros_1.5.0.bb new file mode 100644 index 0000000..4775fc6 --- /dev/null +++ b/recipes/xorg-util/util-macros_1.5.0.bb @@ -0,0 +1,6 @@ +require xorg-util-common.inc + +DESCRIPTION = "X autotools macros" +PE = "1" + +ALLOW_EMPTY = "1" diff --git a/recipes/xorg-xserver/xserver-xorg-1.7.4/hack-assume-pixman-supports-overlapped-blt.patch b/recipes/xorg-xserver/xserver-xorg-1.7.4/hack-assume-pixman-supports-overlapped-blt.patch new file mode 100644 index 0000000..a947582 --- /dev/null +++ b/recipes/xorg-xserver/xserver-xorg-1.7.4/hack-assume-pixman-supports-overlapped-blt.patch @@ -0,0 +1,14 @@ +diff --git a/fb/fbcopy.c b/fb/fbcopy.c +index 07eb663..ba394b7 100644 +--- a/fb/fbcopy.c ++++ b/fb/fbcopy.c +@@ -91,8 +91,7 @@ fbCopyNtoN (DrawablePtr pSrcDrawable, + while (nbox--) + { + #ifndef FB_ACCESS_WRAPPER /* pixman_blt() doesn't support accessors yet */ +- if (pm == FB_ALLONES && alu == GXcopy && !reverse && +- !upsidedown) ++ if (pm == FB_ALLONES && alu == GXcopy) + { + if (!pixman_blt ((uint32_t *)src, (uint32_t *)dst, srcStride, dstStride, srcBpp, dstBpp, + (pbox->x1 + dx + srcXoff), diff --git a/recipes/xorg-xserver/xserver-xorg_1.7.4.bb b/recipes/xorg-xserver/xserver-xorg_1.7.4.bb new file mode 100644 index 0000000..18b540b --- /dev/null +++ b/recipes/xorg-xserver/xserver-xorg_1.7.4.bb @@ -0,0 +1,25 @@ +require xorg-xserver-common.inc + +DESCRIPTION = "the X.Org X server" +DEPENDS += "pixman libpciaccess openssl dri2proto glproto xorg-minimal-fonts" +PE = "2" + +SRC_URI += "file://sysroot_fix.patch;patch=1 \ + file://dolt-fix-1.7.0.patch;patch=1 \ + file://randr-support-1.7.0.patch;patch=1 \ + " + +SRC_URI_append_angstrom = " file://hack-assume-pixman-supports-overlapped-blt.patch;patch=1" +SRC_URI_append_shr = " file://hack-assume-pixman-supports-overlapped-blt.patch;patch=1" + +do_install_prepend() { + mkdir -p ${D}/${libdir}/X11/fonts +} + +# The NVidia driver requires Xinerama support in the X server. Ion uses it. +XINERAMA = "${@['--disable-xinerama','--enable-xinerama'][bb.data.getVar('MACHINE',d) in ['ion']]}" + +EXTRA_OECONF += " --enable-config-hal ${XINERAMA} --disable-kdrive --disable-xephyr --disable-xsdl --disable-xfake --disable-xfbdev --disable-dmx" +EXTRA_OECONF += " --disable-glx-tls --enable-dri2 --disable-unit-tests " + +export LDFLAGS += " -ldl " -- 1.6.6 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 4/6] pixman: add version 0.17.4 with neon patches 2010-01-20 12:27 ` [PATCH 4/6] pixman: add version 0.17.4 with neon patches Martin Jansa 2010-01-20 12:27 ` [PATCH 5/6] pixman_git: add BBCLASSEXTEND=native (pixman-native used in cairo-native) Martin Jansa @ 2010-02-05 10:02 ` Koen Kooi 2010-02-10 13:11 ` Martin Jansa 1 sibling, 1 reply; 11+ messages in thread From: Koen Kooi @ 2010-02-05 10:02 UTC (permalink / raw) To: openembedded-devel -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 This one fails to build for armv7a with some weird libtool problem regards, Koen On 20-01-10 13:27, Martin Jansa wrote: > Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> > --- > ...Dropped-delegation-support-for-pixman_blt.patch | 356 ++++++++++++++++++++ > ...0002-Test-program-for-pixman_blt-function.patch | 178 ++++++++++ > ...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.4.bb | 29 ++ > 7 files changed, 953 insertions(+), 0 deletions(-) > create mode 100644 recipes/xorg-lib/pixman-0.17.4/0001-Dropped-delegation-support-for-pixman_blt.patch > create mode 100644 recipes/xorg-lib/pixman-0.17.4/0002-Test-program-for-pixman_blt-function.patch > create mode 100644 recipes/xorg-lib/pixman-0.17.4/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch > create mode 100644 recipes/xorg-lib/pixman-0.17.4/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch > create mode 100644 recipes/xorg-lib/pixman-0.17.4/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch > create mode 100644 recipes/xorg-lib/pixman-0.17.4/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch > create mode 100644 recipes/xorg-lib/pixman_0.17.4.bb > > diff --git a/recipes/xorg-lib/pixman-0.17.4/0001-Dropped-delegation-support-for-pixman_blt.patch b/recipes/xorg-lib/pixman-0.17.4/0001-Dropped-delegation-support-for-pixman_blt.patch > new file mode 100644 > index 0000000..d52ee35 > --- /dev/null > +++ b/recipes/xorg-lib/pixman-0.17.4/0001-Dropped-delegation-support-for-pixman_blt.patch > @@ -0,0 +1,356 @@ > +From c4ce33821e2340ff95e30fce5758013287172d52 Mon Sep 17 00:00:00 2001 > +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> > +Date: Wed, 21 Oct 2009 23:48:43 +0000 > +Subject: Dropped delegation support for 'pixman_blt' > + > +Function 'pixman_blt' is too simple and hardly needs any > +delegation. This reduces call overhead somewhat. The saving > +is minor, but every little bit helps. > +--- > +diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c > +index efeabeb..c8c5579 100644 > +--- a/pixman/pixman-arm-neon.c > ++++ b/pixman/pixman-arm-neon.c > +@@ -470,35 +470,6 @@ arm_neon_composite (pixman_implementation_t *imp, > + } > + > + 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 _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); > +- } > +- > +- return TRUE; > +-} > +- > +-static pixman_bool_t > + arm_neon_fill (pixman_implementation_t *imp, > + uint32_t * bits, > + int stride, > +@@ -556,7 +527,7 @@ _pixman_implementation_create_arm_neon (void) > + imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u; > + > + imp->composite = arm_neon_composite; > +- imp->blt = arm_neon_blt; > ++ imp->blt = pixman_blt_neon; > + imp->fill = arm_neon_fill; > + > + return imp; > +diff --git a/pixman/pixman-arm-simd.c b/pixman/pixman-arm-simd.c > +index 4795246..11c5f1b 100644 > +--- a/pixman/pixman-arm-simd.c > ++++ b/pixman/pixman-arm-simd.c > +@@ -480,6 +480,7 @@ _pixman_implementation_create_arm_simd (void) > + pixman_implementation_t *imp = _pixman_implementation_create (general); > + > + imp->composite = arm_simd_composite; > ++ imp->blt = general->blt; > + > + return imp; > + } > +diff --git a/pixman/pixman-fast-path.c b/pixman/pixman-fast-path.c > +index 75a0c1e..8da6b1f 100644 > +--- a/pixman/pixman-fast-path.c > ++++ b/pixman/pixman-fast-path.c > +@@ -1690,6 +1690,7 @@ _pixman_implementation_create_fast_path (void) > + pixman_implementation_t *imp = _pixman_implementation_create (general); > + > + imp->composite = fast_path_composite; > ++ imp->blt = general->blt; > + imp->fill = fast_path_fill; > + > + return imp; > +diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c > +index c96a3f9..c3f96f9 100644 > +--- a/pixman/pixman-general.c > ++++ b/pixman/pixman-general.c > +@@ -286,8 +286,7 @@ general_composite (pixman_implementation_t * imp, > + } > + > + static pixman_bool_t > +-general_blt (pixman_implementation_t *imp, > +- uint32_t * src_bits, > ++general_blt (uint32_t * src_bits, > + uint32_t * dst_bits, > + int src_stride, > + int dst_stride, > +diff --git a/pixman/pixman-implementation.c b/pixman/pixman-implementation.c > +index 6488332..0520e36 100644 > +--- a/pixman/pixman-implementation.c > ++++ b/pixman/pixman-implementation.c > +@@ -100,27 +100,6 @@ delegate_combine_64_ca (pixman_implementation_t * imp, > + } > + > + static pixman_bool_t > +-delegate_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) > +-{ > +- 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 > + delegate_fill (pixman_implementation_t *imp, > + uint32_t * bits, > + int stride, > +@@ -153,7 +132,7 @@ _pixman_implementation_create (pixman_implementation_t *delegate) > + /* Fill out function pointers with ones that just delegate > + */ > + imp->composite = delegate_composite; > +- imp->blt = delegate_blt; > ++ imp->blt = NULL; > + imp->fill = delegate_fill; > + > + for (i = 0; i < PIXMAN_N_OPERATORS; ++i) > +@@ -233,26 +212,6 @@ _pixman_implementation_composite (pixman_implementation_t * imp, > + } > + > + pixman_bool_t > +-_pixman_implementation_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) > +-{ > +- return (*imp->blt) (imp, src_bits, dst_bits, src_stride, dst_stride, > +- src_bpp, dst_bpp, src_x, src_y, dst_x, dst_y, > +- width, height); > +-} > +- > +-pixman_bool_t > + _pixman_implementation_fill (pixman_implementation_t *imp, > + uint32_t * bits, > + int stride, > +diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c > +index b1591d9..a3080b6 100644 > +--- a/pixman/pixman-mmx.c > ++++ b/pixman/pixman-mmx.c > +@@ -3318,35 +3318,6 @@ mmx_composite (pixman_implementation_t *imp, > + } > + > + static pixman_bool_t > +-mmx_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_mmx ( > +- src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, > +- src_x, src_y, dst_x, dst_y, width, height)) > +- > +- { > +- 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); > +- } > +- > +- return TRUE; > +-} > +- > +-static pixman_bool_t > + mmx_fill (pixman_implementation_t *imp, > + uint32_t * bits, > + int stride, > +@@ -3397,7 +3368,7 @@ _pixman_implementation_create_mmx (void) > + imp->combine_32_ca[PIXMAN_OP_ADD] = mmx_combine_add_ca; > + > + imp->composite = mmx_composite; > +- imp->blt = mmx_blt; > ++ imp->blt = pixman_blt_mmx; > + imp->fill = mmx_fill; > + > + return imp; > +diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h > +index c99f2a2..209cba4 100644 > +--- a/pixman/pixman-private.h > ++++ b/pixman/pixman-private.h > +@@ -399,8 +399,7 @@ typedef void (*pixman_composite_func_t) (pixman_implementation_t *imp, > + int32_t dest_y, > + int32_t width, > + int32_t height); > +-typedef pixman_bool_t (*pixman_blt_func_t) (pixman_implementation_t *imp, > +- uint32_t * src_bits, > ++typedef pixman_bool_t (*pixman_blt_func_t) (uint32_t * src_bits, > + uint32_t * dst_bits, > + int src_stride, > + int dst_stride, > +diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c > +index 1f8aa6e..8c2e114 100644 > +--- a/pixman/pixman-sse2.c > ++++ b/pixman/pixman-sse2.c > +@@ -5893,8 +5893,7 @@ sse2_composite (pixman_implementation_t *imp, > + __attribute__((__force_align_arg_pointer__)) > + #endif > + static pixman_bool_t > +-sse2_blt (pixman_implementation_t *imp, > +- uint32_t * src_bits, > ++sse2_blt (uint32_t * src_bits, > + uint32_t * dst_bits, > + int src_stride, > + int dst_stride, > +@@ -5907,18 +5906,9 @@ sse2_blt (pixman_implementation_t *imp, > + int width, > + int height) > + { > +- if (!pixman_blt_sse2 ( > ++ return pixman_blt_sse2 ( > + src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, > +- src_x, src_y, dst_x, dst_y, width, height)) > +- > +- { > +- 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); > +- } > +- > +- return TRUE; > ++ src_x, src_y, dst_x, dst_y, width, height); > + } > + > + #if defined(__GNUC__) && !defined(__x86_64__) && !defined(__amd64__) > +diff --git a/pixman/pixman-vmx.c b/pixman/pixman-vmx.c > +index 06325a7..e31bcb3 100644 > +--- a/pixman/pixman-vmx.c > ++++ b/pixman/pixman-vmx.c > +@@ -1615,6 +1615,8 @@ _pixman_implementation_create_vmx (void) > + > + /* Set up function pointers */ > + > ++ imp->blt = fast->blt; > ++ > + imp->combine_32[PIXMAN_OP_OVER] = vmx_combine_over_u; > + imp->combine_32[PIXMAN_OP_OVER_REVERSE] = vmx_combine_over_reverse_u; > + imp->combine_32[PIXMAN_OP_IN] = vmx_combine_in_u; > +diff --git a/pixman/pixman.c b/pixman/pixman.c > +index 0edd967..07ad767 100644 > +--- a/pixman/pixman.c > ++++ b/pixman/pixman.c > +@@ -57,6 +57,22 @@ static const optimized_operator_info_t optimized_operators[] = > + > + static pixman_implementation_t *imp; > + > ++static pixman_bool_t > ++pixman_blt_stub (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); > ++ > ++static pixman_blt_func_t pixman_blt_imp = pixman_blt_stub; > ++ > + /* > + * Check if the current operator could be optimized > + */ > +@@ -216,6 +232,31 @@ pixman_image_composite (pixman_op_t op, > + unapply_workaround (dest, dest_bits, dest_dx, dest_dy); > + } > + > ++static pixman_bool_t > ++pixman_blt_stub (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 (!imp) > ++ imp = _pixman_choose_implementation (); > ++ > ++ pixman_blt_imp = imp->blt; > ++ return pixman_blt_imp (src_bits, dst_bits, src_stride, dst_stride, > ++ src_bpp, dst_bpp, > ++ src_x, src_y, > ++ dst_x, dst_y, > ++ width, height); > ++} > ++ > + PIXMAN_EXPORT pixman_bool_t > + pixman_blt (uint32_t *src_bits, > + uint32_t *dst_bits, > +@@ -230,14 +271,11 @@ pixman_blt (uint32_t *src_bits, > + int width, > + int height) > + { > +- if (!imp) > +- imp = _pixman_choose_implementation (); > +- > +- return _pixman_implementation_blt (imp, src_bits, dst_bits, src_stride, dst_stride, > +- src_bpp, dst_bpp, > +- src_x, src_y, > +- dst_x, dst_y, > +- width, height); > ++ return pixman_blt_imp (src_bits, dst_bits, src_stride, dst_stride, > ++ src_bpp, dst_bpp, > ++ src_x, src_y, > ++ dst_x, dst_y, > ++ width, height); > + } > + > + PIXMAN_EXPORT pixman_bool_t > +-- > +cgit v0.8.3-6-g21f6 > diff --git a/recipes/xorg-lib/pixman-0.17.4/0002-Test-program-for-pixman_blt-function.patch b/recipes/xorg-lib/pixman-0.17.4/0002-Test-program-for-pixman_blt-function.patch > new file mode 100644 > index 0000000..ba62b88 > --- /dev/null > +++ b/recipes/xorg-lib/pixman-0.17.4/0002-Test-program-for-pixman_blt-function.patch > @@ -0,0 +1,178 @@ > +From 364406e03f9651aacb1bc684de6c00a27f9df66d Mon Sep 17 00:00:00 2001 > +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> > +Date: Mon, 19 Oct 2009 20:32:55 +0300 > +Subject: [PATCH 2/6] Test program for pixman_blt function > + > +It can do some basic correctness tests and also check whether > +overlapping of source and destination images is supported. > +--- > + test/Makefile.am | 2 + > + test/overlapped-blt-test.c | 136 ++++++++++++++++++++++++++++++++++++++++++++ > + 2 files changed, 138 insertions(+), 0 deletions(-) > + create mode 100644 test/overlapped-blt-test.c > + > +diff --git a/test/Makefile.am b/test/Makefile.am > +index 89d32e9..40c305f 100644 > +--- a/test/Makefile.am > ++++ b/test/Makefile.am > +@@ -6,6 +6,7 @@ > + fetch-test \ > + oob-test \ > + window-test \ > ++ overlapped-blt-test \ > + trap-crasher \ > + alphamap \ > + blitters-test \ > +@@ -18,6 +19,7 @@ > + trap_crasher_LDADD = $(TEST_LDADD) > + oob_test_LDADD = $(TEST_LDADD) > + window_test_LDADD = $(TEST_LDADD) > ++overlapped_blt_test_LDADD = $(TEST_LDADD) > + > + blitters_test_LDADD = $(TEST_LDADD) > + blitters_test_SOURCES = blitters-test.c utils.c utils.h > +diff --git a/test/overlapped-blt-test.c b/test/overlapped-blt-test.c > +new file mode 100644 > +index 0000000..95fbc54 > +--- /dev/null > ++++ b/test/overlapped-blt-test.c > +@@ -0,0 +1,136 @@ > ++/* > ++ * A small test program which can check whether pixman_blt function > ++ * can support overlapping of source and destination images. > ++ * Efficient blit with overlapping is useful for scrolling. > ++ */ > ++ > ++#include <stdint.h> > ++#include <stdio.h> > ++#include <stdlib.h> > ++#include <string.h> > ++#include "pixman.h" > ++ > ++/* reference implementation (slow) */ > ++static void > ++trivial_copy8_2d ( > ++ uint8_t *dst, int dst_stride, > ++ uint8_t *src, int src_stride, > ++ int dx, int dy, int sx, int sy, > ++ int w, int h) > ++{ > ++ int x, y; > ++ uint8_t *tmp = malloc (src_stride * (sy + h)); > ++ memcpy (tmp, src, src_stride * (sy + h)); > ++ for (y = 0; y < h; y++) > ++ { > ++ for (x = 0; x < w; x++) > ++ { > ++ *(dst + (dy + y) * dst_stride + dx + x) = > ++ *(tmp + (sy + y) * src_stride + sx + x); > ++ } > ++ } > ++ free (tmp); > ++} > ++ > ++static void > ++trivial_copy_2d ( > ++ uint8_t *dst, int dst_stride, > ++ uint8_t *src, int src_stride, > ++ int dx, int dy, int sx, int sy, > ++ int w, int h, int bpp) > ++{ > ++ trivial_copy8_2d (dst, dst_stride, src, src_stride, > ++ dx * (bpp / 8), dy, sx * (bpp / 8), sy, w * (bpp / 8), h); > ++} > ++ > ++/* now the test itself */ > ++ > ++#define ST_UNSUPPORTED 1 > ++#define ST_NORMAL_BUG 2 > ++#define ST_OVERLAPPED_BUG 4 > ++ > ++#define MAX_SIZE_X 64 > ++#define MAX_SIZE_Y 64 > ++ > ++static void print_result(int bpp, int flags) > ++{ > ++ printf("bpp=%d, supported=%d, normal_ok=%d, overlapped_ok=%d\n", > ++ bpp, > ++ !(flags & ST_UNSUPPORTED), > ++ !(flags & ST_NORMAL_BUG), > ++ !(flags & ST_OVERLAPPED_BUG)); > ++} > ++ > ++int main() > ++{ > ++ int c = 100000, r; > ++ int bpp_st[33] = {0}; > ++ srand(0); > ++ while (c-- > 0) > ++ { > ++ uint8_t *src1, *src2, *src3; > ++ int i; > ++ int sizex = rand() % MAX_SIZE_X + 1; > ++ int sizey = rand() % MAX_SIZE_Y + 1; > ++ int sx = rand() % sizex; > ++ int sy = rand() % sizey; > ++ int dx = rand() % sizex; > ++ int dy = rand() % sizey; > ++ int w = rand() % sizex; > ++ int h = rand() % sizex; > ++ int bpp = 8 * (1 << (rand() % 3)); > ++ int stride_delta = rand() % 8; > ++ int bufsize; > ++ if ((sizex + stride_delta) % 4) > ++ stride_delta += 4 - ((sizex + stride_delta) % 4); > ++ bufsize = (sizex + stride_delta) * sizey * bpp / 8; > ++ src1 = malloc (bufsize); > ++ src2 = malloc (bufsize); > ++ src3 = malloc (bufsize); > ++ for (i = 0; i < bufsize; i++) > ++ src1[i] = rand(); > ++ memcpy (src2, src1, bufsize); > ++ memcpy (src3, src1, bufsize); > ++ if (sx + w > sizex) > ++ w = sizex - sx; > ++ if (dx + w > sizex) > ++ w = sizex - dx; > ++ if (sy + h > sizey) > ++ h = sizey - sy; > ++ if (dy + h > sizey) > ++ h = sizey - dy; > ++ /* get reference result */ > ++ trivial_copy_2d (src1, (sizex + stride_delta) * bpp / 8, > ++ src1, (sizex + stride_delta) * bpp / 8, > ++ dx, dy, sx, sy, w, h, bpp); > ++ /* check nonoverlapped pixman result */ > ++ r = pixman_blt ((uint32_t *)src3, (uint32_t *)src2, > ++ (sizex + stride_delta) * bpp / 8 / 4, > ++ (sizex + stride_delta) * bpp / 8 / 4, > ++ bpp, bpp, sx, sy, dx, dy, w, h); > ++ if (!r) > ++ bpp_st[bpp] |= ST_UNSUPPORTED; > ++ if (memcmp (src1, src2, bufsize) != 0) > ++ bpp_st[bpp] |= ST_NORMAL_BUG; > ++ /* check overlapped pixman result */ > ++ r = pixman_blt ((uint32_t *)src3, (uint32_t *)src3, > ++ (sizex + stride_delta) * bpp / 8 / 4, > ++ (sizex + stride_delta) * bpp / 8 / 4, > ++ bpp, bpp, sx, sy, dx, dy, w, h); > ++ if (!r) > ++ bpp_st[bpp] |= ST_UNSUPPORTED; > ++ if (memcmp (src1, src3, bufsize) != 0) > ++ bpp_st[bpp] |= ST_OVERLAPPED_BUG; > ++ /* free buffers */ > ++ free (src1); > ++ free (src2); > ++ free (src3); > ++ } > ++ > ++ /* report results */ > ++ print_result (8, bpp_st[8]); > ++ print_result (16, bpp_st[16]); > ++ print_result (32, bpp_st[32]); > ++ > ++ return 0; > ++} > +-- > +1.6.2.4 > + > diff --git a/recipes/xorg-lib/pixman-0.17.4/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/recipes/xorg-lib/pixman-0.17.4/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch > new file mode 100644 > index 0000000..25ce7ee > --- /dev/null > +++ b/recipes/xorg-lib/pixman-0.17.4/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@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.4/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/recipes/xorg-lib/pixman-0.17.4/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch > new file mode 100644 > index 0000000..74c7b45 > --- /dev/null > +++ b/recipes/xorg-lib/pixman-0.17.4/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@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.4/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/recipes/xorg-lib/pixman-0.17.4/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch > new file mode 100644 > index 0000000..3704fbf > --- /dev/null > +++ b/recipes/xorg-lib/pixman-0.17.4/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@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.4/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/recipes/xorg-lib/pixman-0.17.4/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch > new file mode 100644 > index 0000000..7c22483 > --- /dev/null > +++ b/recipes/xorg-lib/pixman-0.17.4/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@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.4.bb b/recipes/xorg-lib/pixman_0.17.4.bb > new file mode 100644 > index 0000000..b648219 > --- /dev/null > +++ b/recipes/xorg-lib/pixman_0.17.4.bb > @@ -0,0 +1,29 @@ > +SECTION = "libs" > +PRIORITY = "optional" > +DESCRIPTION = "Low-level pixel manipulation library." > +LICENSE = "X11" > + > +DEFAULT_PREFERENCE = "-1" > +DEFAULT_PREFERENCE_angstrom = "1" > +DEFAULT_PREFERENCE_shr = "1" > + > +BBCLASSEXTEND="native" > + > +SRC_URI = "http://cairographics.org/releases/pixman-${PV}.tar.gz \ > + file://0001-Dropped-delegation-support-for-pixman_blt.patch;patch=1 \ > + file://0002-Test-program-for-pixman_blt-function.patch;patch=1 \ > + file://0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch;patch=1 \ > + file://0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch;patch=1 \ > + file://0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch;patch=1 \ > + file://0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch;patch=1 \ > + " > + > +inherit autotools_stage > + > +NEON = " --disable-arm-neon " > +NEON_armv7a = "" > + > +EXTRA_OECONF = "${NEON}" > + > +AUTOTOOLS_STAGE_PKGCONFIG = "1" > + -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Darwin) iD4DBQFLa+yeMkyGM64RGpERAqqJAKCMuurw8h8ul3tY7TYeMrU8lEEZ+QCYj2fg T1jS57OuSMSUTMzW2hQ0Hw== =i9X2 -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 4/6] pixman: add version 0.17.4 with neon patches 2010-02-05 10:02 ` [PATCH 4/6] pixman: add version 0.17.4 with neon patches Koen Kooi @ 2010-02-10 13:11 ` Martin Jansa 2010-02-10 15:13 ` Koen Kooi 0 siblings, 1 reply; 11+ messages in thread From: Martin Jansa @ 2010-02-10 13:11 UTC (permalink / raw) To: openembedded-devel On Fri, Feb 05, 2010 at 11:02:07AM +0100, Koen Kooi wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > This one fails to build for armv7a with some weird libtool problem Does that error look like: /bin/sh ../arm-oe-linux-gnueabi-libtool --tag=CC --mode=link arm-oe-linux-gnueabi-gcc -march=armv4t -mtune=arm920t -mthumb-interwork -mthumb -isystem/home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/include -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -Wall -fno-strict-aliasing -fvisibility=hidden -L/home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/lib -Wl,-rpath-link,/home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/lib -Wl,-O1 -Wl,--hash-style=gnu -o gradient-test gradient-test.o gtk-utils.o -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -L.. ../pixman/libpixman-1.la arm-oe-linux-gnueabi-libtool: link: cannot find the library `/home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/lib/libpixman-1.la' or unhandled argument `/home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/lib/libpixman-1.la' make[2]: Leaving directory `/home/projects/OE/tmpdir-dev-shr/work/armv4t-oe-linux-gnueabi/pixman-0.17.4-r1/pixman-0.17.4/test' If yes than it's because -lpangocairo-1.0 -lcairo from GTK_LIBS have /home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/lib/libpixman-1.la in their own .la files and this way it creates circular dependency, which fails when armv4t-oe-linux-gnueabi/usr/lib/libpixman-1.la is removed during upgrade. Removing those 2 libs from GTK_LIBS works as well as removing libpixman-1.la reference from their staged .la files. Please advise how to fix it properly. BTW: this is not new issue with 0.17.4, I had that before (and tried to resolve it with latest cleanup of old libpixman-native recipes) Regards, -- uin:136542059 jid:Martin.Jansa@gmail.com Jansa Martin sip:jamasip@voip.wengo.fr JaMa ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 4/6] pixman: add version 0.17.4 with neon patches 2010-02-10 13:11 ` Martin Jansa @ 2010-02-10 15:13 ` Koen Kooi 0 siblings, 0 replies; 11+ messages in thread From: Koen Kooi @ 2010-02-10 15:13 UTC (permalink / raw) To: openembedded-devel -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Yes, that's the error On 10-02-10 14:11, Martin Jansa wrote: > On Fri, Feb 05, 2010 at 11:02:07AM +0100, Koen Kooi wrote: >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA1 >> >> This one fails to build for armv7a with some weird libtool problem > > Does that error look like: > > /bin/sh ../arm-oe-linux-gnueabi-libtool --tag=CC --mode=link arm-oe-linux-gnueabi-gcc -march=armv4t -mtune=arm920t -mthumb-interwork -mthumb -isystem/home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/include -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -Wall -fno-strict-aliasing -fvisibility=hidden -L/home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/lib -Wl,-rpath-link,/home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/lib -Wl,-O1 -Wl,--hash-style=gnu -o gradient-test gradient-test.o gtk-utils.o -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -L.. ../pixman/libpixman-1.la > arm-oe-linux-gnueabi-libtool: link: cannot find the library `/home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/lib/libpixman-1.la' or unhandled argument `/home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/lib/libpixman-1.la' > make[2]: Leaving directory `/home/projects/OE/tmpdir-dev-shr/work/armv4t-oe-linux-gnueabi/pixman-0.17.4-r1/pixman-0.17.4/test' > > If yes than it's because > -lpangocairo-1.0 -lcairo from GTK_LIBS have /home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/lib/libpixman-1.la > in their own .la files and this way it creates circular dependency, which fails when armv4t-oe-linux-gnueabi/usr/lib/libpixman-1.la > is removed during upgrade. > > Removing those 2 libs from GTK_LIBS works as well as removing libpixman-1.la reference from their staged .la files. > > Please advise how to fix it properly. > > BTW: this is not new issue with 0.17.4, I had that before (and tried to resolve it with latest cleanup of old libpixman-native recipes) > > Regards, > -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Darwin) iD8DBQFLcs0LMkyGM64RGpERAmPbAKC7cTwWXilKLuleYVJINLVBikRuJACgjsD2 BFemPUDJUefDUXm4yJajLRI= =BNDk -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Xorg upgrade and libpixman removal 2010-01-20 12:27 Xorg upgrade and libpixman removal Martin Jansa 2010-01-20 12:27 ` [PATCH 1/6] cairo-native: depend on pixman-native instead libpixman-native Martin Jansa @ 2010-01-21 6:55 ` Martin Jansa 1 sibling, 0 replies; 11+ messages in thread From: Martin Jansa @ 2010-01-21 6:55 UTC (permalink / raw) To: openembedded-devel On Wed, Jan 20, 2010 at 1:27 PM, Martin Jansa <martin.jansa@gmail.com> wrote: > Hi, > > libpixman-native and pixman "conflicts" > > It ends like this (libpixman-native is 0.10.0): > arm-oe-linux-gnueabi-libtool: link: cannot find the library > `/home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/lib/libpixman-1.la' > or unhandled argument > `/home/projects/OE/tmpdir-dev-shr/staging/armv4t-oe-linux-gnueabi/usr/lib/libpixman-1.la' > > It can be resolved by rebuilding both in right order, but libpixman was > used only in cairo-native, so I moved libpixman to obsolete and added > pixman-native to normal pixman recipes (Koen agreed that libpixman can be > removed) Old pixman and xorg upgrade pushed, pixman_0.17.4 waiting for test on arm7.. > Can someone test NEON on armv7? > especially pixman-0.17.4/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch, > because it was partially included upstream and I'm not following it as close as I should :). ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2010-02-10 15:16 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-01-20 12:27 Xorg upgrade and libpixman removal Martin Jansa 2010-01-20 12:27 ` [PATCH 1/6] cairo-native: depend on pixman-native instead libpixman-native Martin Jansa 2010-01-20 12:27 ` [PATCH 2/6] libpixman: move all to obsolete directory (replaced with pixman recipes) Martin Jansa 2010-01-20 12:27 ` [PATCH 3/6] pixman_0.16.2: drop DEFAULT_PREFERENCE = -1 and add BBCLASSEXTEND=native (pixman-native used in cairo-native) Martin Jansa 2010-01-20 12:27 ` [PATCH 4/6] pixman: add version 0.17.4 with neon patches Martin Jansa 2010-01-20 12:27 ` [PATCH 5/6] pixman_git: add BBCLASSEXTEND=native (pixman-native used in cairo-native) Martin Jansa 2010-01-20 12:27 ` [PATCH 6/6] xorg: update recipes to latest releases 2010-01-18 Martin Jansa 2010-02-05 10:02 ` [PATCH 4/6] pixman: add version 0.17.4 with neon patches Koen Kooi 2010-02-10 13:11 ` Martin Jansa 2010-02-10 15:13 ` Koen Kooi 2010-01-21 6:55 ` Xorg upgrade and libpixman removal Martin Jansa
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox