xserver: Branch 'master' - 4 commits

Søren Sandmann Pedersen sandmann at kemper.freedesktop.org
Mon Jun 11 20:02:42 PDT 2007


 configure.ac   |   15 --
 fb/Makefile.am |   21 ---
 fb/fbcopy.c    |    1 
 fb/fbfill.c    |   17 +-
 fb/fbmmx.c     |  341 ---------------------------------------------------------
 fb/fbmmx.h     |   64 ----------
 fb/fbpict.c    |  201 ---------------------------------
 fb/fbwindow.c  |   26 +---
 8 files changed, 21 insertions(+), 665 deletions(-)

New commits:
diff-tree 78179ae827bb5d19abb1340084362bc51ad5c1e5 (from eb2d7fe02f9cbca57b462bba05498e2d59316fbc)
Author: Søren Sandmann Pedersen <sandmann at redhat.com>
Date:   Mon Jun 11 22:46:42 2007 -0400

    Remove fbmmx.[ch] files

diff --git a/fb/fbmmx.c b/fb/fbmmx.c
deleted file mode 100644
index f962b66..0000000
--- a/fb/fbmmx.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright © 2004, 2005 Red Hat, Inc.
- * Copyright © 2004 Nicholas Miell
- * Copyright © 2005 Trolltech AS
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Red Hat not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission.  Red Hat makes no representations about the
- * suitability of this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author:  Søren Sandmann (sandmann at redhat.com)
- * Minor Improvements: Nicholas Miell (nmiell at gmail.com)
- * MMX code paths for fbcompose.c by Lars Knoll (lars at trolltech.com) 
- *
- * Based on work by Owen Taylor
- */
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifdef USE_MMX
-
-#if defined(__amd64__) || defined(__x86_64__)
-#define USE_SSE
-#endif
-
-#include <mmintrin.h>
-#ifdef USE_SSE
-#include <xmmintrin.h> /* for _mm_shuffle_pi16 and _MM_SHUFFLE */
-#endif
-
-#ifdef RENDER
-
-#include "fb.h"
-#include "fbmmx.h"
-
-#include "picturestr.h"
-#include "mipict.h"
-#include "fbpict.h"
-
-#define noVERBOSE
-
-#ifdef VERBOSE
-#define CHECKPOINT() ErrorF ("at %s %d\n", __FUNCTION__, __LINE__)
-#else
-#define CHECKPOINT()
-#endif
-
-
-typedef unsigned long long ullong;
-
-#ifdef __GNUC__
-typedef ullong mmxdatafield;
-#endif
-#ifdef _MSC_VER
-typedef unsigned __int64 ullong;
-typedef __m64 mmxdatafield;
-#endif
-
-#endif /* RENDER */
-#endif /* USE_MMX */
diff --git a/fb/fbmmx.h b/fb/fbmmx.h
deleted file mode 100644
index 06b079c..0000000
--- a/fb/fbmmx.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright © 2004 Red Hat, Inc.
- * Copyright © 2005 Trolltech AS
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Red Hat not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission.  Red Hat makes no representations about the
- * suitability of this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author:  Søren Sandmann (sandmann at redhat.com)
- *          Lars Knoll (lars at trolltech.com)
- * 
- * Based on work by Owen Taylor
- */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifdef USE_MMX
-
-#if !defined(__amd64__) && !defined(__x86_64__)
-Bool fbHaveMMX(void);
-#else
-#define fbHaveMMX() TRUE
-#endif
-
-#else
-#define fbHaveMMX() FALSE
-#endif
-
diff-tree eb2d7fe02f9cbca57b462bba05498e2d59316fbc (from f52ae237d3eec79ccd64cdd77271aeacc37af70c)
Author: Søren Sandmann Pedersen <sandmann at redhat.com>
Date:   Mon Jun 11 22:43:01 2007 -0400

    Replace fbFillmmx() with pixman_fill() and remove fbmmx.[ch]

diff --git a/configure.ac b/configure.ac
index 9890b9a..4406474 100644
--- a/configure.ac
+++ b/configure.ac
@@ -362,19 +362,6 @@ case $host_os in
 esac
 AM_CONDITIONAL(KDRIVE_HW, test "x$KDRIVE_HW" = xyes)
 
-AC_MSG_CHECKING(for MMX capable platform)
-if test "x$use_x86_asm" = xyes && test "x$GCC" = xyes ; then
-	AC_PREPROC_IFELSE([
-#if (!defined (__GNUC__) || __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4))
-    #error Not supported
-#endif
-], mmx_capable=yes, mmx_capable=no)
-else
-	mmx_capable=no
-fi
-AC_MSG_RESULT([$mmx_capable])
-AM_CONDITIONAL(MMX_CAPABLE, [test "x$mmx_capable" = xyes])
-
 DEFAULT_VENDOR_NAME="The X.Org Foundation"
 DEFAULT_VENDOR_NAME_SHORT="X.Org"
 DEFAULT_VERSION_MAJOR=7
diff --git a/fb/Makefile.am b/fb/Makefile.am
index 28c0cc7..75861a3 100644
--- a/fb/Makefile.am
+++ b/fb/Makefile.am
@@ -1,4 +1,4 @@
-noinst_LTLIBRARIES = libfb.la libwfb.la libfbmmx.la
+noinst_LTLIBRARIES = libfb.la libwfb.la
 
 INCLUDES = \
 	-I$(top_srcdir)/hw/xfree86/os-support \
@@ -12,25 +12,8 @@ endif
 
 libfb_la_CFLAGS = $(AM_CFLAGS)
 
-if MMX_CAPABLE
-libfb_la_CFLAGS += -DUSE_MMX
-
-libfbmmx_la_CFLAGS =				\
-	$(DIX_CFLAGS)				\
-	-DUSE_MMX				\
-	-mmmx					\
-	-msse					\
-	-Winline				\
-	--param inline-unit-growth=10000	\
-        --param large-function-growth=10000
-endif
-
 libwfb_la_CFLAGS = $(AM_CFLAGS) -DFB_ACCESS_WRAPPER
 
-libfbmmx_la_SOURCES =	\
-	fbmmx.c		\
-	fbmmx.h
-
 libfb_la_SOURCES = 	\
 	fb.h		\
 	fb24_32.c	\
@@ -73,6 +56,4 @@ libfb_la_SOURCES = 	\
 
 libwfb_la_SOURCES = $(libfb_la_SOURCES)
 
-libfb_la_LIBADD = libfbmmx.la
-
 EXTRA_DIST = fbcmap.c fbcmap_mi.c
diff --git a/fb/fbcopy.c b/fb/fbcopy.c
index a430203..84053e7 100644
--- a/fb/fbcopy.c
+++ b/fb/fbcopy.c
@@ -29,7 +29,6 @@
 #include <stdlib.h>
 
 #include "fb.h"
-#include "fbmmx.h"
 
 void
 fbCopyNtoN (DrawablePtr	pSrcDrawable,
diff --git a/fb/fbfill.c b/fb/fbfill.c
index 4f13a02..0d624fd 100644
--- a/fb/fbfill.c
+++ b/fb/fbfill.c
@@ -27,7 +27,6 @@
 #endif
 
 #include "fb.h"
-#include "fbmmx.h"
 
 void
 fbFill (DrawablePtr pDrawable,
@@ -47,10 +46,10 @@ fbFill (DrawablePtr pDrawable,
 
     switch (pGC->fillStyle) {
     case FillSolid:
-#ifdef USE_MMX
-	if (!pPriv->and && fbHaveMMX())
+#ifndef FB_ACCESS_WRAPPER
+	if (!pPriv->and)
 	{
-	    if (fbFillmmx (dst, dstStride, dstBpp, x + dstXoff, y + dstYoff, width, height, pPriv->xor))
+	    if (pixman_fill (dst, dstStride, dstBpp, x + dstXoff, y + dstYoff, width, height, pPriv->xor))
 	    {
 		fbFinishAccess (pDrawable);
 		return;
@@ -218,12 +217,12 @@ fbSolidBoxClipped (DrawablePtr	pDrawable
 	if (partY2 <= partY1)
 	    continue;
 
-#ifdef USE_MMX
-	if (!and && fbHaveMMX())
+#ifndef FB_ACCESS_WRAPPER
+	if (!and)
 	{
-	    if (fbFillmmx (dst, dstStride, dstBpp,
-			   partX1 + dstXoff, partX2 + dstYoff, (partX2 - partX1), (partY2 - partY1),
-			   xor))
+	    if (pixman_fill (dst, dstStride, dstBpp,
+			     partX1 + dstXoff, partX2 + dstYoff, (partX2 - partX1), (partY2 - partY1),
+			     xor))
 	    {
 		fbFinishAccess (pDrawable);
 		return;
diff --git a/fb/fbmmx.c b/fb/fbmmx.c
index 452769d..f962b66 100644
--- a/fb/fbmmx.c
+++ b/fb/fbmmx.c
@@ -73,133 +73,5 @@ typedef unsigned __int64 ullong;
 typedef __m64 mmxdatafield;
 #endif
 
-Bool
-fbFillmmx (FbBits *bits,
-	   FbStride stride,
-	   int bpp,
-	   int x,
-	   int y,
-	   int width,
-	   int height,
-	   FbBits xor)
-{
-    ullong	fill;
-    __m64	vfill;
-    CARD32	byte_width;
-    CARD8	*byte_line;
-#ifdef __GNUC__
-    __m64	v1, v2, v3, v4, v5, v6, v7;
-#endif
-    
-    if (bpp == 16 && (xor >> 16 != (xor & 0xffff)))
-	return FALSE;
-    
-    if (bpp != 16 && bpp != 32)
-	return FALSE;
-    
-    if (bpp == 16)
-    {
-	stride = stride * sizeof (FbBits) / 2;
-	byte_line = (CARD8 *)(((CARD16 *)bits) + stride * y + x);
-	byte_width = 2 * width;
-	stride *= 2;
-    }
-    else
-    {
-	stride = stride * sizeof (FbBits) / 4;
-	byte_line = (CARD8 *)(((CARD32 *)bits) + stride * y + x);
-	byte_width = 4 * width;
-	stride *= 4;
-    }
-    
-    fill = ((ullong)xor << 32) | xor;
-    vfill = (__m64)fill;
-    
-#ifdef __GNUC__
-    __asm__ (
-	"movq		%7,	%0\n"
-	"movq		%7,	%1\n"
-	"movq		%7,	%2\n"
-	"movq		%7,	%3\n"
-	"movq		%7,	%4\n"
-	"movq		%7,	%5\n"
-	"movq		%7,	%6\n"
-	: "=y" (v1), "=y" (v2), "=y" (v3),
-	  "=y" (v4), "=y" (v5), "=y" (v6), "=y" (v7)
-	: "y" (vfill));
-#endif
-    
-    while (height--)
-    {
-	int w;
-	CARD8 *d = byte_line;
-	byte_line += stride;
-	w = byte_width;
-	
-	while (w >= 2 && ((unsigned long)d & 3))
-	{
-	    *(CARD16 *)d = xor;
-	    w -= 2;
-	    d += 2;
-	}
-	
-	while (w >= 4 && ((unsigned long)d & 7))
-	{
-	    *(CARD32 *)d = xor;
-	    
-	    w -= 4;
-	    d += 4;
-	}
-
-	while (w >= 64)
-	{
-#ifdef __GNUC__
-	    __asm__ (
-		"movq	%1,	  (%0)\n"
-		"movq	%2,	 8(%0)\n"
-		"movq	%3,	16(%0)\n"
-		"movq	%4,	24(%0)\n"
-		"movq	%5,	32(%0)\n"
-		"movq	%6,	40(%0)\n"
-		"movq	%7,	48(%0)\n"
-		"movq	%8,	56(%0)\n"
-		:
-		: "r" (d),
-		  "y" (vfill), "y" (v1), "y" (v2), "y" (v3),
-		  "y" (v4), "y" (v5), "y" (v6), "y" (v7)
-		: "memory");
-#else
-	    *(__m64*) (d +  0) = vfill;
-	    *(__m64*) (d +  8) = vfill;
-	    *(__m64*) (d + 16) = vfill;
-	    *(__m64*) (d + 24) = vfill;
-	    *(__m64*) (d + 32) = vfill;
-	    *(__m64*) (d + 40) = vfill;
-	    *(__m64*) (d + 48) = vfill;
-	    *(__m64*) (d + 56) = vfill;
-#endif    
-	    w -= 64;
-	    d += 64;
-	}
-	
-	while (w >= 4)
-	{
-	    *(CARD32 *)d = xor;
-	    
-	    w -= 4;
-	    d += 4;
-	}
-	if (w >= 2)
-	{
-	    *(CARD16 *)d = xor;
-	    w -= 2;
-	    d += 2;
-	}
-    }
-    
-    _mm_empty();
-    return TRUE;
-}
-
 #endif /* RENDER */
 #endif /* USE_MMX */
diff --git a/fb/fbmmx.h b/fb/fbmmx.h
index cd685ce..06b079c 100644
--- a/fb/fbmmx.h
+++ b/fb/fbmmx.h
@@ -42,14 +42,3 @@ Bool fbHaveMMX(void);
 #define fbHaveMMX() FALSE
 #endif
 
-#ifdef USE_MMX
-
-Bool fbFillmmx (FbBits *bits,
-		FbStride stride,
-		int bpp,
-		int x,
-		int y,
-		int width,
-		int height,
-		FbBits xor);
-#endif /* USE_MMX */
diff --git a/fb/fbpict.c b/fb/fbpict.c
index 0a42f12..ead84d7 100644
--- a/fb/fbpict.c
+++ b/fb/fbpict.c
@@ -36,7 +36,6 @@
 #include "picturestr.h"
 #include "mipict.h"
 #include "fbpict.h"
-#include "fbmmx.h"
 
 #define mod(a,b) ((b) == 1 ? 0 : (a) >= 0 ? (a) % (b) : (b) - (-a) % (b))
 
@@ -468,203 +467,3 @@ fbPictureInit (ScreenPtr pScreen, PictFo
 
     return TRUE;
 }
-
-#ifdef USE_MMX
-/* The CPU detection code needs to be in a file not compiled with
- * "-mmmx -msse", as gcc would generate CMOV instructions otherwise
- * that would lead to SIGILL instructions on old CPUs that don't have
- * it.
- */
-#if !defined(__amd64__) && !defined(__x86_64__)
-
-#ifdef HAVE_GETISAX
-#include <sys/auxv.h>
-#endif
-
-enum CPUFeatures {
-    NoFeatures = 0,
-    MMX = 0x1,
-    MMX_Extensions = 0x2, 
-    SSE = 0x6,
-    SSE2 = 0x8,
-    CMOV = 0x10
-};
-
-static unsigned int detectCPUFeatures(void) {
-    unsigned int features = 0;
-    unsigned int result = 0;
-
-#ifdef HAVE_GETISAX
-    if (getisax(&result, 1)) {
-        if (result & AV_386_CMOV)
-            features |= CMOV;
-        if (result & AV_386_MMX)
-            features |= MMX;
-        if (result & AV_386_AMD_MMX)
-            features |= MMX_Extensions;
-        if (result & AV_386_SSE)
-            features |= SSE;
-        if (result & AV_386_SSE2)
-            features |= SSE2;
-    }
-#else
-    char vendor[13];
-#ifdef _MSC_VER
-    int vendor0 = 0, vendor1, vendor2;
-#endif
-    vendor[0] = 0;
-    vendor[12] = 0;
-
-#ifdef __GNUC__
-    /* see p. 118 of amd64 instruction set manual Vol3 */
-    /* We need to be careful about the handling of %ebx and
-     * %esp here. We can't declare either one as clobbered
-     * since they are special registers (%ebx is the "PIC
-     * register" holding an offset to global data, %esp the
-     * stack pointer), so we need to make sure they have their
-     * original values when we access the output operands.
-     */
-    __asm__ ("pushf\n"
-             "pop %%eax\n"
-             "mov %%eax, %%ecx\n"
-             "xor $0x00200000, %%eax\n"
-             "push %%eax\n"
-             "popf\n"
-             "pushf\n"
-             "pop %%eax\n"
-             "mov $0x0, %%edx\n"
-             "xor %%ecx, %%eax\n"
-             "jz 1f\n"
-
-             "mov $0x00000000, %%eax\n"
-	     "push %%ebx\n"
-             "cpuid\n"
-             "mov %%ebx, %%eax\n"
-	     "pop %%ebx\n"
-	     "mov %%eax, %1\n"
-             "mov %%edx, %2\n"
-             "mov %%ecx, %3\n"
-             "mov $0x00000001, %%eax\n"
-	     "push %%ebx\n"
-             "cpuid\n"
-	     "pop %%ebx\n"
-             "1:\n"
-             "mov %%edx, %0\n"
-             : "=r" (result), 
-               "=m" (vendor[0]), 
-               "=m" (vendor[4]), 
-               "=m" (vendor[8])
-             :
-             : "%eax", "%ecx", "%edx"
-        );
-
-#elif defined (_MSC_VER)
-
-    _asm {
-      pushfd
-      pop eax
-      mov ecx, eax
-      xor eax, 00200000h
-      push eax
-      popfd
-      pushfd
-      pop eax
-      mov edx, 0
-      xor eax, ecx
-      jz nocpuid
-
-      mov eax, 0
-      push ebx
-      cpuid
-      mov eax, ebx
-      pop ebx
-      mov vendor0, eax
-      mov vendor1, edx
-      mov vendor2, ecx
-      mov eax, 1
-      push ebx
-      cpuid
-      pop ebx
-    nocpuid:
-      mov result, edx
-    }
-    memmove (vendor+0, &vendor0, 4);
-    memmove (vendor+4, &vendor1, 4);
-    memmove (vendor+8, &vendor2, 4);
-
-#else
-#   error unsupported compiler
-#endif
-    
-    features = 0;
-    if (result) {
-        /* result now contains the standard feature bits */
-        if (result & (1 << 15))
-            features |= CMOV;
-        if (result & (1 << 23))
-            features |= MMX;
-        if (result & (1 << 25))
-            features |= SSE;
-        if (result & (1 << 26))
-            features |= SSE2;
-        if ((features & MMX) && !(features & SSE) &&
-            (strcmp(vendor, "AuthenticAMD") == 0 ||
-             strcmp(vendor, "Geode by NSC") == 0)) {
-            /* check for AMD MMX extensions */
-#ifdef __GNUC__
-            __asm__("push %%ebx\n"
-                    "mov $0x80000000, %%eax\n"
-                    "cpuid\n"
-                    "xor %%edx, %%edx\n"
-                    "cmp $0x1, %%eax\n"
-                    "jge 2f\n"
-                    "mov $0x80000001, %%eax\n"
-                    "cpuid\n"
-                    "2:\n"
-                    "pop %%ebx\n"
-                    "mov %%edx, %0\n"
-                    : "=r" (result)
-                    :
-                    : "%eax", "%ecx", "%edx"
-                );
-#elif defined _MSC_VER
-            _asm {
-              push ebx
-              mov eax, 80000000h
-              cpuid
-              xor edx, edx
-              cmp eax, 1
-              jge notamd
-              mov eax, 80000001h
-              cpuid
-            notamd:
-              pop ebx
-              mov result, edx
-            }
-#endif
-            if (result & (1<<22))
-                features |= MMX_Extensions;
-        }
-    }
-#endif /* HAVE_GETISAX */
-
-    return features;
-}
-
-Bool
-fbHaveMMX (void)
-{
-    static Bool initialized = FALSE;
-    static Bool mmx_present;
-
-    if (!initialized)
-    {
-        unsigned int features = detectCPUFeatures();
-	mmx_present = (features & (MMX|MMX_Extensions)) == (MMX|MMX_Extensions);
-        initialized = TRUE;
-    }
-    
-    return mmx_present;
-}
-#endif /* __amd64__ */
-#endif
diff --git a/fb/fbwindow.c b/fb/fbwindow.c
index 5b3f446..fc036d3 100644
--- a/fb/fbwindow.c
+++ b/fb/fbwindow.c
@@ -30,10 +30,6 @@
 
 #include "fb.h"
 
-#ifdef USE_MMX
-#include "fbmmx.h"
-#endif
-
 Bool
 fbCreateWindow(WindowPtr pWin)
 {
@@ -222,22 +218,22 @@ fbFillRegionSolid (DrawablePtr	pDrawable
     int		n = REGION_NUM_RECTS(pRegion);
     BoxPtr	pbox = REGION_RECTS(pRegion);
 
-#ifdef USE_MMX
-    int has_mmx = 0;
-    if (!and && fbHaveMMX())
-        has_mmx = 1;
+#ifndef FB_ACCESS_WRAPPER
+    int try_mmx = 0;
+    if (!and)
+        try_mmx = 1;
 #endif
 
     fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
     
     while (n--)
     {
-#ifdef USE_MMX
-	if (!has_mmx || !fbFillmmx (dst, dstStride, dstBpp,
-				    pbox->x1 + dstXoff, pbox->y1 + dstYoff,
-				    (pbox->x2 - pbox->x1),
-				    (pbox->y2 - pbox->y1),
-				    xor))
+#ifndef FB_ACCESS_WRAPPER
+	if (!try_mmx || !pixman_fill (dst, dstStride, dstBpp,
+				      pbox->x1 + dstXoff, pbox->y1 + dstYoff,
+				      (pbox->x2 - pbox->x1),
+				      (pbox->y2 - pbox->y1),
+				      xor))
 	{
 #endif
 	    fbSolid (dst + (pbox->y1 + dstYoff) * dstStride,
@@ -247,7 +243,7 @@ fbFillRegionSolid (DrawablePtr	pDrawable
 		     (pbox->x2 - pbox->x1) * dstBpp,
 		     pbox->y2 - pbox->y1,
 		     and, xor);
-#ifdef USE_MMX
+#ifndef FB_ACCESS_WRAPPER
 	}
 #endif
 	fbValidateDrawable (pDrawable);
diff-tree f52ae237d3eec79ccd64cdd77271aeacc37af70c (from d1d85c04e248f46b1cf1b1d25fdd56aa69b8f0ee)
Author: Søren Sandmann Pedersen <sandmann at redhat.com>
Date:   Mon Jun 11 22:02:39 2007 -0400

    Require pixman 0.9.2

diff --git a/configure.ac b/configure.ac
index a5160a2..9890b9a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -626,7 +626,7 @@ XEXT_INC='-I$(top_srcdir)/Xext'
 XEXT_LIB='$(top_builddir)/Xext/libXext.la'
 XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
 
-PIXMAN="[pixman >= 0.9.1]"
+PIXMAN="[pixman >= 0.9.2]"
 
 dnl Core modules for most extensions, et al.
 REQUIRED_MODULES="[randrproto >= 1.2] renderproto [fixesproto >= 4.0] [damageproto >= 1.1] xcmiscproto xextproto [xproto >= 7.0.9] xtrans [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto [inputproto >= 1.4.2] [kbproto >= 1.0.3]"
diff-tree d1d85c04e248f46b1cf1b1d25fdd56aa69b8f0ee (from 3f9adb18f127318d054f30a57e3a77176e14c692)
Author: Søren Sandmann Pedersen <sandmann at redhat.com>
Date:   Mon Jun 11 21:25:42 2007 -0400

    Delete fbBltmmx().

diff --git a/fb/fbmmx.c b/fb/fbmmx.c
index 3522a00..452769d 100644
--- a/fb/fbmmx.c
+++ b/fb/fbmmx.c
@@ -201,141 +201,5 @@ fbFillmmx (FbBits *bits,
     return TRUE;
 }
 
-Bool
-fbBltmmx (FbBits *src_bits,
-	  FbBits *dst_bits,
-	  FbStride src_stride,
-	  FbStride dst_stride,
-	  int src_bpp,
-	  int dst_bpp,
-	  int src_x, int src_y,
-	  int dst_x, int dst_y,
-	  int width, int height)
-{
-    CARD8 *	src_bytes;
-    CARD8 *	dst_bytes;
-    int		byte_width;
-    
-    if (src_bpp != dst_bpp)
-	return FALSE;
-    
-    if (src_bpp == 16)
-    {
-	src_stride = src_stride * sizeof (FbBits) / 2;
-	dst_stride = dst_stride * sizeof (FbBits) / 2;
-	src_bytes = (CARD8 *)(((CARD16 *)src_bits) + src_stride * (src_y) + (src_x));
-	dst_bytes = (CARD8 *)(((CARD16 *)dst_bits) + dst_stride * (dst_y) + (dst_x));
-	byte_width = 2 * width;
-	src_stride *= 2;
-	dst_stride *= 2;
-    } else if (src_bpp == 32) {
-	src_stride = src_stride * sizeof (FbBits) / 4;
-	dst_stride = dst_stride * sizeof (FbBits) / 4;
-	src_bytes = (CARD8 *)(((CARD32 *)src_bits) + src_stride * (src_y) + (src_x));
-	dst_bytes = (CARD8 *)(((CARD32 *)dst_bits) + dst_stride * (dst_y) + (dst_x));
-	byte_width = 4 * width;
-	src_stride *= 4;
-	dst_stride *= 4;
-    } else {
-	return FALSE;
-    }
-
-    while (height--)
-    {
-	int w;
-	CARD8 *s = src_bytes;
-	CARD8 *d = dst_bytes;
-	src_bytes += src_stride;
-	dst_bytes += dst_stride;
-	w = byte_width;
-	
-	while (w >= 2 && ((unsigned long)d & 3))
-	{
-	    *(CARD16 *)d = *(CARD16 *)s;
-	    w -= 2;
-	    s += 2;
-	    d += 2;
-	}
-	
-	while (w >= 4 && ((unsigned long)d & 7))
-	{
-	    *(CARD32 *)d = *(CARD32 *)s;
-	    
-	    w -= 4;
-	    s += 4;
-	    d += 4;
-	}
-	
-	while (w >= 64)
-	{
-#ifdef __GNUC__
-	    __asm__ (
-		"movq	  (%1),	  %%mm0\n"
-		"movq	 8(%1),	  %%mm1\n"
-		"movq	16(%1),	  %%mm2\n"
-		"movq	24(%1),	  %%mm3\n"
-		"movq	32(%1),	  %%mm4\n"
-		"movq	40(%1),	  %%mm5\n"
-		"movq	48(%1),	  %%mm6\n"
-		"movq	56(%1),	  %%mm7\n"
-
-		"movq	%%mm0,	  (%0)\n"
-		"movq	%%mm1,	 8(%0)\n"
-		"movq	%%mm2,	16(%0)\n"
-		"movq	%%mm3,	24(%0)\n"
-		"movq	%%mm4,	32(%0)\n"
-		"movq	%%mm5,	40(%0)\n"
-		"movq	%%mm6,	48(%0)\n"
-		"movq	%%mm7,	56(%0)\n"
-		:
-		: "r" (d), "r" (s)
-		: "memory",
-		  "%mm0", "%mm1", "%mm2", "%mm3",
-		  "%mm4", "%mm5", "%mm6", "%mm7");
-#else
-	    __m64 v0 = *(__m64 *)(s + 0);
-	    __m64 v1 = *(__m64 *)(s + 8);
-	    __m64 v2 = *(__m64 *)(s + 16);
-	    __m64 v3 = *(__m64 *)(s + 24);
-	    __m64 v4 = *(__m64 *)(s + 32);
-	    __m64 v5 = *(__m64 *)(s + 40);
-	    __m64 v6 = *(__m64 *)(s + 48);
-	    __m64 v7 = *(__m64 *)(s + 56);
-	    *(__m64 *)(d + 0)  = v0;
-	    *(__m64 *)(d + 8)  = v1;
-	    *(__m64 *)(d + 16) = v2;
-	    *(__m64 *)(d + 24) = v3;
-	    *(__m64 *)(d + 32) = v4;
-	    *(__m64 *)(d + 40) = v5;
-	    *(__m64 *)(d + 48) = v6;
-	    *(__m64 *)(d + 56) = v7;
-#endif	    
-	    
-	    w -= 64;
-	    s += 64;
-	    d += 64;
-	}
-	while (w >= 4)
-	{
-	    *(CARD32 *)d = *(CARD32 *)s;
-
-	    w -= 4;
-	    s += 4;
-	    d += 4;
-	}
-	if (w >= 2)
-	{
-	    *(CARD16 *)d = *(CARD16 *)s;
-	    w -= 2;
-	    s += 2;
-	    d += 2;
-	}
-    }
-    
-    _mm_empty();
-
-    return TRUE;
-}
-
 #endif /* RENDER */
 #endif /* USE_MMX */
diff --git a/fb/fbmmx.h b/fb/fbmmx.h
index 7d32a38..cd685ce 100644
--- a/fb/fbmmx.h
+++ b/fb/fbmmx.h
@@ -44,15 +44,6 @@ Bool fbHaveMMX(void);
 
 #ifdef USE_MMX
 
-Bool fbBltmmx (FbBits *src_bits,
-	       FbBits *dst_bits,
-	       FbStride src_stride,
-	       FbStride dst_stride,
-	       int src_bpp,
-	       int dst_bpp,
-	       int src_x, int src_y,
-	       int dst_x, int dst_y,
-	       int width, int height);
 Bool fbFillmmx (FbBits *bits,
 		FbStride stride,
 		int bpp,


More information about the xorg-commit mailing list