Use READ/WRITE macros for new functions introduced in previous commits.

This commit is contained in:
Soren Sandmann Pedersen 2007-04-24 19:02:44 -04:00
parent 7e16da7b78
commit 0a2fe443d2

View File

@ -100,7 +100,7 @@ fbIn (CARD32 x, CARD8 y)
#define inOver0888(alpha, source, destval, dest) { \ #define inOver0888(alpha, source, destval, dest) { \
CARD32 dstrb=destval&0xFF00FF; CARD32 dstag=(destval>>8)&0xFF00FF; \ CARD32 dstrb=destval&0xFF00FF; CARD32 dstag=(destval>>8)&0xFF00FF; \
CARD32 drb=((source&0xFF00FF)-dstrb)*alpha; CARD32 dag=(((source>>8)&0xFF00FF)-dstag)*alpha; \ CARD32 drb=((source&0xFF00FF)-dstrb)*alpha; CARD32 dag=(((source>>8)&0xFF00FF)-dstag)*alpha; \
dest =((((drb>>8) + dstrb) & 0x00FF00FF) | ((((dag>>8) + dstag) << 8) & 0xFF00FF00)); \ WRITE(dest, ((((drb>>8) + dstrb) & 0x00FF00FF) | ((((dag>>8) + dstag) << 8) & 0xFF00FF00))); \
} }
/* /*
@ -111,14 +111,14 @@ fbIn (CARD32 x, CARD8 y)
#define inOver0565(alpha, source, destval, dest) { \ #define inOver0565(alpha, source, destval, dest) { \
CARD16 dstrb = destval & 0xf81f; CARD16 dstg = destval & 0x7e0; \ CARD16 dstrb = destval & 0xf81f; CARD16 dstg = destval & 0x7e0; \
CARD32 drb = ((source&0xf81f)-dstrb)*alpha; CARD32 dg=((source & 0x7e0)-dstg)*alpha; \ CARD32 drb = ((source&0xf81f)-dstrb)*alpha; CARD32 dg=((source & 0x7e0)-dstg)*alpha; \
dest = ((((drb>>5) + dstrb)&0xf81f) | (((dg>>5) + dstg) & 0x7e0)); \ WRITE(dest, ((((drb>>5) + dstrb)&0xf81f) | (((dg>>5) + dstg) & 0x7e0))); \
} }
#define inOver2x0565(alpha, source, destval, dest) { \ #define inOver2x0565(alpha, source, destval, dest) { \
CARD32 dstrb = destval & 0x07e0f81f; CARD32 dstg = (destval & 0xf81f07e0)>>5; \ CARD32 dstrb = destval & 0x07e0f81f; CARD32 dstg = (destval & 0xf81f07e0)>>5; \
CARD32 drb = ((source&0x07e0f81f)-dstrb)*alpha; CARD32 dg=(((source & 0xf81f07e0)>>5)-dstg)*alpha; \ CARD32 drb = ((source&0x07e0f81f)-dstrb)*alpha; CARD32 dg=(((source & 0xf81f07e0)>>5)-dstg)*alpha; \
dest = ((((drb>>5) + dstrb)&0x07e0f81f) | ((((dg>>5) + dstg)<<5) & 0xf81f07e0)); \ WRITE(dest, ((((drb>>5) + dstrb)&0x07e0f81f) | ((((dg>>5) + dstg)<<5) & 0xf81f07e0))); \
} }
@ -127,26 +127,26 @@ fbIn (CARD32 x, CARD8 y)
temp=count&3; \ temp=count&3; \
where-=temp; \ where-=temp; \
workingWhere=(CARD32 *)where; \ workingWhere=(CARD32 *)where; \
workingVal=*workingWhere++; \ workingVal=READ(workingWhere++); \
count=4-temp; \ count=4-temp; \
workingVal>>=(8*temp) workingVal>>=(8*temp)
#define readPacked(where,x,y,z) {if(!(x)) { (x)=4; y=*z++; } where=(y)&0xff; (y)>>=8; (x)--;} #define readPacked(where,x,y,z) {if(!(x)) { (x)=4; y = READ(z++); } where=(y)&0xff; (y)>>=8; (x)--;}
#define readPackedSource(where) readPacked(where,ws,workingSource,wsrc) #define readPackedSource(where) readPacked(where,ws,workingSource,wsrc)
#define readPackedDest(where) readPacked(where,wd,workingiDest,widst) #define readPackedDest(where) readPacked(where,wd,workingiDest,widst)
#define writePacked(what) workingoDest>>=8; workingoDest|=(what<<24); ww--; if(!ww) { ww=4; *wodst++=workingoDest; } #define writePacked(what) workingoDest>>=8; workingoDest|=(what<<24); ww--; if(!ww) { ww=4; WRITE (wodst++, workingoDest); }
#else #else
#warning "I havn't tested fbCompositeTrans_0888xnx0888() on big endian yet!" #warning "I havn't tested fbCompositeTrans_0888xnx0888() on big endian yet!"
#define setupPackedReader(count,temp,where,workingWhere,workingVal) count=(int)where; \ #define setupPackedReader(count,temp,where,workingWhere,workingVal) count=(int)where; \
temp=count&3; \ temp=count&3; \
where-=temp; \ where-=temp; \
workingWhere=(CARD32 *)where; \ workingWhere=(CARD32 *)where; \
workingVal=*workingWhere++; \ workingVal=READ(workingWhere)++; \
count=4-temp; \ count=4-temp; \
workingVal<<=(8*temp) workingVal<<=(8*temp)
#define readPacked(where,x,y,z) {if(!(x)) { (x)=4; y=*z++; } where=(y)>>24; (y)<<=8; (x)--;} #define readPacked(where,x,y,z) {if(!(x)) { (x)=4; y = READ(z++); } where=(y)>>24; (y)<<=8; (x)--;}
#define readPackedSource(where) readPacked(where,ws,workingSource,wsrc) #define readPackedSource(where) readPacked(where,ws,workingSource,wsrc)
#define readPackedDest(where) readPacked(where,wd,workingiDest,widst) #define readPackedDest(where) readPacked(where,wd,workingiDest,widst)
#define writePacked(what) workingoDest<<=8; workingoDest|=what; ww--; if(!ww) { ww=4; *wodst++=workingoDest; } #define writePacked(what) workingoDest<<=8; workingoDest|=what; ww--; if(!ww) { ww=4; WRITE(wodst++, workingoDest); }
#endif #endif
/* /*
@ -352,33 +352,33 @@ fbCompositeSolidMask_nx8x0888 (CARD8 op,
readPackedDest(gd); readPackedDest(gd);
readPackedDest(bd); readPackedDest(bd);
#else #else
rd= *edst++; rd = READ(edst++);
gd= *edst++; gd = READ(edst++);
bd= *edst++; bd = READ(edst++);
#endif #endif
m = *mask++; m = READ(mask++);
if (m == 0xff) if (m == 0xff)
{ {
if (srca == 0xff) if (srca == 0xff)
{ {
*dst++=rs; WRITE(dst++, rs);
*dst++=gs; WRITE(dst++, gs);
*dst++=bs; WRITE(dst++, bs);
} }
else else
{ {
*dst++=(srcAlphaCombine24(rs, rd)>>8); WRITE(dst++, (srcAlphaCombine24(rs, rd)>>8));
*dst++=(srcAlphaCombine24(gs, gd)>>8); WRITE(dst++, (srcAlphaCombine24(gs, gd)>>8));
*dst++=(srcAlphaCombine24(bs, bd)>>8); WRITE(dst++, (srcAlphaCombine24(bs, bd)>>8));
} }
} }
else if (m) else if (m)
{ {
int na=(srca*(int)m)>>8; int na=(srca*(int)m)>>8;
int nia=255-na; int nia=255-na;
*dst++=(genericCombine24(rs, rd, na, nia)>>8); WRITE(dst++, (genericCombine24(rs, rd, na, nia)>>8));
*dst++=(genericCombine24(gs, gd, na, nia)>>8); WRITE(dst++, (genericCombine24(gs, gd, na, nia)>>8));
*dst++=(genericCombine24(bs, bd, na, nia)>>8); WRITE(dst++, (genericCombine24(bs, bd, na, nia)>>8));
} }
else else
{ {
@ -415,8 +415,6 @@ fbCompositeSolidMask_nx8x0565 (CARD8 op,
fbComposeGetSolid(pSrc, src, pDst->format); fbComposeGetSolid(pSrc, src, pDst->format);
if (src == 0) if (src == 0)
return; return;
@ -437,23 +435,23 @@ fbCompositeSolidMask_nx8x0565 (CARD8 op,
while (w--) while (w--)
{ {
m = *mask++; m = READ(mask++);
if (m == 0) if (m == 0)
dst++; dst++;
else if (srca5 == (0xff >> 3)) else if (srca5 == (0xff >> 3))
{ {
if (m == 0xff) if (m == 0xff)
*dst++ = src16; WRITE(dst++, src16);
else else
{ {
d = *dst; d = READ(dst);
m >>= 3; m >>= 3;
inOver0565 (m, src16, d, *dst++); inOver0565 (m, src16, d, dst++);
} }
} }
else else
{ {
d = *dst; d = READ(dst);
if (m == 0xff) if (m == 0xff)
{ {
t = fbOver24 (src, cvt0565to0888 (d)); t = fbOver24 (src, cvt0565to0888 (d));
@ -463,7 +461,7 @@ fbCompositeSolidMask_nx8x0565 (CARD8 op,
t = fbIn (src, m); t = fbIn (src, m);
t = fbOver (t, cvt0565to0888 (d)); t = fbOver (t, cvt0565to0888 (d));
} }
*dst++ = cvt8888to0565 (t); WRITE(dst++, cvt8888to0565 (t));
} }
} }
} }
@ -517,34 +515,34 @@ fbCompositeSolidMask_nx8888x0565 (CARD8 op,
while (w--) while (w--)
{ {
m = *mask++ >> 24; m = READ(mask++) >> 24;
if (m == 0) if (m == 0)
dst++; dst++;
else if (srca5 == (0xff >> 3)) else if (srca5 == (0xff >> 3))
{ {
if (m == 0xff) if (m == 0xff)
*dst++ = src16; WRITE(dst++, src16);
else else
{ {
d = *dst; d = READ(dst);
m >>= 3; m >>= 3;
inOver0565 (m, src16, d, *dst++); inOver0565 (m, src16, d, dst++);
} }
} }
else else
{ {
if (m == 0xff) if (m == 0xff)
{ {
d = *dst; d = READ(dst);
t = fbOver24 (src, cvt0565to0888 (d)); t = fbOver24 (src, cvt0565to0888 (d));
*dst++ = cvt8888to0565 (t); WRITE(dst++, cvt8888to0565 (t));
} }
else else
{ {
d = *dst; d = READ(dst);
t = fbIn (src, m); t = fbIn (src, m);
t = fbOver (t, cvt0565to0888 (d)); t = fbOver (t, cvt0565to0888 (d));
*dst++ = cvt8888to0565 (t); WRITE(dst++, cvt8888to0565 (t));
} }
} }
} }
@ -1078,9 +1076,9 @@ fbCompositeTrans_0565xnx0565(CARD8 op,
if(((int)src&1)==1) if(((int)src&1)==1)
{ {
s_16 = *src++; s_16 = READ(src++);
d_16 = *dst; d_16 = READ(dst);
inOver0565(maskAlpha, s_16, d_16, *dst++); inOver0565(maskAlpha, s_16, d_16, dst++);
w--; w--;
} }
isrc=(CARD32 *)src; isrc=(CARD32 *)src;
@ -1089,9 +1087,9 @@ fbCompositeTrans_0565xnx0565(CARD8 op,
idst=(CARD32 *)dst; idst=(CARD32 *)dst;
while (w>1) while (w>1)
{ {
s_32 = *isrc++; s_32 = READ(isrc++);
d_32 = *idst; d_32 = READ(idst);
inOver2x0565(maskAlpha, s_32, d_32, *idst++); inOver2x0565(maskAlpha, s_32, d_32, idst++);
w-=2; w-=2;
} }
dst=(CARD16 *)idst; dst=(CARD16 *)idst;
@ -1100,30 +1098,30 @@ fbCompositeTrans_0565xnx0565(CARD8 op,
{ {
while (w > 1) while (w > 1)
{ {
s_32 = *isrc++; s_32 = READ(isrc++);
#if IMAGE_BYTE_ORDER == LSBFirst #if IMAGE_BYTE_ORDER == LSBFirst
s_16=s_32&0xffff; s_16=s_32&0xffff;
#else #else
s_16=s_32>>16; s_16=s_32>>16;
#endif #endif
d_16 = *dst; d_16 = READ(dst);
inOver0565 (maskAlpha, s_16, d_16, *dst++); inOver0565 (maskAlpha, s_16, d_16, dst++);
#if IMAGE_BYTE_ORDER == LSBFirst #if IMAGE_BYTE_ORDER == LSBFirst
s_16=s_32>>16; s_16=s_32>>16;
#else #else
s_16=s_32&0xffff; s_16=s_32&0xffff;
#endif #endif
d_16 = *dst; d_16 = READ(dst);
inOver0565(maskAlpha, s_16, d_16, *dst++); inOver0565(maskAlpha, s_16, d_16, dst++);
w-=2; w-=2;
} }
} }
src=(CARD16 *)isrc; src=(CARD16 *)isrc;
if(w!=0) if(w!=0)
{ {
s_16 = *src; s_16 = READ(src);
d_16 = *dst; d_16 = READ(dst);
inOver0565(maskAlpha, s_16, d_16, *dst); inOver0565(maskAlpha, s_16, d_16, dst);
} }
} }
@ -1133,6 +1131,7 @@ fbCompositeTrans_0565xnx0565(CARD8 op,
/* macros for "i can't believe it's not fast" packed pixel handling */ /* macros for "i can't believe it's not fast" packed pixel handling */
#define alphamaskCombine24(a,b) genericCombine24(a,b,maskAlpha,maskiAlpha) #define alphamaskCombine24(a,b) genericCombine24(a,b,maskAlpha,maskiAlpha)
static void static void
fbCompositeTrans_0888xnx0888(CARD8 op, fbCompositeTrans_0888xnx0888(CARD8 op,
PicturePtr pSrc, PicturePtr pSrc,
@ -1183,7 +1182,8 @@ fbCompositeTrans_0888xnx0888(CARD8 op,
/* are xSrc and xDst at the same alignment? if not, we need to be complicated :) */ /* are xSrc and xDst at the same alignment? if not, we need to be complicated :) */
/* if(0==0) */ /* if(0==0) */
if( (((xSrc*3)&3)!=((xDst*3)&3)) || ((srcStride&3)!=(dstStride&3))) if ((((xSrc * 3) & 3) != ((xDst * 3) & 3)) ||
((srcStride & 3) != (dstStride & 3)))
{ {
while (height--) while (height--)
{ {
@ -1201,29 +1201,29 @@ fbCompositeTrans_0888xnx0888(CARD8 op,
case 1: case 1:
readPackedSource(rs); readPackedSource(rs);
/* *dst++=alphamaskCombine24(rs, *dst)>>8; */ /* *dst++=alphamaskCombine24(rs, *dst)>>8; */
rd=*dst; /* make gcc happy. hope it doens't cost us too much performance*/ rd = READ(dst); /* make gcc happy. hope it doens't cost us too much performance*/
*dst++=alphamaskCombine24(rs, rd)>>8; WRITE(dst++, alphamaskCombine24(rs, rd) >> 8);
w--; if(w==0) break; w--; if(w==0) break;
case 2: case 2:
readPackedSource(rs); readPackedSource(rs);
rd=*dst; rd = READ(dst);
*dst++=alphamaskCombine24(rs, rd)>>8; WRITE(dst++, alphamaskCombine24(rs, rd) >> 8);
w--; if(w==0) break; w--; if(w==0) break;
case 3: case 3:
readPackedSource(rs); readPackedSource(rs);
rd=*dst; rd = READ(dst);
*dst++=alphamaskCombine24(rs, rd)>>8; WRITE(dst++,alphamaskCombine24(rs, rd) >> 8);
w--; if(w==0) break; w--; if(w==0) break;
} }
wdst=(CARD32 *)dst; wdst=(CARD32 *)dst;
while (w>3) while (w>3)
{ {
rs=*wsrc++; rs=READ(wsrc++);
/* FIXME: write a special readPackedWord macro, which knows how to /* FIXME: write a special readPackedWord macro, which knows how to
* halfword combine * halfword combine
*/ */
#if IMAGE_BYTE_ORDER == LSBFirst #if IMAGE_BYTE_ORDER == LSBFirst
rd=*wdst; rd=READ(wdst);
readPackedSource(nd); readPackedSource(nd);
readPackedSource(rs); readPackedSource(rs);
nd|=rs<<8; nd|=rs<<8;
@ -1241,7 +1241,7 @@ fbCompositeTrans_0888xnx0888(CARD8 op,
readPackedSource(rs); readPackedSource(rs);
nd|=rs; nd|=rs;
#endif #endif
inOver0888(maskAlpha, nd, rd, *wdst++); inOver0888(maskAlpha, nd, rd, wdst++);
w-=4; w-=4;
} }
src=(CARD8 *)wdst; src=(CARD8 *)wdst;
@ -1249,16 +1249,16 @@ fbCompositeTrans_0888xnx0888(CARD8 op,
{ {
case 3: case 3:
readPackedSource(rs); readPackedSource(rs);
rd=*dst; rd=READ(dst);
*dst++=alphamaskCombine24(rs, rd)>>8; WRITE(dst++,alphamaskCombine24(rs, rd)>>8);
case 2: case 2:
readPackedSource(rs); readPackedSource(rs);
rd=*dst; rd = READ(dst);
*dst++=alphamaskCombine24(rs, rd)>>8; WRITE(dst++, alphamaskCombine24(rs, rd)>>8);
case 1: case 1:
readPackedSource(rs); readPackedSource(rs);
rd=*dst; rd = READ(dst);
*dst++=alphamaskCombine24(rs, rd)>>8; WRITE(dst++, alphamaskCombine24(rs, rd)>>8);
} }
} }
} }
@ -1275,25 +1275,25 @@ fbCompositeTrans_0888xnx0888(CARD8 op,
switch(!(int)src&3) switch(!(int)src&3)
{ {
case 1: case 1:
rd=alphamaskCombine24(*src++, *dst)>>8; rd=alphamaskCombine24(READ(src++), READ(dst))>>8;
*dst++=rd; WRITE(dst++, rd);
w--; if(w==0) break; w--; if(w==0) break;
case 2: case 2:
rd=alphamaskCombine24(*src++, *dst)>>8; rd=alphamaskCombine24(READ(src++), READ(dst))>>8;
*dst++=rd; WRITE(dst++, rd);
w--; if(w==0) break; w--; if(w==0) break;
case 3: case 3:
rd=alphamaskCombine24(*src++, *dst)>>8; rd=alphamaskCombine24(READ(src++), READ(dst))>>8;
*dst++=rd; WRITE(dst++, rd);
w--; if(w==0) break; w--; if(w==0) break;
} }
wsrc=(CARD32 *)src; wsrc=(CARD32 *)src;
widst=(CARD32 *)dst; widst=(CARD32 *)dst;
while(w>3) while(w>3)
{ {
rs = *wsrc++; rs = READ(wsrc++);
rd = *widst; rd = READ(widst);
inOver0888 (maskAlpha, rs, rd, *widst++); inOver0888 (maskAlpha, rs, rd, widst++);
w-=4; w-=4;
} }
src=(CARD8 *)wsrc; src=(CARD8 *)wsrc;
@ -1301,21 +1301,20 @@ fbCompositeTrans_0888xnx0888(CARD8 op,
switch(w) switch(w)
{ {
case 3: case 3:
rd=alphamaskCombine24(*src++, *dst)>>8; rd=alphamaskCombine24(READ(src++), READ(dst))>>8;
*dst++=rd; WRITE(dst++, rd);
case 2: case 2:
rd=alphamaskCombine24(*src++, *dst)>>8; rd=alphamaskCombine24(READ(src++), READ(dst))>>8;
*dst++=rd; WRITE(dst++, rd);
case 1: case 1:
rd=alphamaskCombine24(*src++, *dst)>>8; rd=alphamaskCombine24(READ(src++), READ(dst))>>8;
*dst++=rd; WRITE(dst++, rd);
} }
} }
} }
} }
} }
/* /*
* Simple bitblt * Simple bitblt
*/ */