[PATCH] Add file for i965 exa composite

This does not include ps program, which will be added
in g4a form.

Signed-off-by: Keith Packard <keithp@neko.keithp.com>
This commit is contained in:
Wang Zhenyu 2006-09-25 14:35:51 +08:00 committed by Keith Packard
parent 5a793b0dcf
commit ed73bbaf5c
3 changed files with 1143 additions and 2 deletions

View File

@ -93,7 +93,8 @@ i810_drv_la_SOURCES = \
i830_exa.c \
i830_xaa.c \
i830_exa_render.c \
i915_exa_render.c
i915_exa_render.c \
i965_exa_render.c
if HAVE_GEN4ASM
sf_prog.h: packed_yuv_sf.g4a

View File

@ -121,6 +121,11 @@ extern Bool I915EXACheckComposite(int, PicturePtr, PicturePtr, PicturePtr);
extern Bool I915EXAPrepareComposite(int, PicturePtr, PicturePtr, PicturePtr,
PixmapPtr, PixmapPtr, PixmapPtr);
extern Bool I965EXACheckComposite(int, PicturePtr, PicturePtr, PicturePtr);
extern Bool I965EXAPrepareComposite(int, PicturePtr, PicturePtr, PicturePtr,
PixmapPtr, PixmapPtr, PixmapPtr);
extern void I965EXAComposite(PixmapPtr pDst, int srcX, int srcY, int maskX,
int maskY, int dstX, int dstY, int width, int height);
/**
* I830EXASync - wait for a command to finish
* @pScreen: current screen
@ -419,6 +424,8 @@ IntelEXADoneComposite(PixmapPtr pDst)
I830Sync(pScrn);
#endif
}
#define BRW_LINEAR_EXTRA (32*1024)
/*
* TODO:
* - Dual head?
@ -441,7 +448,11 @@ I830EXAInit(ScreenPtr pScreen)
pI830->EXADriverPtr->exa_minor = 0;
pI830->EXADriverPtr->memoryBase = pI830->FbBase;
pI830->EXADriverPtr->offScreenBase = pI830->Offscreen.Start;
pI830->EXADriverPtr->memorySize = pI830->Offscreen.End;
if (IS_I965G(pI830))
pI830->EXADriverPtr->memorySize = pI830->Offscreen.End -
BRW_LINEAR_EXTRA; /* BRW needs state buffer*/
else
pI830->EXADriverPtr->memorySize = pI830->Offscreen.End;
DPRINTF(PFX, "EXA Mem: memoryBase 0x%x, end 0x%x, offscreen base 0x%x, memorySize 0x%x\n",
pI830->EXADriverPtr->memoryBase,
@ -492,6 +503,11 @@ I830EXAInit(ScreenPtr pScreen)
pI830->EXADriverPtr->PrepareComposite = I830EXAPrepareComposite;
pI830->EXADriverPtr->Composite = IntelEXAComposite;
pI830->EXADriverPtr->DoneComposite = IntelEXADoneComposite;
} else if (IS_I965G(pI830)) {
pI830->EXADriverPtr->CheckComposite = I965EXACheckComposite;
pI830->EXADriverPtr->PrepareComposite = I965EXAPrepareComposite;
pI830->EXADriverPtr->Composite = I965EXAComposite;
pI830->EXADriverPtr->DoneComposite = IntelEXADoneComposite;
}
if(!exaDriverInit(pScreen, pI830->EXADriverPtr)) {

1124
src/i965_exa_render.c Normal file

File diff suppressed because it is too large Load Diff