diff options
author | Martin Jansa <Martin.Jansa@gmail.com> | 2010-08-18 10:39:24 +0200 |
---|---|---|
committer | Martin Jansa <Martin.Jansa@gmail.com> | 2010-08-19 07:27:17 +0200 |
commit | ad76b4625839672a1e042528ba509032903c3be9 (patch) | |
tree | 9fcc303d8ad6908e82827407c23916c97294182c /recipes/xorg-lib | |
parent | a29bf15b9c9c0d15f96c254b2ed830e104ae3436 (diff) | |
download | openembedded-ad76b4625839672a1e042528ba509032903c3be9.tar.gz |
pixman: move 0.18.2 to obsolete
Khem Raj <raj.khem@gmail.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Diffstat (limited to 'recipes/xorg-lib')
10 files changed, 0 insertions, 1075 deletions
diff --git a/recipes/xorg-lib/pixman-0.18.2/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/recipes/xorg-lib/pixman-0.18.2/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch deleted file mode 100644 index b2488de4dd..0000000000 --- a/recipes/xorg-lib/pixman-0.18.2/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch +++ /dev/null @@ -1,114 +0,0 @@ -From 05875eca09ee23ea04ccb32f87c7c355fd1b88f3 Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Tue, 16 Mar 2010 16:55:28 +0100 -Subject: [PATCH 1/7] Generic C implementation of pixman_blt with overlapping support - -Uses memcpy/memmove functions to copy pixels, can handle the -case when both source and destination areas are in the same -image (this is useful for scrolling). - -It is assumed that copying direction is only important when -using the same image for both source and destination (and -src_stride == dst_stride). Copying direction is undefined -for the images with different source and destination stride -which happen to be in the overlapped areas (but this is an -unrealistic case anyway). ---- - pixman/pixman-general.c | 21 ++++++++++++++++++--- - pixman/pixman-private.h | 43 +++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 61 insertions(+), 3 deletions(-) - -diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c -index bddf79a..f525744 100644 ---- a/pixman/pixman-general.c -+++ b/pixman/pixman-general.c -@@ -285,9 +285,24 @@ general_blt (pixman_implementation_t *imp, - int width, - int height) - { -- /* We can't blit unless we have sse2 or mmx */ -- -- return FALSE; -+ uint8_t *dst_bytes = (uint8_t *)dst_bits; -+ uint8_t *src_bytes = (uint8_t *)src_bits; -+ int bpp; -+ -+ if (src_bpp != dst_bpp || src_bpp & 7) -+ return FALSE; -+ -+ bpp = src_bpp >> 3; -+ width *= bpp; -+ src_stride *= 4; -+ dst_stride *= 4; -+ pixman_blt_helper (src_bytes + src_y * src_stride + src_x * bpp, -+ dst_bytes + dst_y * dst_stride + dst_x * bpp, -+ src_stride, -+ dst_stride, -+ width, -+ height); -+ return TRUE; - } - - static pixman_bool_t -diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h -index d5767af..eeb677d 100644 ---- a/pixman/pixman-private.h -+++ b/pixman/pixman-private.h -@@ -10,6 +10,7 @@ - - #include "pixman.h" - #include <time.h> -+#include <string.h> - #include <assert.h> - #include <stdio.h> - #include <string.h> -@@ -867,4 +868,46 @@ void pixman_timer_register (pixman_timer_t *timer); - - #endif /* PIXMAN_TIMERS */ - -+/* a helper function, can blit 8-bit images with src/dst overlapping support */ -+static inline void -+pixman_blt_helper (uint8_t *src_bytes, -+ uint8_t *dst_bytes, -+ int src_stride, -+ int dst_stride, -+ int width, -+ int height) -+{ -+ /* -+ * The second part of this check is not strictly needed, but it prevents -+ * unnecessary upside-down processing of areas which belong to different -+ * images. Upside-down processing can be slower with fixed-distance-ahead -+ * prefetch and perceived as having more tearing. -+ */ -+ if (src_bytes < dst_bytes + width && -+ src_bytes + src_stride * height > dst_bytes) -+ { -+ src_bytes += src_stride * height - src_stride; -+ dst_bytes += dst_stride * height - dst_stride; -+ dst_stride = -dst_stride; -+ src_stride = -src_stride; -+ /* Horizontal scrolling to the left needs memmove */ -+ if (src_bytes + width > dst_bytes) -+ { -+ while (--height >= 0) -+ { -+ memmove (dst_bytes, src_bytes, width); -+ dst_bytes += dst_stride; -+ src_bytes += src_stride; -+ } -+ return; -+ } -+ } -+ while (--height >= 0) -+ { -+ memcpy (dst_bytes, src_bytes, width); -+ dst_bytes += dst_stride; -+ src_bytes += src_stride; -+ } -+} -+ - #endif /* PIXMAN_PRIVATE_H */ --- -1.6.6.1 - diff --git a/recipes/xorg-lib/pixman-0.18.2/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/recipes/xorg-lib/pixman-0.18.2/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch deleted file mode 100644 index ca6a3c5220..0000000000 --- a/recipes/xorg-lib/pixman-0.18.2/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 8aca14948a43f5cfd478e22cef745e55960d68cb 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 2/7] 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 d51b40c..6e0296b 100644 ---- a/pixman/pixman-mmx.c -+++ b/pixman/pixman-mmx.c -@@ -2996,34 +2996,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--) -@@ -3033,7 +3042,7 @@ pixman_blt_mmx (uint32_t *src_bits, - uint8_t *d = dst_bytes; - src_bytes += src_stride; - dst_bytes += dst_stride; -- w = byte_width; -+ w = width; - - while (w >= 2 && ((unsigned long)d & 3)) - { --- -1.6.6.1 - diff --git a/recipes/xorg-lib/pixman-0.18.2/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/recipes/xorg-lib/pixman-0.18.2/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch deleted file mode 100644 index faeb6e67ab..0000000000 --- a/recipes/xorg-lib/pixman-0.18.2/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 56c446d6912936eabcc6bdd583f37ee1209eff8c 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 3/7] 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 d5349d7..aa34012 100644 ---- a/pixman/pixman-sse2.c -+++ b/pixman/pixman-sse2.c -@@ -5328,34 +5328,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); -@@ -5368,7 +5377,7 @@ pixman_blt_sse2 (uint32_t *src_bits, - uint8_t *d = dst_bytes; - src_bytes += src_stride; - dst_bytes += dst_stride; -- w = byte_width; -+ w = width; - - cache_prefetch_next ((__m128i*)s); - cache_prefetch_next ((__m128i*)d); --- -1.6.6.1 - diff --git a/recipes/xorg-lib/pixman-0.18.2/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/recipes/xorg-lib/pixman-0.18.2/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch deleted file mode 100644 index d56fd99c6f..0000000000 --- a/recipes/xorg-lib/pixman-0.18.2/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 80c1eae677a6ea10d67bb7328230626cd8fce08e 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 4/7] Support of overlapping src/dst for pixman_blt_neon - ---- - pixman/pixman-arm-neon.c | 62 +++++++++++++++++++++++++++++++++++++-------- - 1 files changed, 51 insertions(+), 11 deletions(-) - -diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c -index 6808b36..7feee1d 100644 ---- a/pixman/pixman-arm-neon.c -+++ b/pixman/pixman-arm-neon.c -@@ -168,26 +168,66 @@ pixman_blt_neon (uint32_t *src_bits, - int width, - int height) - { -- if (src_bpp != dst_bpp) -+ uint8_t * src_bytes; -+ uint8_t * dst_bytes; -+ int bpp; -+ -+ if (src_bpp != dst_bpp || src_bpp & 7) - return FALSE; - -+ bpp = src_bpp >> 3; -+ width *= bpp; -+ src_stride *= 4; -+ dst_stride *= 4; -+ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp; -+ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp; -+ -+ if (src_bpp != 16 && src_bpp != 32) -+ { -+ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride, -+ width, height); -+ return TRUE; -+ } -+ -+ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes) -+ { -+ src_bytes += src_stride * height - src_stride; -+ dst_bytes += dst_stride * height - dst_stride; -+ dst_stride = -dst_stride; -+ src_stride = -src_stride; -+ -+ if (src_bytes + width > dst_bytes) -+ { -+ /* TODO: reverse scanline copy using NEON */ -+ while (--height >= 0) -+ { -+ memmove (dst_bytes, src_bytes, width); -+ dst_bytes += dst_stride; -+ src_bytes += src_stride; -+ } -+ return TRUE; -+ } -+ } -+ - switch (src_bpp) - { - case 16: - pixman_composite_src_0565_0565_asm_neon ( -- width, height, -- (uint16_t *)(((char *) dst_bits) + -- dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2, -- (uint16_t *)(((char *) src_bits) + -- src_y * src_stride * 4 + src_x * 2), src_stride * 2); -+ width >> 1, -+ height, -+ (uint16_t *) dst_bytes, -+ dst_stride >> 1, -+ (uint16_t *) src_bytes, -+ src_stride >> 1); - return TRUE; - case 32: - pixman_composite_src_8888_8888_asm_neon ( -- width, height, -- (uint32_t *)(((char *) dst_bits) + -- dst_y * dst_stride * 4 + dst_x * 4), dst_stride, -- (uint32_t *)(((char *) src_bits) + -- src_y * src_stride * 4 + src_x * 4), src_stride); -+ width >> 2, -+ height, -+ (uint32_t *) dst_bytes, -+ dst_stride >> 2, -+ (uint32_t *) src_bytes, -+ src_stride >> 2); - return TRUE; - default: - return FALSE; --- -1.6.6.1 - diff --git a/recipes/xorg-lib/pixman-0.18.2/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch b/recipes/xorg-lib/pixman-0.18.2/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch deleted file mode 100644 index 39eda8b546..0000000000 --- a/recipes/xorg-lib/pixman-0.18.2/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch +++ /dev/null @@ -1,169 +0,0 @@ -From 2f5774db49521e990c5e9f7cac684a06f4e67a43 Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Thu, 10 Dec 2009 00:51:50 +0200 -Subject: [PATCH 5/7] ARM: added NEON optimizations for fetch/store r5g6b5 scanline - ---- - pixman/pixman-access.c | 23 ++++++++++++++++++++++- - pixman/pixman-arm-neon-asm.S | 20 ++++++++++++++++++++ - pixman/pixman-arm-neon.c | 41 +++++++++++++++++++++++++++++++++++++++++ - pixman/pixman-private.h | 5 +++++ - 4 files changed, 88 insertions(+), 1 deletions(-) - -diff --git a/pixman/pixman-access.c b/pixman/pixman-access.c -index fa0a267..5bb3e09 100644 ---- a/pixman/pixman-access.c -+++ b/pixman/pixman-access.c -@@ -2748,7 +2748,7 @@ typedef struct - store_scanline_ ## format, store_scanline_generic_64 \ - } - --static const format_info_t accessors[] = -+static format_info_t accessors[] = - { - /* 32 bpp formats */ - FORMAT_INFO (a8r8g8b8), -@@ -2891,6 +2891,27 @@ _pixman_bits_image_setup_raw_accessors (bits_image_t *image) - setup_accessors (image); - } - -+void -+_pixman_bits_override_accessors (pixman_format_code_t format, -+ fetch_scanline_t fetch_func, -+ store_scanline_t store_func) -+{ -+ format_info_t *info = accessors; -+ -+ while (info->format != PIXMAN_null) -+ { -+ if (info->format == format) -+ { -+ if (fetch_func) -+ info->fetch_scanline_raw_32 = fetch_func; -+ if (store_func) -+ info->store_scanline_raw_32 = store_func; -+ return; -+ } -+ info++; -+ } -+} -+ - #else - - void -diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S -index 51bc347..f30869e 100644 ---- a/pixman/pixman-arm-neon-asm.S -+++ b/pixman/pixman-arm-neon-asm.S -@@ -458,6 +458,16 @@ generate_composite_function \ - pixman_composite_src_8888_0565_process_pixblock_tail, \ - pixman_composite_src_8888_0565_process_pixblock_tail_head - -+generate_composite_function_single_scanline \ -+ pixman_store_scanline_r5g6b5_asm_neon, 32, 0, 16, \ -+ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ -+ 8, /* number of pixels, processed in a single block */ \ -+ default_init, \ -+ default_cleanup, \ -+ pixman_composite_src_8888_0565_process_pixblock_head, \ -+ pixman_composite_src_8888_0565_process_pixblock_tail, \ -+ pixman_composite_src_8888_0565_process_pixblock_tail_head -+ - /******************************************************************************/ - - .macro pixman_composite_src_0565_8888_process_pixblock_head -@@ -493,6 +503,16 @@ generate_composite_function \ - pixman_composite_src_0565_8888_process_pixblock_tail, \ - pixman_composite_src_0565_8888_process_pixblock_tail_head - -+generate_composite_function_single_scanline \ -+ pixman_fetch_scanline_r5g6b5_asm_neon, 16, 0, 32, \ -+ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ -+ 8, /* number of pixels, processed in a single block */ \ -+ default_init, \ -+ default_cleanup, \ -+ pixman_composite_src_0565_8888_process_pixblock_head, \ -+ pixman_composite_src_0565_8888_process_pixblock_tail, \ -+ pixman_composite_src_0565_8888_process_pixblock_tail_head -+ - /******************************************************************************/ - - .macro pixman_composite_add_8000_8000_process_pixblock_head -diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c -index 7feee1d..fda7a09 100644 ---- a/pixman/pixman-arm-neon.c -+++ b/pixman/pixman-arm-neon.c -@@ -375,6 +375,43 @@ neon_combine_##name##_u (pixman_implementation_t *imp, \ - BIND_COMBINE_U (over) - BIND_COMBINE_U (add) - -+void -+pixman_fetch_scanline_r5g6b5_asm_neon (int width, -+ uint32_t *buffer, -+ const uint16_t *pixel); -+void -+pixman_store_scanline_r5g6b5_asm_neon (int width, -+ uint16_t *pixel, -+ const uint32_t *values); -+ -+static void -+neon_fetch_scanline_r5g6b5 (pixman_image_t *image, -+ int x, -+ int y, -+ int width, -+ uint32_t * buffer, -+ const uint32_t *mask, -+ uint32_t mask_bits) -+{ -+ const uint32_t *bits = image->bits.bits + y * image->bits.rowstride; -+ const uint16_t *pixel = (const uint16_t *)bits + x; -+ -+ pixman_fetch_scanline_r5g6b5_asm_neon (width, buffer, pixel); -+} -+ -+static void -+neon_store_scanline_r5g6b5 (bits_image_t * image, -+ int x, -+ int y, -+ int width, -+ const uint32_t *values) -+{ -+ uint32_t *bits = image->bits + image->rowstride * y; -+ uint16_t *pixel = ((uint16_t *) bits) + x; -+ -+ pixman_store_scanline_r5g6b5_asm_neon (width, pixel, values); -+} -+ - pixman_implementation_t * - _pixman_implementation_create_arm_neon (void) - { -@@ -385,6 +422,10 @@ _pixman_implementation_create_arm_neon (void) - imp->combine_32[PIXMAN_OP_OVER] = neon_combine_over_u; - imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u; - -+ _pixman_bits_override_accessors (PIXMAN_r5g6b5, -+ neon_fetch_scanline_r5g6b5, -+ neon_store_scanline_r5g6b5); -+ - imp->blt = arm_neon_blt; - imp->fill = arm_neon_fill; - -diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h -index eeb677d..ba2d401 100644 ---- a/pixman/pixman-private.h -+++ b/pixman/pixman-private.h -@@ -220,6 +220,11 @@ void - _pixman_bits_image_setup_raw_accessors (bits_image_t *image); - - void -+_pixman_bits_override_accessors (pixman_format_code_t format, -+ fetch_scanline_t fetch_func, -+ store_scanline_t store_func); -+ -+void - _pixman_image_get_scanline_generic_64 (pixman_image_t *image, - int x, - int y, --- -1.6.6.1 - diff --git a/recipes/xorg-lib/pixman-0.18.2/0006-A-copy-paste-version-of-16bpp-bilinear-scanline-fetc.patch b/recipes/xorg-lib/pixman-0.18.2/0006-A-copy-paste-version-of-16bpp-bilinear-scanline-fetc.patch deleted file mode 100644 index dd0e0f6d4e..0000000000 --- a/recipes/xorg-lib/pixman-0.18.2/0006-A-copy-paste-version-of-16bpp-bilinear-scanline-fetc.patch +++ /dev/null @@ -1,261 +0,0 @@ -From fc24a2d8d0039cd10de4175da40bb784e2c3bf49 Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Fri, 4 Dec 2009 16:49:19 +0000 -Subject: [PATCH 6/7] A copy-paste version of 16bpp bilinear scanline fetcher - ---- - pixman/pixman-bits-image.c | 228 +++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 223 insertions(+), 5 deletions(-) - -diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c -index 3d78ff0..1656975 100644 ---- a/pixman/pixman-bits-image.c -+++ b/pixman/pixman-bits-image.c -@@ -535,6 +535,212 @@ bits_image_fetch_bilinear_no_repeat_8888 (pixman_image_t * ima, - *buffer++ = 0; - } - -+static void -+bits_image_fetch_bilinear_no_repeat_0565 (pixman_image_t * ima, -+ int offset, -+ int line, -+ int width, -+ uint32_t * buffer, -+ const uint32_t * mask, -+ uint32_t mask_bits) -+{ -+ bits_image_t *bits = &ima->bits; -+ pixman_fixed_t x_top, x_bottom, x; -+ pixman_fixed_t ux_top, ux_bottom, ux; -+ pixman_vector_t v; -+ uint32_t top_mask, bottom_mask; -+ uint16_t *top_row; -+ uint16_t *bottom_row; -+ uint32_t *end; -+ uint16_t zero[2] = { 0, 0 }; -+ int y, y1, y2; -+ int disty; -+ int mask_inc; -+ int w; -+ -+ /* reference point is the center of the pixel */ -+ v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2; -+ v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2; -+ v.vector[2] = pixman_fixed_1; -+ -+ if (!pixman_transform_point_3d (bits->common.transform, &v)) -+ return; -+ -+ ux = ux_top = ux_bottom = bits->common.transform->matrix[0][0]; -+ x = x_top = x_bottom = v.vector[0] - pixman_fixed_1/2; -+ -+ y = v.vector[1] - pixman_fixed_1/2; -+ disty = (y >> 8) & 0xff; -+ -+ /* Load the pointers to the first and second lines from the source -+ * image that bilinear code must read. -+ * -+ * The main trick in this code is about the check if any line are -+ * outside of the image; -+ * -+ * When I realize that a line (any one) is outside, I change -+ * the pointer to a dummy area with zeros. Once I change this, I -+ * must be sure the pointer will not change, so I set the -+ * variables to each pointer increments inside the loop. -+ */ -+ y1 = pixman_fixed_to_int (y); -+ y2 = y1 + 1; -+ -+ if (y1 < 0 || y1 >= bits->height) -+ { -+ top_row = zero; -+ x_top = 0; -+ ux_top = 0; -+ } -+ else -+ { -+ top_row = bits->bits + y1 * bits->rowstride; -+ x_top = x; -+ ux_top = ux; -+ } -+ -+ if (y2 < 0 || y2 >= bits->height) -+ { -+ bottom_row = zero; -+ x_bottom = 0; -+ ux_bottom = 0; -+ } -+ else -+ { -+ bottom_row = bits->bits + y2 * bits->rowstride; -+ x_bottom = x; -+ ux_bottom = ux; -+ } -+ -+ /* Instead of checking whether the operation uses the mast in -+ * each loop iteration, verify this only once and prepare the -+ * variables to make the code smaller inside the loop. -+ */ -+ if (!mask) -+ { -+ mask_inc = 0; -+ mask_bits = 1; -+ mask = &mask_bits; -+ } -+ else -+ { -+ /* If have a mask, prepare the variables to check it */ -+ mask_inc = 1; -+ } -+ -+ /* If both are zero, then the whole thing is zero */ -+ if (top_row == zero && bottom_row == zero) -+ { -+ memset (buffer, 0, width * sizeof (uint32_t)); -+ return; -+ } -+ else -+ { -+ if (top_row == zero) -+ { -+ top_mask = 0; -+ bottom_mask = 0xff000000; -+ } -+ else if (bottom_row == zero) -+ { -+ top_mask = 0xff000000; -+ bottom_mask = 0; -+ } -+ else -+ { -+ top_mask = 0xff000000; -+ bottom_mask = 0xff000000; -+ } -+ } -+ -+ end = buffer + width; -+ -+ /* Zero fill to the left of the image */ -+ while (buffer < end && x < pixman_fixed_minus_1) -+ { -+ *buffer++ = 0; -+ x += ux; -+ x_top += ux_top; -+ x_bottom += ux_bottom; -+ mask += mask_inc; -+ } -+ -+ /* Left edge -+ */ -+ while (buffer < end && x < 0) -+ { -+ uint32_t tr, br; -+ int32_t distx; -+ -+ tr = CONVERT_0565_TO_0888 (top_row[pixman_fixed_to_int (x_top) + 1]) | top_mask; -+ br = CONVERT_0565_TO_0888 (bottom_row[pixman_fixed_to_int (x_bottom) + 1]) | bottom_mask; -+ -+ distx = (x >> 8) & 0xff; -+ -+ *buffer++ = bilinear_interpolation (0, tr, 0, br, distx, disty); -+ -+ x += ux; -+ x_top += ux_top; -+ x_bottom += ux_bottom; -+ mask += mask_inc; -+ } -+ -+ /* Main part */ -+ w = pixman_int_to_fixed (bits->width - 1); -+ -+ while (buffer < end && x < w) -+ { -+ if (*mask) -+ { -+ uint32_t tl, tr, bl, br; -+ int32_t distx; -+ -+ tl = CONVERT_0565_TO_0888 (top_row [pixman_fixed_to_int (x_top)]) | top_mask; -+ tr = CONVERT_0565_TO_0888 (top_row [pixman_fixed_to_int (x_top) + 1]) | top_mask; -+ bl = CONVERT_0565_TO_0888 (bottom_row [pixman_fixed_to_int (x_bottom)]) | bottom_mask; -+ br = CONVERT_0565_TO_0888 (bottom_row [pixman_fixed_to_int (x_bottom) + 1]) | bottom_mask; -+ -+ distx = (x >> 8) & 0xff; -+ -+ *buffer = bilinear_interpolation (tl, tr, bl, br, distx, disty); -+ } -+ -+ buffer++; -+ x += ux; -+ x_top += ux_top; -+ x_bottom += ux_bottom; -+ mask += mask_inc; -+ } -+ -+ /* Right Edge */ -+ w = pixman_int_to_fixed (bits->width); -+ while (buffer < end && x < w) -+ { -+ if (*mask) -+ { -+ uint32_t tl, bl; -+ int32_t distx; -+ -+ tl = CONVERT_0565_TO_0888 (top_row [pixman_fixed_to_int (x_top)]) | top_mask; -+ bl = CONVERT_0565_TO_0888 (bottom_row [pixman_fixed_to_int (x_bottom)]) | bottom_mask; -+ -+ distx = (x >> 8) & 0xff; -+ -+ *buffer = bilinear_interpolation (tl, 0, bl, 0, distx, disty); -+ } -+ -+ buffer++; -+ x += ux; -+ x_top += ux_top; -+ x_bottom += ux_bottom; -+ mask += mask_inc; -+ } -+ -+ /* Zero fill to the left of the image */ -+ while (buffer < end) -+ *buffer++ = 0; -+} -+ - static force_inline uint32_t - bits_image_fetch_pixel_convolution (bits_image_t *image, - pixman_fixed_t x, -@@ -917,14 +1123,26 @@ bits_image_property_changed (pixman_image_t *image) - (bits->common.filter == PIXMAN_FILTER_BILINEAR || - bits->common.filter == PIXMAN_FILTER_GOOD || - bits->common.filter == PIXMAN_FILTER_BEST) && -- bits->common.repeat == PIXMAN_REPEAT_NONE && -- (bits->format == PIXMAN_a8r8g8b8 || -- bits->format == PIXMAN_x8r8g8b8)) -+ bits->common.repeat == PIXMAN_REPEAT_NONE) - { - image->common.get_scanline_64 = - _pixman_image_get_scanline_generic_64; -- image->common.get_scanline_32 = -- bits_image_fetch_bilinear_no_repeat_8888; -+ -+ if (bits->format == PIXMAN_a8r8g8b8 || bits->format == PIXMAN_x8r8g8b8) -+ { -+ image->common.get_scanline_32 = -+ bits_image_fetch_bilinear_no_repeat_8888; -+ } -+ else if (bits->format == PIXMAN_r5g6b5) -+ { -+ image->common.get_scanline_32 = -+ bits_image_fetch_bilinear_no_repeat_0565; -+ } -+ else -+ { -+ image->common.get_scanline_32 = -+ bits_image_fetch_transformed; -+ } - } - else - { --- -1.6.6.1 - diff --git a/recipes/xorg-lib/pixman-0.18.2/0007-ARM-added-missing-cache-preload.patch b/recipes/xorg-lib/pixman-0.18.2/0007-ARM-added-missing-cache-preload.patch deleted file mode 100644 index f601d2ce26..0000000000 --- a/recipes/xorg-lib/pixman-0.18.2/0007-ARM-added-missing-cache-preload.patch +++ /dev/null @@ -1,32 +0,0 @@ -From af8a33d3b132c0192d59c47426bb3a201cb64b32 Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Fri, 21 May 2010 13:31:03 +0000 -Subject: [PATCH 7/7] ARM: added missing cache preload - ---- - pixman/pixman-arm-neon-asm.S | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S -index f30869e..dc7fd69 100644 ---- a/pixman/pixman-arm-neon-asm.S -+++ b/pixman/pixman-arm-neon-asm.S -@@ -388,6 +388,7 @@ generate_composite_function \ - vld1.16 {d4, d5}, [DST_R, :128]! - vst1.16 {d28, d29}, [DST_W, :128]! - pixman_composite_over_n_0565_process_pixblock_head -+ cache_preload 8, 8 - .endm - - .macro pixman_composite_over_n_0565_init -@@ -680,6 +681,7 @@ generate_composite_function_single_scanline \ - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! - pixman_composite_over_8888_8888_process_pixblock_head -+ cache_preload 8, 8 - .endm - - .macro pixman_composite_over_n_8888_init --- -1.6.6.1 - diff --git a/recipes/xorg-lib/pixman-0.18.2/565-over-neon.patch b/recipes/xorg-lib/pixman-0.18.2/565-over-neon.patch deleted file mode 100644 index c8156c4d78..0000000000 --- a/recipes/xorg-lib/pixman-0.18.2/565-over-neon.patch +++ /dev/null @@ -1,23 +0,0 @@ -From d297443267de0f5fab49ec245df9055a0dddddaf Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Tue, 25 May 2010 17:21:26 +0000 -Subject: ARM: NEON: don't hit general path for r5g6b5 OVER r5g6b5 operation - -OVER can't be reduced to SRC because the source image is not -considered opaque when repeat is set to PIXMAN_REPEAT_NONE. -An additional fast path table entry solves the problem. ---- -diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c -index 64aa908..394dcea 100644 ---- a/pixman/pixman-arm-neon.c -+++ b/pixman/pixman-arm-neon.c -@@ -246,6 +246,7 @@ static const pixman_fast_path_t arm_neon_fast_paths[] = - PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, x8b8g8r8, neon_composite_over_8888_8888), - PIXMAN_STD_FAST_PATH (OVER, x8r8g8b8, null, a8r8g8b8, neon_composite_src_x888_8888), - PIXMAN_STD_FAST_PATH (OVER, x8b8g8r8, null, a8b8g8r8, neon_composite_src_x888_8888), -+ PIXMAN_STD_FAST_PATH (OVER, r5g6b5, null, r5g6b5, neon_composite_src_0565_0565), - PIXMAN_STD_FAST_PATH (ADD, solid, a8, a8, neon_composite_add_n_8_8), - PIXMAN_STD_FAST_PATH (ADD, a8, a8, a8, neon_composite_add_8_8_8), - PIXMAN_STD_FAST_PATH (ADD, a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_add_8888_8888_8888), --- -cgit v0.8.3-6-g21f6 diff --git a/recipes/xorg-lib/pixman-0.18.2/neon-reverse-u.patch b/recipes/xorg-lib/pixman-0.18.2/neon-reverse-u.patch deleted file mode 100644 index 76726ce1ae..0000000000 --- a/recipes/xorg-lib/pixman-0.18.2/neon-reverse-u.patch +++ /dev/null @@ -1,175 +0,0 @@ -From e0017c2a676b267900e48c6f32a6e973395c83d3 Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Mon, 31 May 2010 16:24:43 +0000 -Subject: ARM: 'neon_combine_out_reverse_u' combiner - ---- -diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S -index f30869e..44fbfce 100644 ---- a/pixman/pixman-arm-neon-asm.S -+++ b/pixman/pixman-arm-neon-asm.S -@@ -597,7 +597,7 @@ generate_composite_function_single_scanline \ - - /******************************************************************************/ - --.macro pixman_composite_over_8888_8888_process_pixblock_head -+.macro pixman_composite_out_reverse_8888_8888_process_pixblock_head - vmvn.8 d24, d3 /* get inverted alpha */ - /* do alpha blending */ - vmull.u8 q8, d24, d4 -@@ -606,7 +606,7 @@ generate_composite_function_single_scanline \ - vmull.u8 q11, d24, d7 - .endm - --.macro pixman_composite_over_8888_8888_process_pixblock_tail -+.macro pixman_composite_out_reverse_8888_8888_process_pixblock_tail - vrshr.u16 q14, q8, #8 - vrshr.u16 q15, q9, #8 - vrshr.u16 q12, q10, #8 -@@ -615,6 +615,56 @@ generate_composite_function_single_scanline \ - vraddhn.u16 d29, q15, q9 - vraddhn.u16 d30, q12, q10 - vraddhn.u16 d31, q13, q11 -+.endm -+ -+.macro pixman_composite_out_reverse_8888_8888_process_pixblock_tail_head -+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! -+ vrshr.u16 q14, q8, #8 -+ PF add PF_X, PF_X, #8 -+ PF tst PF_CTL, #0xF -+ vrshr.u16 q15, q9, #8 -+ vrshr.u16 q12, q10, #8 -+ vrshr.u16 q13, q11, #8 -+ PF addne PF_X, PF_X, #8 -+ PF subne PF_CTL, PF_CTL, #1 -+ vraddhn.u16 d28, q14, q8 -+ vraddhn.u16 d29, q15, q9 -+ PF cmp PF_X, ORIG_W -+ vraddhn.u16 d30, q12, q10 -+ vraddhn.u16 d31, q13, q11 -+ vld4.8 {d0, d1, d2, d3}, [SRC]! -+ PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] -+ vmvn.8 d22, d3 -+ PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] -+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! -+ PF subge PF_X, PF_X, ORIG_W -+ vmull.u8 q8, d22, d4 -+ PF subges PF_CTL, PF_CTL, #0x10 -+ vmull.u8 q9, d22, d5 -+ PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! -+ vmull.u8 q10, d22, d6 -+ PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! -+ vmull.u8 q11, d22, d7 -+.endm -+ -+generate_composite_function_single_scanline \ -+ pixman_composite_scanline_out_reverse_asm_neon, 32, 0, 32, \ -+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ -+ 8, /* number of pixels, processed in a single block */ \ -+ default_init, \ -+ default_cleanup, \ -+ pixman_composite_out_reverse_8888_8888_process_pixblock_head, \ -+ pixman_composite_out_reverse_8888_8888_process_pixblock_tail, \ -+ pixman_composite_out_reverse_8888_8888_process_pixblock_tail_head -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_over_8888_8888_process_pixblock_head -+ pixman_composite_out_reverse_8888_8888_process_pixblock_head -+.endm -+ -+.macro pixman_composite_over_8888_8888_process_pixblock_tail -+ pixman_composite_out_reverse_8888_8888_process_pixblock_tail - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 - .endm -@@ -1416,7 +1466,7 @@ generate_composite_function_single_scanline \ - - /******************************************************************************/ - --.macro pixman_composite_over_8888_n_8888_process_pixblock_head -+.macro pixman_composite_out_reverse_8888_n_8888_process_pixblock_head - /* expecting source data in {d0, d1, d2, d3} */ - /* destination data in {d4, d5, d6, d7} */ - /* solid mask is in d15 */ -@@ -1442,7 +1492,7 @@ generate_composite_function_single_scanline \ - vmull.u8 q11, d24, d7 - .endm - --.macro pixman_composite_over_8888_n_8888_process_pixblock_tail -+.macro pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail - vrshr.u16 q14, q8, #8 - vrshr.u16 q15, q9, #8 - vrshr.u16 q12, q10, #8 -@@ -1451,6 +1501,49 @@ generate_composite_function_single_scanline \ - vraddhn.u16 d29, q15, q9 - vraddhn.u16 d30, q12, q10 - vraddhn.u16 d31, q13, q11 -+.endm -+ -+.macro pixman_composite_out_reverse_8888_8888_8888_init -+ vpush {d8-d15} -+.endm -+ -+.macro pixman_composite_out_reverse_8888_8888_8888_cleanup -+ vpop {d8-d15} -+.endm -+ -+/* TODO: expand macros and do better instructions scheduling */ -+.macro pixman_composite_out_reverse_8888_8888_8888_process_pixblock_tail_head -+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! -+ pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail -+ vld4.8 {d0, d1, d2, d3}, [SRC]! -+ cache_preload 8, 8 -+ vld4.8 {d12, d13, d14, d15}, [MASK]! -+ pixman_composite_out_reverse_8888_n_8888_process_pixblock_head -+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! -+.endm -+ -+generate_composite_function_single_scanline \ -+ pixman_composite_scanline_out_reverse_mask_asm_neon, 32, 32, 32, \ -+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ -+ 8, /* number of pixels, processed in a single block */ \ -+ pixman_composite_out_reverse_8888_8888_8888_init, \ -+ pixman_composite_out_reverse_8888_8888_8888_cleanup, \ -+ pixman_composite_out_reverse_8888_n_8888_process_pixblock_head, \ -+ pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail, \ -+ pixman_composite_out_reverse_8888_8888_8888_process_pixblock_tail_head \ -+ 28, /* dst_w_basereg */ \ -+ 4, /* dst_r_basereg */ \ -+ 0, /* src_basereg */ \ -+ 12 /* mask_basereg */ -+ -+/******************************************************************************/ -+ -+.macro pixman_composite_over_8888_n_8888_process_pixblock_head -+ pixman_composite_out_reverse_8888_n_8888_process_pixblock_head -+.endm -+ -+.macro pixman_composite_over_8888_n_8888_process_pixblock_tail -+ pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 - .endm -diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c -index 394dcea..1be9606 100644 ---- a/pixman/pixman-arm-neon.c -+++ b/pixman/pixman-arm-neon.c -@@ -335,6 +335,7 @@ neon_combine_##name##_u (pixman_implementation_t *imp, \ - - BIND_COMBINE_U (over) - BIND_COMBINE_U (add) -+BIND_COMBINE_U (out_reverse) - - void - pixman_fetch_scanline_r5g6b5_asm_neon (int width, -@@ -382,6 +383,7 @@ _pixman_implementation_create_arm_neon (void) - - imp->combine_32[PIXMAN_OP_OVER] = neon_combine_over_u; - imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u; -+ imp->combine_32[PIXMAN_OP_OUT_REVERSE] = neon_combine_out_reverse_u; - - _pixman_bits_override_accessors (PIXMAN_r5g6b5, - neon_fetch_scanline_r5g6b5, --- -cgit v0.8.3-6-g21f6 diff --git a/recipes/xorg-lib/pixman_0.18.2.bb b/recipes/xorg-lib/pixman_0.18.2.bb deleted file mode 100644 index 0b8d258719..0000000000 --- a/recipes/xorg-lib/pixman_0.18.2.bb +++ /dev/null @@ -1,25 +0,0 @@ -require pixman.inc -PR = "${INC_PR}.1" - -SRC_URI[archive.md5sum] = "5d1378fa61610dd5d3c7e0111b2c5253" -SRC_URI[archive.sha256sum] = "80aee833b429d105d2c7593ef96993da04441b3b747084f1f3bfd7be594e1c45" -SRC_URI += "\ - file://0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch\ - file://0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch\ - file://0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch\ - file://0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch\ - file://0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch\ - file://0006-A-copy-paste-version-of-16bpp-bilinear-scanline-fetc.patch\ - file://0007-ARM-added-missing-cache-preload.patch\ - file://565-over-neon.patch \ - file://neon-reverse-u.patch \ -" - -NEON = " --disable-arm-neon " -NEON_armv7a = " " - -EXTRA_OECONF = "${NEON} --disable-gtk" - -DEFAULT_PREFERENCE = "-1" -DEFAULT_PREFERENCE_angstrom = "2" -DEFAULT_PREFERENCE_shr = "2" |