[PATCH] render: repack PictureRec
Adam Jackson
ajax at redhat.com
Wed Oct 6 08:42:03 PDT 2010
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
Signed-off-by: Adam Jackson <ajax at redhat.com>
---
hw/dmx/dmxpict.c | 2 --
render/picture.c | 6 ++----
render/picturestr.h | 15 +++++++--------
3 files changed, 9 insertions(+), 14 deletions(-)
diff --git a/hw/dmx/dmxpict.c b/hw/dmx/dmxpict.c
index 915e767..ab26593 100644
--- a/hw/dmx/dmxpict.c
+++ b/hw/dmx/dmxpict.c
@@ -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;
diff --git a/render/picture.c b/render/picture.c
index 7fda6b9..8f4e631 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:
{
@@ -1483,7 +1482,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 5c6c41e..ae69eef 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;
--
1.7.2.2
More information about the xorg-devel
mailing list