summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Jackson <ajax@redhat.com>2008-05-08 16:04:24 -0400
committerAdam Jackson <ajax@redhat.com>2008-05-08 16:12:01 -0400
commit64948dc667fb6841147e87dafd5711b544511cf1 (patch)
tree469a82efc5264ac6231614c07775367b09f70f69
parentf2aa0000a2220df4158ded8284d70954670aff36 (diff)
Bug #13104: Remove broken XAA a1 glyph fast path.
(cherry picked from commit f17ba5d5849c92603f453195aca384844ca76d74)
-rw-r--r--hw/xfree86/xaa/xaaPict.c144
1 files changed, 0 insertions, 144 deletions
diff --git a/hw/xfree86/xaa/xaaPict.c b/hw/xfree86/xaa/xaaPict.c
index 74e90e3b6..784c649a4 100644
--- a/hw/xfree86/xaa/xaaPict.c
+++ b/hw/xfree86/xaa/xaaPict.c
@@ -588,150 +588,6 @@ XAADoGlyphs (CARD8 op,
IS_OFFSCREEN_PIXMAP(pSrc->pDrawable))
return FALSE;
- if(maskFormat && (maskFormat->depth == 1) &&
- (pSrc->pDrawable->width == 1) && (pSrc->pDrawable->height == 1) &&
- (op == PictOpOver) && infoRec->WriteBitmap &&
- !(infoRec->WriteBitmapFlags & NO_TRANSPARENCY))
- {
- CARD16 red, green, blue, alpha;
- CARD32 pixel =
- *((CARD32*)(((PixmapPtr)(pSrc->pDrawable))->devPrivate.ptr));
- CARD32 *bits, *pntr, *pnt;
- int x, y, i, n, left, top, right, bottom, width, height, pitch;
- int L, T, R, B, X, Y, h, w, dwords, row, column, nbox;
- int leftEdge, rightEdge, topLine, botLine;
- BoxPtr pbox;
- GlyphPtr glyph;
-
- if(!XAAGetRGBAFromPixel(pixel,&red,&green,&blue,&alpha,pSrc->format))
- return FALSE;
-
- if(alpha != 0xffff) return FALSE;
-
- XAAGetPixelFromRGBA(&pixel, red, green, blue, 0, pDst->format);
-
- if((infoRec->WriteBitmapFlags & RGB_EQUAL) && !((red == green) && (green == blue)))
- return FALSE;
-
- x = pDst->pDrawable->x;
- y = pDst->pDrawable->y;
-
- while(nlist--) {
- x += list->xOff;
- y += list->yOff;
- left = right = X = x;
- top = bottom = Y = y;
- for(i = 0; i < list->len; i++) {
- glyph = glyphs[i];
-
- L = X - glyph->info.x;
- if(L < left) left = L;
- R = L + glyph->info.width;
- if(R > right) right = R;
-
- T = Y - glyph->info.y;
- if(T < top) top = T;
- B = T + glyph->info.height;
- if(B > bottom) bottom = B;
-
- X += glyph->info.xOff;
- Y += glyph->info.yOff;
- }
-
- width = right - left;
- height = bottom - top;
-
- if(width && height) {
- pitch = (((width + 31) & ~31) >> 5) + 1;
- pntr = (CARD32*)xalloc(sizeof(CARD32) * pitch * height);
- if(!pntr)
- return TRUE;
- bzero(pntr, sizeof(CARD32) * pitch * height);
- n = list->len;
-
- X = x; Y = y;
- while(n--) {
- glyph = *glyphs++;
- h = glyph->info.height;
- w = glyph->info.width;
- if(h && w) {
- row = y - top - glyph->info.y;
- column = x - left - glyph->info.x;
- pnt = pntr + (row * pitch) + (column >> 5);
- column &= 31;
- dwords = ((w + 31) >> 5) - 1;
- bits = (CARD32*)(glyph + 1);
- if(dwords) {
- while(h--) {
- for(i = 0; i <= dwords; i++) {
- if(column) {
- pnt[i] |= SHIFT_L(*bits, column);
- pnt[i + 1] |= SHIFT_R(*bits, 32 - column);
- } else
- pnt[i] |= *bits;
-
- if(i != dwords) bits++;
- }
- bits++;
- pnt += pitch;
- }
- } else {
- if(column) {
- while(h--) {
- pnt[0] |= SHIFT_L(*bits, column);
- pnt[0 + 1] |= SHIFT_R(*bits, 32 - column);
- bits++;
- pnt += pitch;
- }
- } else {
- while(h--) {
- *pnt |= *bits++;
- pnt += pitch;
- }
- }
- }
- }
- x += glyph->info.xOff;
- y += glyph->info.yOff;
- }
-
- nbox = REGION_NUM_RECTS(pDst->pCompositeClip);
- pbox = REGION_RECTS(pDst->pCompositeClip);
-
- while(nbox && (top >= pbox->y2)) {
- pbox++; nbox--;
- }
-
- while(nbox && (bottom > pbox->y1)) {
- leftEdge = max(left, pbox->x1);
- rightEdge = min(right, pbox->x2);
-
- if(rightEdge > leftEdge) {
- column = leftEdge - left;
- topLine = max(top, pbox->y1);
- botLine = min(bottom, pbox->y2);
- h = botLine - topLine;
-
- if(h > 0) {
- (*infoRec->WriteBitmap)(infoRec->pScrn,
- leftEdge, topLine, rightEdge - leftEdge, h,
- (unsigned char*)(pntr +
- ((topLine - top) * pitch) + (column >> 5)),
- pitch << 2, column & 31, pixel, -1, GXcopy, ~0);
- }
- }
- nbox--; pbox++;
- }
- xfree(pntr);
- } else {
- x = X; y = Y;
- }
- list++;
- }
-
- return TRUE;
- }
-
/*
* If it looks like we have a chance of being able to draw these
* glyphs with an accelerated Composite, do that now to avoid