summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTilman Sauerbeck <tilman@code-monkey.de>2007-04-15 12:41:01 +0200
committerTilman Sauerbeck <tilman@code-monkey.de>2007-04-15 12:41:01 +0200
commit43b79af51b600e98ecac9d57aeb0d686dbc6a50e (patch)
tree12c932415c4510dd702aa492510e2d5fdceead0b
parent69c4ed205afbeb9ad937f079caace6cee19bd7b1 (diff)
On G550, do A8 adds in hardware.
-rw-r--r--src/mga_exa.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/mga_exa.c b/src/mga_exa.c
index 6c39f97..066215f 100644
--- a/src/mga_exa.c
+++ b/src/mga_exa.c
@@ -350,6 +350,8 @@ static Bool
mgaCheckComposite(int op, PicturePtr pSrcPict, PicturePtr pMaskPict,
PicturePtr pDstPict)
{
+ MGAPtr pMga = xf86Screens[pSrcPict->pDrawable->pScreen->myNum]->driverPrivate;
+
if (op >= sizeof(mgaBlendOp) / sizeof(mgaBlendOp[0])) {
DEBUG_MSG(("unsupported op %x\n", op));
return FALSE;
@@ -373,10 +375,9 @@ mgaCheckComposite(int op, PicturePtr pSrcPict, PicturePtr pMaskPict,
return FALSE;
}
- /* FIXME
- * Doing this operation in hardware is broken atm :/
- */
- if (op == PictOpAdd && pSrcPict->format == PICT_a8 &&
+ /* Only the G550 can perform Add on A8 textures, it seems. */
+ if (pMga->Chipset != PCI_CHIP_MGAG550 &&
+ op == PictOpAdd && pSrcPict->format == PICT_a8 &&
pDstPict->format == PICT_a8)
return FALSE;