diff options
author | Alex Deucher <alex@botch2.com> | 2007-04-02 17:32:02 -0400 |
---|---|---|
committer | Alex Deucher <alex@botch2.com> | 2007-04-02 17:32:02 -0400 |
commit | ff0ee0420bd7c0c1be5bf97e8764f3e974ff5887 (patch) | |
tree | 845ecefacd8d298d46576654c5369855d8b81f0a /src | |
parent | 675ff8177852732c6e9d52464f34d5fe867ac67e (diff) |
final odds and ends for exa
I still get blue for solids that should be grey for certain things
(firefox status and navigation bars, certain mouse overs, etc.)
Diffstat (limited to 'src')
-rw-r--r-- | src/savage_exa.c | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/src/savage_exa.c b/src/savage_exa.c index 80cd58e..aa6905a 100644 --- a/src/savage_exa.c +++ b/src/savage_exa.c @@ -197,7 +197,7 @@ SavageEXAInit(ScreenPtr pScreen) /* Composite not implemented yet */ /* savage3d series only have one tmu */ -#if 0 +#if 1 /* host data blit */ psav->EXADriverPtr->UploadToScreen = SavageUploadToScreen; #endif @@ -283,10 +283,40 @@ SavagePrepareSolid(PixmapPtr pPixmap, int alu, Pixel planemask, Pixel fg) cmd = BCI_CMD_RECT | BCI_CMD_RECT_XP | BCI_CMD_RECT_YP | BCI_CMD_DEST_PBD /*BCI_CMD_DEST_PBD_NEW*/ - | BCI_CMD_SRC_SOLID - | BCI_CMD_SEND_COLOR; + | BCI_CMD_SRC_SOLID; + +#if 0 + if (alu == 3 /*GXcopy*/) { + if (fg == 0) + alu = 0 /*GXclear*/; + else if (fg == planemask) + alu = 15 /*GXset*/; + } + if (EXA_PM_IS_SOLID(&pPixmap->drawable, planemask)) { + if (!((alu == 5 /*GXnoop*/) || (alu == 15 /*GXset*/) || (alu == 0 /*GXclear*/) || (alu == 10 /*GXinvert*/))) + cmd |= BCI_CMD_SEND_COLOR; + rop = SavageGetCopyROP(alu); + } else { + switch(alu) { + case 5 /*GXnoop*/: + break; + case 15 /*GXset*/: + case 0 /*GXclear*/: + case 10 /*GXinvert*/: + cmd |= BCI_CMD_SEND_COLOR; + fg = planemask; + break; + default: + cmd |= BCI_CMD_SEND_COLOR; + break; + } + rop = SavageGetSolidROP(alu); + } +#else + cmd |= BCI_CMD_SEND_COLOR; rop = SavageGetSolidROP(alu); +#endif BCI_CMD_SET_ROP( cmd, rop ); @@ -326,6 +356,10 @@ SavageSolid(PixmapPtr pPixmap, int x1, int y1, int x2, int y2) BCI_SEND(psav->SavedBciCmd); /*BCI_SEND(psav->pbd_offset); BCI_SEND(psav->pbd_high);*/ +#if 0 + if ( psav->SavedBciCmd & BCI_CMD_SEND_COLOR ) + BCI_SEND(psav->SavedFgColor); +#endif BCI_SEND(psav->SavedFgColor); BCI_SEND(BCI_X_Y(x1, y1)); BCI_SEND(BCI_W_H(w, h)); @@ -465,7 +499,7 @@ SavageUploadToScreen(PixmapPtr pDst, int x, int y, int w, int h, char *src, int srcp++; } - exaWaitSync(pDst->drawable.pScreen); + /*exaWaitSync(pDst->drawable.pScreen);*/ return TRUE; } |