render: repack PictureRec

Eliminate the unused dither field, move filter and stateChanges into the
bitfield, and reorder elements to pack holes on LP64.

sizeof(PictureRec)      ILP32       LP64
before:                    84        152
after:                     72        120

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
Adam Jackson 2010-10-06 09:56:56 -04:00
parent 7ee965a300
commit 48bc8d0dd9
3 changed files with 9 additions and 14 deletions

View File

@ -1011,8 +1011,6 @@ void dmxValidatePicture(PicturePtr pPicture, Mask mask)
attribs.poly_edge = pPicture->polyEdge;
if (mask & CPPolyMode)
attribs.poly_mode = pPicture->polyMode;
if (mask & CPDither)
attribs.dither = pPicture->dither;
if (mask & CPComponentAlpha)
attribs.component_alpha = pPicture->componentAlpha;

View File

@ -735,13 +735,12 @@ SetPictureToDefaults (PicturePtr pPicture)
pPicture->transform = 0;
pPicture->dither = None;
pPicture->filter = PictureGetFilterId (FilterNearest, -1, TRUE);
pPicture->filter_params = 0;
pPicture->filter_nparams = 0;
pPicture->serialNumber = GC_CHANGE_SERIAL_BIT;
pPicture->stateChanges = (1 << (CPLastBit+1)) - 1;
pPicture->stateChanges = -1;
pPicture->pSourcePict = 0;
}
@ -1261,7 +1260,7 @@ ChangePicture (PicturePtr pPicture,
}
break;
case CPDither:
pPicture->dither = NEXT_VAL(Atom);
(void) NEXT_VAL(Atom); /* unimplemented */
break;
case CPComponentAlpha:
{
@ -1480,7 +1479,6 @@ CopyPicture (PicturePtr pSrc,
pDst->polyMode = pSrc->polyMode;
break;
case CPDither:
pDst->dither = pSrc->dither;
break;
case CPComponentAlpha:
pDst->componentAlpha = pSrc->componentAlpha;

View File

@ -151,8 +151,6 @@ typedef struct _Picture {
PictFormatShort format; /* PICT_FORMAT */
int refcnt;
CARD32 id;
PicturePtr pNext; /* chain on same drawable */
unsigned int repeat : 1;
unsigned int graphicsExposures : 1;
unsigned int subWindowMode : 1;
@ -162,7 +160,11 @@ typedef struct _Picture {
unsigned int clientClipType : 2;
unsigned int componentAlpha : 1;
unsigned int repeatType : 2;
unsigned int unused : 21;
unsigned int filter : 3;
unsigned int stateChanges : CPLastBit;
unsigned int unused : 18 - CPLastBit;
PicturePtr pNext; /* chain on same drawable */
PicturePtr alphaMap;
DDXPointRec alphaOrigin;
@ -170,9 +172,6 @@ typedef struct _Picture {
DDXPointRec clipOrigin;
pointer clientClip;
Atom dither;
unsigned long stateChanges;
unsigned long serialNumber;
RegionPtr pCompositeClip;
@ -181,10 +180,9 @@ typedef struct _Picture {
PictTransform *transform;
int filter;
SourcePictPtr pSourcePict;
xFixed *filter_params;
int filter_nparams;
SourcePictPtr pSourcePict;
} PictureRec;
typedef Bool (*PictFilterValidateParamsProcPtr) (ScreenPtr pScreen, int id,
@ -205,6 +203,7 @@ typedef struct {
#define PictFilterBest 4
#define PictFilterConvolution 5
/* if you add an 8th filter, expand the filter bitfield above */
typedef struct {
char *alias;