summaryrefslogtreecommitdiff
path: root/packages/xorg-xserver/xserver-kdrive-1.2.0/fbcompositesrc8888revnpx0565.patch
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /packages/xorg-xserver/xserver-kdrive-1.2.0/fbcompositesrc8888revnpx0565.patch
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'packages/xorg-xserver/xserver-kdrive-1.2.0/fbcompositesrc8888revnpx0565.patch')
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.2.0/fbcompositesrc8888revnpx0565.patch194
1 files changed, 0 insertions, 194 deletions
diff --git a/packages/xorg-xserver/xserver-kdrive-1.2.0/fbcompositesrc8888revnpx0565.patch b/packages/xorg-xserver/xserver-kdrive-1.2.0/fbcompositesrc8888revnpx0565.patch
deleted file mode 100644
index e128123419..0000000000
--- a/packages/xorg-xserver/xserver-kdrive-1.2.0/fbcompositesrc8888revnpx0565.patch
+++ /dev/null
@@ -1,194 +0,0 @@
-Hello all,
-
-The attached patch provides a fast path for the case of performing
-a8b8g8r8 non-premultiplied (aka the GdkPixbuf format) OVER r5g6b5 via
-a new function called fbCompositeSrc_8888RevNPx0565. Basically, it's
-just an adaptation of the previous work I talked about here:
-
-http://lists.freedesktop.org/archives/xorg/2007-April/023763.html
-
-On my Nokia N800, I get a 3.4x speedup when running this little gdk
-benchmark program:
-
-http://amelang.net/composite_pixbuf.c
-
-The source file is kinda large (4.5MB) due to an embedded GdkPixbuf.
-
-Dan Amelang
--------------- next part --------------
-From 63bdc0476c09669cabccffe4b35f8f56aff965a5 Mon Sep 17 00:00:00 2001
-From: Dan Amelang <dan at amelang.net>
-Date: Mon, 30 Apr 2007 03:22:52 -0700
-Subject: [PATCH] Implement fbCompositeSrc_8888RevNPx0565
-
-This provides a fast path for the common case of compositing GdkPixmaps
-with r5g6b5 images. On a simple GDK benchmark application, I get a
-3.4x increase in performance on the Nokia N800 (which currently is
-running xserver 1.1.99.3).
-
-All of the optimizations used here are already explained in the following
-post to the Xorg mailing list:
-
- http://lists.freedesktop.org/archives/xorg/2007-April/023763.html
----
- fb/fbpict.c | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 139 insertions(+), 0 deletions(-)
-
-diff --git a/fb/fbpict.c b/fb/fbpict.c
-index a735967..3bd57fb 100644
---- a/fb/fbpict.c
-+++ b/fb/fbpict.c
-@@ -781,6 +781,143 @@ fbCompositeSrc_8888x0565 (CARD8 op,
- fbFinishAccess (pSrc->pDrawable);
- }
-
-+
-+#define cvt8888Revto0565(s) ((((s) >> 19) & 0x001f) | \
-+ (((s) >> 5) & 0x07e0) | \
-+ (((s) << 8) & 0xf800))
-+
-+#define FbOverU_8888RevNPx565(s, d) \
-+ \
-+ /* Extract alpha */ \
-+ s_a = (s) >> 24; \
-+ \
-+ /* Extract r8g8b8 color channels */ \
-+ s_r = ( (s) & 0xff); \
-+ s_g = (((s) >> 8) & 0xff); \
-+ s_b = (((s) >> 16) & 0xff); \
-+ \
-+ /* Extract r5g6b5 color channels */ \
-+ d_r = ((d) >> 8) & 0xf8; \
-+ d_g = ((d) >> 3) & 0xfc; \
-+ d_b = ((d) << 3) & 0xf8; \
-+ \
-+ /* Use the higher bits of the channel to fill out the bottom */ \
-+ d_r |= (d_r >> 5); \
-+ d_g |= (d_g >> 6); \
-+ d_b |= (d_b >> 5); \
-+ \
-+ /* Blend */ \
-+ d_r = (s_r - d_r) * s_a + (d_r << 8); \
-+ d_g = (s_g - d_g) * s_a + (d_g << 8); \
-+ d_b = (s_b - d_b) * s_a + (d_b << 8); \
-+ \
-+ /* Pack result as r5g6b5 */ \
-+ (d) = (d_r & 0xf800) | ((d_g & 0xfc00) >> 5) | (d_b >> 11)
-+
-+void
-+fbCompositeSrc_8888RevNPx0565 (FbComposeData *params)
-+{
-+ CARD16 *dstLine, *dst;
-+ CARD32 *srcLine, *src;
-+ FbStride dstStride, srcStride;
-+ int w, h;
-+
-+ fbComposeGetStart (params->src, params->xSrc, params->ySrc, CARD32,
-+ srcStride, srcLine, 1);
-+ fbComposeGetStart (params->dest, params->xDest, params->yDest, CARD16,
-+ dstStride, dstLine, 1);
-+ h = params->height;
-+
-+ while (h--)
-+ {
-+ CARD32 s1, s2, s3, s4;
-+ int d_r, d_g, d_b, s_r, s_g, s_b, s_a;
-+ CARD32 *dst_2px_wide;
-+
-+ src = srcLine;
-+ srcLine += srcStride;
-+ dst_2px_wide = (CARD32 *) dstLine;
-+ dstLine += dstStride;
-+ w = params->width - 4;
-+
-+ while (w >= 0)
-+ {
-+ s1 = *src;
-+ s2 = *(src + 1);
-+ s3 = *(src + 2);
-+ s4 = *(src + 3);
-+
-+ w -= 4;
-+ src += 4;
-+
-+ /* Check if the next 4 pixels are opaque */
-+ if ((s1 & s2 & s3 & s4) > 0xfeffffff)
-+ {
-+ /* In this case, we just perform a SOURCE for all 4 pixels */
-+#if X_BYTE_ORDER == X_BIG_ENDIAN
-+ *dst_2px_wide++ = (cvt8888Revto0565 (s1) << 16) |
-+ cvt8888Revto0565 (s2);
-+ *dst_2px_wide++ = (cvt8888Revto0565 (s3) << 16) |
-+ cvt8888Revto0565 (s4);
-+#else
-+ *dst_2px_wide++ = cvt8888Revto0565 (s1) |
-+ (cvt8888Revto0565 (s2) << 16);
-+ *dst_2px_wide++ = cvt8888Revto0565 (s3) |
-+ (cvt8888Revto0565 (s4) << 16);
-+#endif
-+ }
-+ /* Next, check if the next 4 pixels have any alpha in them at all */
-+ else if ((s1 | s2 | s3 | s4) > 0x00ffffff)
-+ {
-+ /* In which case, we perform OVER on each one of them */
-+ CARD32 d1, d2, d3, d4;
-+
-+#if X_BYTE_ORDER == X_BIG_ENDIAN
-+ d1 = (*dst_2px_wide >> 16);
-+ d2 = (*dst_2px_wide & 0xffff);
-+ FbOverU_8888RevNPx565 (s1, d1);
-+ FbOverU_8888RevNPx565 (s2, d2);
-+ *dst_2px_wide++ = (d1 << 16) | d2;
-+#else
-+ d2 = (*dst_2px_wide >> 16);
-+ d1 = (*dst_2px_wide & 0xffff);
-+ FbOverU_8888RevNPx565 (s1, d1);
-+ FbOverU_8888RevNPx565 (s2, d2);
-+ *dst_2px_wide++ = d1 | (d2 << 16);
-+#endif
-+
-+#if X_BYTE_ORDER == X_BIG_ENDIAN
-+ d3 = (*dst_2px_wide >> 16);
-+ d4 = (*dst_2px_wide & 0xffff);
-+ FbOverU_8888RevNPx565 (s3, d3);
-+ FbOverU_8888RevNPx565 (s4, d4);
-+ *dst_2px_wide++ = (d3 << 16) | d4;
-+#else
-+ d4 = (*dst_2px_wide >> 16);
-+ d3 = (*dst_2px_wide & 0xffff);
-+ FbOverU_8888RevNPx565 (s3, d3);
-+ FbOverU_8888RevNPx565 (s4, d4);
-+ *dst_2px_wide++ = d3 | (d4 << 16);
-+#endif
-+ }
-+ else
-+ {
-+ /* Do nothing, since the source pixels are all transparent */
-+ dst_2px_wide += 2;
-+ }
-+ }
-+
-+ /* Deal with left over pixels */
-+ for (dst = (CARD16 *) dst_2px_wide; w > -4; w--)
-+ {
-+ CARD32 d = *dst;
-+ CARD32 s = *src++;
-+ FbOverU_8888RevNPx565 (s, d);
-+ *dst++ = d;
-+ }
-+ }
-+}
-+
- void
- fbCompositeSrcAdd_8000x8000 (CARD8 op,
- PicturePtr pSrc,
-@@ -1669,7 +1806,9 @@ fbComposite (CARD8 op,
- #ifdef USE_MMX
- if (fbHaveMMX())
- func = fbCompositeSrc_8888RevNPx0565mmx;
-+ else
- #endif
-+ func = fbCompositeSrc_8888RevNPx0565;
- break;
- default:
- break;