diff options
author | Wang Zhenyu <zhenyu.z.wang@intel.com> | 2006-09-25 14:35:51 +0800 |
---|---|---|
committer | Keith Packard <keithp@neko.keithp.com> | 2007-01-03 22:23:27 -0800 |
commit | ed73bbaf5c2e9d555c884037a249cf03e7f60fa0 (patch) | |
tree | d444e16edd289d1f7ce699c514ca19d623aa18ba /src/i830_exa.c | |
parent | 5a793b0dcf2d5de408b55073858fcfba6d99f994 (diff) |
[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>
Diffstat (limited to 'src/i830_exa.c')
-rw-r--r-- | src/i830_exa.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/i830_exa.c b/src/i830_exa.c index 9356c79c..c5b91b04 100644 --- a/src/i830_exa.c +++ b/src/i830_exa.c @@ -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)) { |