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; attribs.poly_edge = pPicture->polyEdge;
if (mask & CPPolyMode) if (mask & CPPolyMode)
attribs.poly_mode = pPicture->polyMode; attribs.poly_mode = pPicture->polyMode;
if (mask & CPDither)
attribs.dither = pPicture->dither;
if (mask & CPComponentAlpha) if (mask & CPComponentAlpha)
attribs.component_alpha = pPicture->componentAlpha; attribs.component_alpha = pPicture->componentAlpha;

View File

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

View File

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