summaryrefslogtreecommitdiff
path: root/src/i830_exa.c
diff options
context:
space:
mode:
authorWang Zhenyu <zhenyu.z.wang@intel.com>2006-09-25 14:35:51 +0800
committerKeith Packard <keithp@neko.keithp.com>2007-01-03 22:23:27 -0800
commited73bbaf5c2e9d555c884037a249cf03e7f60fa0 (patch)
treed444e16edd289d1f7ce699c514ca19d623aa18ba /src/i830_exa.c
parent5a793b0dcf2d5de408b55073858fcfba6d99f994 (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.c18
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)) {