From 48bc8d0dd99284f509bc6de01a8fd24a7bfc69d5 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Wed, 6 Oct 2010 09:56:56 -0400 Subject: 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 Reviewed-by: Matt Turner Signed-off-by: Adam Jackson --- render/picture.c | 6 ++---- render/picturestr.h | 15 +++++++-------- 2 files changed, 9 insertions(+), 12 deletions(-) (limited to 'render') diff --git a/render/picture.c b/render/picture.c index 896eaa7be..0028cc76a 100644 --- a/render/picture.c +++ b/render/picture.c @@ -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; diff --git a/render/picturestr.h b/render/picturestr.h index 5c6c41e23..ae69eef10 100644 --- a/render/picturestr.h +++ b/render/picturestr.h @@ -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; -- cgit v1.2.3