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