If [1] is going to be accepted, there is no need for pixman in meta-oe. [1] http://patches.openembedded.org/patch/34885/
Signed-off-by: Andreas Müller <[email protected]> --- ...lated-workarounds-in-cpu-features-detecti.patch | 121 -------------------- ...mplementation-of-pixman_blt-with-overlapp.patch | 114 ------------------ .../xorg-lib/pixman_0.26.2.bbappend | 13 -- 3 files changed, 0 insertions(+), 248 deletions(-) delete mode 100644 meta-oe/recipes-graphics/xorg-lib/pixman-0.26.2/0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch delete mode 100644 meta-oe/recipes-graphics/xorg-lib/pixman-0.26.2/0008-Generic-C-implementation-of-pixman_blt-with-overlapp.patch delete mode 100644 meta-oe/recipes-graphics/xorg-lib/pixman_0.26.2.bbappend diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.26.2/0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.26.2/0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch deleted file mode 100644 index b56e690..0000000 --- a/meta-oe/recipes-graphics/xorg-lib/pixman-0.26.2/0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch +++ /dev/null @@ -1,121 +0,0 @@ -From dad8537110c27b45795f8879a3e0a54aa77546b9 Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <[email protected]> -Date: Tue, 11 Jan 2011 18:10:39 +0200 -Subject: [PATCH] ARM: qemu related workarounds in cpu features detection code - -Signed-off-by: Martin Jansa <[email protected]> ---- - pixman/pixman-cpu.c | 67 +++++++++++++++++++++++++++++++++++++++++--------- - 1 files changed, 55 insertions(+), 12 deletions(-) - -diff --git a/pixman/pixman-cpu.c b/pixman/pixman-cpu.c -index aa9036f..a8f2494 100644 ---- a/pixman/pixman-cpu.c -+++ b/pixman/pixman-cpu.c -@@ -333,15 +333,30 @@ pixman_arm_read_auxv_or_cpu_features () - #include <sys/types.h> - #include <sys/stat.h> - #include <sys/mman.h> -+#include <sys/utsname.h> - #include <fcntl.h> - #include <string.h> - #include <elf.h> - -+/* -+ * The whole CPU capabilities detection is a bit ugly: when running in -+ * userspace qemu, we see /proc/self/auxv from the host system. To make -+ * everything even worse, the size of each value is 64-bit when running -+ * on a 64-bit host system. So the data is totally bogus because we expect -+ * 32-bit values. As AT_PLATFORM value is used as a pointer, it may cause -+ * segfault (null pointer dereference on x86-64 host). So in order to be -+ * on a safe side, we require that AT_PLATFORM value is found only once, -+ * and it has non-zero value (this is still not totally reliable for a big -+ * endian 64-bit host system running qemu and may theoretically fail). -+ */ - static void - pixman_arm_read_auxv_or_cpu_features () - { - int fd; - Elf32_auxv_t aux; -+ uint32_t hwcap = 0; -+ const char *plat = NULL; -+ int plat_cnt = 0; - - fd = open ("/proc/self/auxv", O_RDONLY); - if (fd >= 0) -@@ -350,32 +365,60 @@ pixman_arm_read_auxv_or_cpu_features () - { - if (aux.a_type == AT_HWCAP) - { -- uint32_t hwcap = aux.a_un.a_val; -- /* hardcode these values to avoid depending on specific -- * versions of the hwcap header, e.g. HWCAP_NEON -- */ -- arm_has_vfp = (hwcap & 64) != 0; -- arm_has_iwmmxt = (hwcap & 512) != 0; -- /* this flag is only present on kernel 2.6.29 */ -- arm_has_neon = (hwcap & 4096) != 0; -+ hwcap = aux.a_un.a_val; - } - else if (aux.a_type == AT_PLATFORM) - { -- const char *plat = (const char*) aux.a_un.a_val; -- if (strncmp (plat, "v7l", 3) == 0) -+ plat = (const char*) aux.a_un.a_val; -+ plat_cnt++; -+ } -+ } -+ close (fd); -+ -+ if (plat == NULL || plat_cnt != 1 || *plat != 'v') -+ { -+ /* -+ * Something seems to be really wrong, most likely we are -+ * running under qemu. Let's use machine type from "uname" for -+ * CPU capabilities detection: -+ * http://www.mail-archive.com/qemu-devel at nongnu.org/msg22212.html -+ */ -+ struct utsname u; -+ hwcap = 0; /* clear hwcap, because it is bogus */ -+ if (uname (&u) == 0) -+ { -+ if (strcmp (u.machine, "armv7l") == 0) - { - arm_has_v7 = TRUE; - arm_has_v6 = TRUE; -+ hwcap |= 64; /* qemu is supposed to emulate vfp */ -+ hwcap |= 4096; /* qemu is supposed to emulate neon */ - } -- else if (strncmp (plat, "v6l", 3) == 0) -+ else if (strcmp (u.machine, "armv6l") == 0) - { - arm_has_v6 = TRUE; -+ hwcap |= 64; /* qemu is supposed to emulate vfp */ - } - } - } -- close (fd); -+ else if (strncmp (plat, "v7l", 3) == 0) -+ { -+ arm_has_v7 = TRUE; -+ arm_has_v6 = TRUE; -+ } -+ else if (strncmp (plat, "v6l", 3) == 0) -+ { -+ arm_has_v6 = TRUE; -+ } - } - -+ /* hardcode these values to avoid depending on specific -+ * versions of the hwcap header, e.g. HWCAP_NEON -+ */ -+ arm_has_vfp = (hwcap & 64) != 0; -+ arm_has_iwmmxt = (hwcap & 512) != 0; -+ arm_has_neon = (hwcap & 4096) != 0; -+ - arm_tests_initialized = TRUE; - } - --- -1.7.8.6 - diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.26.2/0008-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.26.2/0008-Generic-C-implementation-of-pixman_blt-with-overlapp.patch deleted file mode 100644 index 34f96ed..0000000 --- a/meta-oe/recipes-graphics/xorg-lib/pixman-0.26.2/0008-Generic-C-implementation-of-pixman_blt-with-overlapp.patch +++ /dev/null @@ -1,114 +0,0 @@ -From 0c7aa6a3ebc29d7986d2417371df210f3e9a65b4 Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <[email protected]> -Date: Tue, 16 Mar 2010 16:55:28 +0100 -Subject: [PATCH 8/8] 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 2ccdfcd..90461b6 100644 ---- a/pixman/pixman-general.c -+++ b/pixman/pixman-general.c -@@ -227,9 +227,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 + dest_y * dst_stride + dest_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 cbd48f3..c20d9f0 100644 ---- a/pixman/pixman-private.h -+++ b/pixman/pixman-private.h -@@ -10,6 +10,7 @@ - - #include "pixman.h" - #include <time.h> -+#include <string.h> - #include <assert.h> - #include <stdio.h> - #include <string.h> -@@ -998,4 +999,46 @@ void pixman_timer_register (pixman_timer_t *timer); - - #endif /* PIXMAN_TIMERS */ - -+/* a helper function, can blit 8-bit images with src/dst overlapping support */ -+static inline void -+pixman_blt_helper (uint8_t *src_bytes, -+ uint8_t *dst_bytes, -+ int src_stride, -+ int dst_stride, -+ int width, -+ int height) -+{ -+ /* -+ * The second part of this check is not strictly needed, but it prevents -+ * unnecessary upside-down processing of areas which belong to different -+ * images. Upside-down processing can be slower with fixed-distance-ahead -+ * prefetch and perceived as having more tearing. -+ */ -+ if (src_bytes < dst_bytes + width && -+ src_bytes + src_stride * height > dst_bytes) -+ { -+ src_bytes += src_stride * height - src_stride; -+ dst_bytes += dst_stride * height - dst_stride; -+ dst_stride = -dst_stride; -+ src_stride = -src_stride; -+ /* Horizontal scrolling to the left needs memmove */ -+ if (src_bytes + width > dst_bytes) -+ { -+ while (--height >= 0) -+ { -+ memmove (dst_bytes, src_bytes, width); -+ dst_bytes += dst_stride; -+ src_bytes += src_stride; -+ } -+ return; -+ } -+ } -+ while (--height >= 0) -+ { -+ memcpy (dst_bytes, src_bytes, width); -+ dst_bytes += dst_stride; -+ src_bytes += src_stride; -+ } -+} -+ - #endif /* PIXMAN_PRIVATE_H */ --- -1.6.6.1 - diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman_0.26.2.bbappend b/meta-oe/recipes-graphics/xorg-lib/pixman_0.26.2.bbappend deleted file mode 100644 index b5be2b5..0000000 --- a/meta-oe/recipes-graphics/xorg-lib/pixman_0.26.2.bbappend +++ /dev/null @@ -1,13 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${P}:" - -PRINC := "${@int(PRINC) + 10}" - -SRC_URI += " file://0008-Generic-C-implementation-of-pixman_blt-with-overlapp.patch \ - file://0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch \ -" - -NEON = " --disable-arm-neon " -NEON_armv7a = " " -NEON_armv7a-vfp-neon = " " - -EXTRA_OECONF += "${NEON}" -- 1.7.4.4 _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
