summaryrefslogtreecommitdiff
path: root/src/savage_exa.c
diff options
context:
space:
mode:
authorAlex Deucher <alex@botch2.com>2007-04-02 17:32:02 -0400
committerAlex Deucher <alex@botch2.com>2007-04-02 17:32:02 -0400
commitff0ee0420bd7c0c1be5bf97e8764f3e974ff5887 (patch)
tree845ecefacd8d298d46576654c5369855d8b81f0a /src/savage_exa.c
parent675ff8177852732c6e9d52464f34d5fe867ac67e (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/savage_exa.c')
-rw-r--r--src/savage_exa.c42
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;
}