Update MGA composite patch commit. (some files were missing in the previous

commit)
This commit is contained in:
Damien Ciabrini 2004-06-16 21:36:54 +00:00
parent e56e24af25
commit da78a4ddd8
4 changed files with 505 additions and 5 deletions

192
hw/kdrive/mga/g400_common.h Normal file
View File

@ -0,0 +1,192 @@
/*
* $Id$
*
* Copyright © 2004 Damien Ciabrini
*
* 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 Anders Carlsson not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Anders Carlsson makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* DAMIEN CIABRINI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL ANDERS CARLSSON 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.
*/
/* $Header$ */
#ifndef __G400_COMMON_H__
#define __G400_COMMON_H__
/* Color registers */
#define MGA_REG_DR4 (0x1CD0)
#define MGA_REG_DR6 (0x1CD8)
#define MGA_REG_DR7 (0x1CDC)
#define MGA_REG_DR8 (0x1CE0)
#define MGA_REG_DR10 (0x1CE8)
#define MGA_REG_DR11 (0x1CEC)
#define MGA_REG_DR12 (0x1CF0)
#define MGA_REG_DR14 (0x1CF8)
#define MGA_REG_DR15 (0x1CFC)
/* Alpha registers */
#define MGA_REG_ALPHASTART (0x2C70)
#define MGA_REG_ALPHAXINC (0x2C74)
#define MGA_REG_ALPHAYINC (0x2C78)
#define MGA_REG_ALPHACTRL (0x2C7C)
# define MGA_SRC_ZERO (0x00000000)
# define MGA_SRC_ONE (0x00000001)
# define MGA_SRC_DST_COLOR (0x00000002)
# define MGA_SRC_ONE_MINUS_DST_COLOR (0x00000003)
# define MGA_SRC_ALPHA (0x00000004)
# define MGA_SRC_ONE_MINUS_SRC_ALPHA (0x00000005)
# define MGA_SRC_DST_ALPHA (0x00000006)
# define MGA_SRC_ONE_MINUS_DST_ALPHA (0x00000007)
# define MGA_SRC_SRC_ALPHA_SATURATE (0x00000008)
# define MGA_DST_ZERO (0x00000000)
# define MGA_DST_ONE (0x00000010)
# define MGA_DST_SRC_COLOR (0x00000020)
# define MGA_DST_ONE_MINUS_SRC_COLOR (0x00000030)
# define MGA_DST_SRC_ALPHA (0x00000040)
# define MGA_DST_ONE_MINUS_SRC_ALPHA (0x00000050)
# define MGA_DST_DST_ALPHA (0x00000060)
# define MGA_DST_ONE_MINUS_DST_ALPHA (0x00000070)
# define MGA_ALPHACHANNEL (0x00000100)
# define MGA_VIDEOALPHA (0x00000200)
# define MGA_DIFFUSEDALPHA (0x01000000)
# define MGA_MODULATEDALPHA (0x02000000)
/* Textures registers */
#define MGA_REG_TEXORG (0x2c24)
#define MGA_REG_TEXORG1 (0x2ca4)
#define MGA_REG_TEXWIDTH (0x2C28)
#define MGA_REG_TEXHEIGHT (0x2C2C)
#define MGA_REG_TMR0 (0x2C00)
#define MGA_REG_TMR1 (0x2C04)
#define MGA_REG_TMR2 (0x2C08)
#define MGA_REG_TMR3 (0x2C0C)
#define MGA_REG_TMR4 (0x2C10)
#define MGA_REG_TMR5 (0x2C14)
#define MGA_REG_TMR6 (0x2C18)
#define MGA_REG_TMR7 (0x2C1C)
#define MGA_REG_TMR8 (0x2C20)
/* Texture Control Registers */
#define MGA_REG_TEXCTL (0x2C30)
# define MGA_TW4 (0x00000000)
# define MGA_TW8 (0x00000001)
# define MGA_TW15 (0x00000002)
# define MGA_TW16 (0x00000003)
# define MGA_TW12 (0x00000004)
# define MGA_TW32 (0x00000006)
# define MGA_TW8A (0x00000007)
# define MGA_TW8AL (0x00000008)
# define MGA_TW422 (0x0000000A)
# define MGA_TW422UYVY (0x0000000B)
# define MGA_PITCHEXT (0x00000100)
# define MGA_NOPERSPECTIVE (0x00200000)
# define MGA_TAKEY (0x02000000)
# define MGA_TAMASK (0x04000000)
# define MGA_CLAMPUV (0x18000000)
#define MGA_REG_TEXCTL2 (0x2C3C)
# define MGA_G400_TC2_MAGIC (0x00008000)
# define MGA_TC2_DECALBLEND (0x00000001)
# define MGA_TC2_IDECAL (0x00000002)
# define MGA_TC2_DECALDIS (0x00000004)
# define MGA_TC2_CKSTRANSDIS (0x00000010)
# define MGA_TC2_BORDEREN (0x00000020)
# define MGA_TC2_SPECEN (0x00000040)
# define MGA_TC2_DUALTEX (0x00000080)
# define MGA_TC2_TABLEFOG (0x00000100)
# define MGA_TC2_BUMPMAP (0x00000200)
# define MGA_TC2_SELECT_TMU1 (0x80000000)
#define MGA_REG_TEXFILTER (0x2C58)
# define MGA_MIN_NRST (0x00000000)
# define MGA_MIN_BILIN (0x00000002)
# define MGA_MIN_ANISO (0x0000000D)
# define MGA_MAG_NRST (0x00000000)
# define MGA_MAG_BILIN (0x00000020)
/* Multi-Textures Control Registers */
#define MGA_REG_TDUALSTAGE0 (0x2CF8)
#define MGA_REG_TDUALSTAGE1 (0x2CFC)
# define MGA_TDS_COLOR_ARG2_DIFFUSE (0x00000000)
# define MGA_TDS_COLOR_ARG2_SPECULAR (0x00000001)
# define MGA_TDS_COLOR_ARG2_FCOL (0x00000002)
# define MGA_TDS_COLOR_ARG2_PREVSTAGE (0x00000003)
# define MGA_TDS_COLOR_ALPHA_DIFFUSE (0x00000000)
# define MGA_TDS_COLOR_ALPHA_FCOL (0x00000004)
# define MGA_TDS_COLOR_ALPHA_CURRTEX (0x00000008)
# define MGA_TDS_COLOR_ALPHA_PREVTEX (0x0000000c)
# define MGA_TDS_COLOR_ALPHA_PREVSTAGE (0x00000010)
# define MGA_TDS_COLOR_ARG1_REPLICATEALPHA (0x00000020)
# define MGA_TDS_COLOR_ARG1_INV (0x00000040)
# define MGA_TDS_COLOR_ARG2_REPLICATEALPHA (0x00000080)
# define MGA_TDS_COLOR_ARG2_INV (0x00000100)
# define MGA_TDS_COLOR_ALPHA1INV (0x00000200)
# define MGA_TDS_COLOR_ALPHA2INV (0x00000400)
# define MGA_TDS_COLOR_ARG1MUL_ALPHA1 (0x00000800)
# define MGA_TDS_COLOR_ARG2MUL_ALPHA2 (0x00001000)
# define MGA_TDS_COLOR_ARG1ADD_MULOUT (0x00002000)
# define MGA_TDS_COLOR_ARG2ADD_MULOUT (0x00004000)
# define MGA_TDS_COLOR_MODBRIGHT_2X (0x00008000)
# define MGA_TDS_COLOR_MODBRIGHT_4X (0x00010000)
# define MGA_TDS_COLOR_ADD_SUB (0x00000000)
# define MGA_TDS_COLOR_ADD_ADD (0x00020000)
# define MGA_TDS_COLOR_ADD2X (0x00040000)
# define MGA_TDS_COLOR_ADDBIAS (0x00080000)
# define MGA_TDS_COLOR_BLEND (0x00100000)
# define MGA_TDS_COLOR_SEL_ARG1 (0x00000000)
# define MGA_TDS_COLOR_SEL_ARG2 (0x00200000)
# define MGA_TDS_COLOR_SEL_ADD (0x00400000)
# define MGA_TDS_COLOR_SEL_MUL (0x00600000)
# define MGA_TDS_ALPHA_ARG1_INV (0x00800000)
# define MGA_TDS_ALPHA_ARG2_DIFFUSE (0x00000000)
# define MGA_TDS_ALPHA_ARG2_FCOL (0x01000000)
# define MGA_TDS_ALPHA_ARG2_PREVTEX (0x02000000)
# define MGA_TDS_ALPHA_ARG2_PREVSTAGE (0x03000000)
# define MGA_TDS_ALPHA_ARG2_INV (0x04000000)
# define MGA_TDS_ALPHA_ADD (0x08000000)
# define MGA_TDS_ALPHA_ADDBIAS (0x10000000)
# define MGA_TDS_ALPHA_ADD2X (0x20000000)
# define MGA_TDS_ALPHA_SEL_ARG1 (0x00000000)
# define MGA_TDS_ALPHA_SEL_ARG2 (0x40000000)
# define MGA_TDS_ALPHA_SEL_ADD (0x80000000)
# define MGA_TDS_ALPHA_SEL_MUL (0xc0000000)
/* Composition Prototypes. MMIO Access */
Bool
mgaPrepareBlend(int op, PicturePtr pSrcPicture, PicturePtr pDstPicture,
PixmapPtr pSrc, PixmapPtr pDst);
void
mgaBlend(int srcX, int srcY, int dstX, int dstY, int width, int height);
void
mgaDoneBlend(void);
Bool
mgaPrepareComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture,
PicturePtr pDstPicture, PixmapPtr pSrc,
PixmapPtr pMask, PixmapPtr pDst);
void
mgaComposite(int srcX, int srcY, int maskX, int maskY,
int dstX, int dstY, int w, int h);
void
mgaDoneComposite(void);
#endif

View File

@ -0,0 +1,306 @@
/*
* $Id$
*
* Copyright © 2004 Damien Ciabrini
*
* 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 Anders Carlsson not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Anders Carlsson makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* DAMIEN CIABRINI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL ANDERS CARLSSON 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.
*/
/* $Header$ */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "mga.h"
#include "g400_common.h"
static PixmapPtr currentSrc;
static PixmapPtr currentMask;
static CARD32 mgaBlendOP[14] = {
/* Clear */
MGA_SRC_ZERO | MGA_DST_ZERO,
/* Src */
MGA_SRC_ONE | MGA_DST_ZERO,
/* Dst */
MGA_SRC_ZERO | MGA_DST_ONE,
/* Over */
MGA_SRC_ALPHA | MGA_DST_ONE_MINUS_SRC_ALPHA,
/* OverReverse */
MGA_SRC_ONE_MINUS_DST_ALPHA | MGA_DST_ONE,
/* In */
MGA_SRC_DST_ALPHA | MGA_DST_ZERO,
/* InReverse */
MGA_SRC_ZERO | MGA_DST_SRC_ALPHA,
/* Out */
MGA_SRC_ONE_MINUS_DST_ALPHA | MGA_DST_ZERO,
/* OutReverse */
MGA_SRC_ZERO | MGA_DST_ONE_MINUS_SRC_ALPHA,
/* Atop */
MGA_SRC_DST_ALPHA | MGA_DST_ONE_MINUS_SRC_ALPHA,
/* AtopReverse */
MGA_SRC_ONE_MINUS_DST_ALPHA | MGA_DST_SRC_ALPHA,
/* Xor */
MGA_SRC_ONE_MINUS_DST_ALPHA | MGA_DST_ONE_MINUS_SRC_ALPHA,
/* Add */
MGA_SRC_ONE | MGA_DST_ONE,
/* Saturate */
MGA_SRC_SRC_ALPHA_SATURATE | MGA_DST_ONE
};
static int MGA_LOG2( int val )
{
int ret = 0;
while (val >> ret)
ret++;
return ((1 << (ret-1)) == val) ? (ret-1) : ret;
}
Bool
mgaPrepareBlend (int op,
PicturePtr pSrcPicture,
PicturePtr pDstPicture,
PixmapPtr pSrc,
PixmapPtr pDst)
{
return mgaPrepareComposite (op, pSrcPicture, NULL, pDstPicture,
pSrc, NULL, pDst);
}
void
mgaBlend (int srcX,
int srcY,
int dstX,
int dstY,
int width,
int height)
{
mgaComposite (srcX, srcY, 0, 0, dstX, dstY, width, height);
}
void
mgaDoneBlend (void)
{
mgaDoneComposite ();
}
static Bool
PrepareSourceTexture (int tmu,
PicturePtr pSrcPicture,
PixmapPtr pSrc)
{
KdScreenPriv (pSrc->drawable.pScreen);
int mem_base=(int)pScreenPriv->screen->memory_base;
int pitch = pSrc->devKind / (pSrc->drawable.bitsPerPixel >> 3);
int w = pSrc->drawable.width;
int h = pSrc->drawable.height;
int w_log2 = MGA_LOG2(w);
int h_log2 = MGA_LOG2(h);
int texctl=MGA_PITCHEXT | ((pitch&0x7ff)<<9) |
MGA_TAKEY | MGA_CLAMPUV | MGA_NOPERSPECTIVE;
int texctl2=MGA_G400_TC2_MAGIC;
if ((w > 2047) || (h > 2047))
MGA_FALLBACK(("Picture too large for composition (%dx%d)\n", w, h));
switch (pSrcPicture->format) {
case PICT_a8r8g8b8:
case PICT_x8r8g8b8:
case PICT_a8b8g8r8:
case PICT_x8b8g8r8:
texctl |= MGA_TW32;
break;
case PICT_r5g6b5:
case PICT_b5g6r5:
texctl |= MGA_TW16;
break;
case PICT_a8:
texctl |= MGA_TW8A;
break;
default:
MGA_FALLBACK(("unsupported Picture format for composition (%x)\n",
pSrcPicture->format));
}
if (tmu == 1) texctl2 |= MGA_TC2_DUALTEX | MGA_TC2_SELECT_TMU1;
mgaWaitAvail (6);
MGA_OUT32 (mmio, MGA_REG_TEXCTL2, texctl2);
MGA_OUT32 (mmio, MGA_REG_TEXCTL, texctl);
/* Source (texture) address + pitch */
MGA_OUT32 (mmio, MGA_REG_TEXORG, ((int)pSrc->devPrivate.ptr - mem_base));
MGA_OUT32 (mmio, MGA_REG_TEXWIDTH, (w-1)<<18 | ((8-w_log2)&63)<<9 | w_log2);
MGA_OUT32 (mmio, MGA_REG_TEXHEIGHT, (h-1)<<18 | ((8-h_log2)&63)<<9 | h_log2);
/* Disable filtering since we aren't doing stretch blit */
MGA_OUT32 (mmio, MGA_REG_TEXFILTER, (0x10<<21) | MGA_MAG_NRST | MGA_MIN_NRST);
if (tmu == 1) {
mgaWaitAvail (1);
MGA_OUT32 (mmio, MGA_REG_TEXCTL2, MGA_G400_TC2_MAGIC | MGA_TC2_DUALTEX);
}
return TRUE;
}
Bool
mgaPrepareComposite (int op,
PicturePtr pSrcPicture,
PicturePtr pMaskPicture,
PicturePtr pDstPicture,
PixmapPtr pSrc,
PixmapPtr pMask,
PixmapPtr pDst)
{
KdScreenPriv (pSrc->drawable.pScreen);
int mem_base=(int)pScreenPriv->screen->memory_base;
int cmd;
/* sometimes mgaPrepareComposite is given the same pointer for Src
* and Mask. PSrcPicture is an unsupported format (x8b8g8r8) whereas
* pMaskPicture is supported (a8r8g8b8). We Choose to render a
* simple blend and using pMaskPicture as the Source.
*/
if (pMask == pSrc) {
pMask=NULL;
pMaskPicture=NULL;
}
mgaWaitIdle();
/* Init MGA (clipping) */
mgaSetup (pSrc->drawable.pScreen, pDst->drawable.bitsPerPixel, 5);
MGA_OUT32 (mmio, MGA_REG_TMR1, 0);
MGA_OUT32 (mmio, MGA_REG_TMR2, 0);
MGA_OUT32 (mmio, MGA_REG_TMR3, 0);
MGA_OUT32 (mmio, MGA_REG_TMR4, 0);
MGA_OUT32 (mmio, MGA_REG_TMR5, 0);
MGA_OUT32 (mmio, MGA_REG_TMR6, 0);
MGA_OUT32 (mmio, MGA_REG_TMR7, 0);
MGA_OUT32 (mmio, MGA_REG_TMR8, 0x10000);
/* Destination flags */
mgaWaitAvail (2);
MGA_OUT32 (mmio, MGA_REG_DSTORG, ((int)pDst->devPrivate.ptr - mem_base));
MGA_OUT32 (mmio, MGA_REG_PITCH,
pDst->devKind / (pDst->drawable.bitsPerPixel >> 3));
/* Source(s) flags */
if (!PrepareSourceTexture (0, pSrcPicture, pSrc)) return FALSE;
if (pMask != NULL)
if (!PrepareSourceTexture (1, pMaskPicture, pMask)) return FALSE;
/* MultiTexture modulation */
mgaWaitAvail (2);
MGA_OUT32 (mmio, MGA_REG_TDUALSTAGE0, MGA_TDS_COLOR_SEL_ARG1);
if (pMask != NULL) {
if (PICT_FORMAT_A (pSrcPicture->format) == 0) {
MGA_OUT32 (mmio, MGA_REG_TDUALSTAGE1,
MGA_TDS_COLOR_ARG2_PREVSTAGE | MGA_TDS_COLOR_SEL_ARG2 |
MGA_TDS_ALPHA_SEL_ARG1);
} else {
MGA_OUT32 (mmio, MGA_REG_TDUALSTAGE1,
MGA_TDS_COLOR_ARG2_PREVSTAGE | MGA_TDS_COLOR_SEL_ARG2 |
MGA_TDS_ALPHA_ARG2_PREVSTAGE | MGA_TDS_ALPHA_SEL_MUL);
}
} else {
MGA_OUT32 (mmio, MGA_REG_TDUALSTAGE1, 0);
}
cmd = MGA_OPCOD_TEXTURE_TRAP | MGA_ATYPE_RSTR | 0x000c0000 |
MGA_DWGCTL_SHIFTZERO | MGA_DWGCTL_SGNZERO | MGA_DWGCTL_ARZERO |
MGA_ATYPE_I;
mgaWaitAvail (2);
MGA_OUT32 (mmio, MGA_REG_DWGCTL, cmd);
MGA_OUT32 (mmio, MGA_REG_ALPHACTRL, MGA_ALPHACHANNEL | mgaBlendOP[op]);
currentSrc=pSrc;
currentMask=pMask;
return TRUE;
}
void
mgaComposite (int srcX,
int srcY,
int maskX,
int maskY,
int dstX,
int dstY,
int width,
int height)
{
int src_w2 = MGA_LOG2 (currentSrc->drawable.width);
int src_h2 = MGA_LOG2 (currentSrc->drawable.height);
/* Source positions can be outside source textures' boundaries.
* We clamp the values here to avoid rendering glitches.
*/
srcX=srcX % currentSrc->drawable.width;
srcY=srcY % currentSrc->drawable.height;
maskX=maskX % currentMask->drawable.width;
maskY=maskY % currentMask->drawable.height;
mgaWaitAvail (4);
/* Start position in the texture */
MGA_OUT32 (mmio, MGA_REG_TMR6, srcX<<(20-src_w2));
MGA_OUT32 (mmio, MGA_REG_TMR7, srcY<<(20-src_h2));
/* Increments (1 since we aren't doing stretch blit) */
MGA_OUT32 (mmio, MGA_REG_TMR0, 1<<(20-src_w2));
MGA_OUT32 (mmio, MGA_REG_TMR3, 1<<(20-src_h2));
if (currentMask != NULL) {
int mask_w2 = MGA_LOG2 (currentMask->drawable.width);
int mask_h2 = MGA_LOG2 (currentMask->drawable.height);
mgaWaitAvail (6);
MGA_OUT32 (mmio, MGA_REG_TEXCTL2,
MGA_G400_TC2_MAGIC | MGA_TC2_DUALTEX | MGA_TC2_SELECT_TMU1);
MGA_OUT32 (mmio, MGA_REG_TMR6, maskX<<(20-mask_w2));
MGA_OUT32 (mmio, MGA_REG_TMR7, maskY<<(20-mask_h2));
MGA_OUT32 (mmio, MGA_REG_TMR0, 1<<(20-mask_w2));
MGA_OUT32 (mmio, MGA_REG_TMR3, 1<<(20-mask_h2));
MGA_OUT32 (mmio, MGA_REG_TEXCTL2, MGA_G400_TC2_MAGIC | MGA_TC2_DUALTEX);
}
/* Destination Bounding Box
* (Boundary Right | Boundary Left, Y dest | Height)
*/
mgaWaitAvail (2);
MGA_OUT32 (mmio, MGA_REG_FXBNDRY,
((dstX + width) << 16) | (dstX & 0xffff));
MGA_OUT32 (mmio, MGA_REG_YDSTLEN | MGA_REG_EXEC,
(dstY << 16) | (height & 0xffff));
}
void
mgaDoneComposite (void)
{
}

View File

@ -134,7 +134,7 @@ mgaUnmapReg (KdCardInfo *card, MgaCardInfo *mgac)
KD_MAPPED_MODE_REGISTERS);
KdUnmapDevice ((void *) mgac->reg_base, MGA_REG_SIZE (card));
mgac->reg_base = 0;
// mgac->reg = 0;
/* mgac->reg = 0; */
}
}

View File

@ -85,7 +85,7 @@ mgaSetup (ScreenPtr pScreen, int dest_bpp, int wait)
return FALSE;
mgaWaitAvail (wait + 4);
// Set the format of the destination pixmap
/* Set the format of the destination pixmap */
switch (dest_bpp) {
case 8:
MGA_OUT32 (mmio, MGA_REG_MACCESS, MGA_PW8);
@ -112,7 +112,9 @@ mgaPrepareSolid (PixmapPtr pPixmap, int alu, Pixel pm, Pixel fg)
KdScreenPriv(pPixmap->drawable.pScreen);
int cmd;
int dst_org;
// We must pad pm and fg depending on the format of the destination pixmap
/* We must pad pm and fg depending on the format of the
* destination pixmap
*/
switch (pPixmap->drawable.bitsPerPixel) {
case 16:
fg |= fg << 16;
@ -226,7 +228,7 @@ mgaDoneCopy (void)
static Bool
mgaUploadToScreen(PixmapPtr pDst, char *src, int src_pitch) {
//fprintf(stderr,"Upload to Screen %p [%d]\n",src,src_pitch);
/* fprintf(stderr,"Upload to Screen %p [%d]\n",src,src_pitch); */
return TRUE;
}
@ -259,7 +261,7 @@ mgaDrawInit (ScreenPtr pScreen)
mgaKaa.Composite=mgaComposite;
mgaKaa.DoneComposite=mgaDoneComposite;
}
//mgaKaa.UploadToScreen=mgaUploadToScreen;
/*mgaKaa.UploadToScreen=mgaUploadToScreen;*/
if (!kaaDrawInit (pScreen, &mgaKaa))
return FALSE;