b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Copyright © 2004 Red Hat, Inc.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Copyright © 2005 Trolltech AS
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Permission to use, copy, modify, distribute, and sell this software and its
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * documentation for any purpose is hereby granted without fee, provided that
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * the above copyright notice appear in all copies and that both that
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * copyright notice and this permission notice appear in supporting
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * documentation, and that the name of Red Hat not be used in advertising or
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * publicity pertaining to distribution of the software without specific,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * written prior permission. Red Hat makes no representations about the
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * suitability of this software for any purpose. It is provided "as is"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * without express or implied warranty.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * SOFTWARE.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Author: Søren Sandmann (sandmann@redhat.com)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Lars Knoll (lars@trolltech.com)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Based on work by Owen Taylor
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifdef HAVE_DIX_CONFIG_H
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include <dix-config.h>
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifdef USE_MMX
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#if !defined(__amd64__) && !defined(__x86_64__)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncBool fbHaveMMX(void);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#else
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define fbHaveMMX() TRUE
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#else
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define fbHaveMMX() FALSE
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifdef USE_MMX
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid fbComposeSetupMMX(void);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid fbCompositeSolidMask_nx8888x0565Cmmx (CARD8 op,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 ySrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 height);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid fbCompositeSrcAdd_8888x8888mmx (CARD8 op,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 ySrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 height);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid fbCompositeSrc_8888x8888mmx (CARD8 op,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 ySrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 height);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid fbCompositeSolidMask_nx8888x8888Cmmx (CARD8 op,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 ySrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 height);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid fbCompositeSolidMask_nx8x8888mmx (CARD8 op,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 ySrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 height);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid fbCompositeSrcAdd_8000x8000mmx (CARD8 op,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 ySrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 height);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid fbCompositeSrc_8888RevNPx8888mmx (CARD8 op,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 ySrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 height);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid fbCompositeSrc_8888RevNPx0565mmx (CARD8 op,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 ySrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 height);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid fbCompositeSolid_nx8888mmx (CARD8 op,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 ySrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 height);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid fbCompositeSolid_nx0565mmx (CARD8 op,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 ySrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 height);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid fbCompositeSolidMask_nx8x0565mmx (CARD8 op,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 ySrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 height);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid fbCompositeSrc_8888x8x8888mmx (CARD8 op,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 ySrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 height);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncBool fbCopyAreammx (DrawablePtr pSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync DrawablePtr pDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int src_x,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int src_y,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int dst_x,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int dst_y,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int height);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncvoid fbCompositeCopyAreammx (CARD8 op,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PicturePtr pDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xSrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 ySrc,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yMask,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 xDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync INT16 yDst,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync CARD16 height);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncBool fbSolidFillmmx (DrawablePtr pDraw,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int x,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int y,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int width,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int height,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync FbBits xor);
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif /* USE_MMX */