On Wed, 2009-09-02 at 09:05 -0700, Keith Whitwell wrote:
> On Wed, 2009-09-02 at 08:48 -0700, José Fonseca wrote:
> > On Wed, 2009-09-02 at 05:11 -0700, Chris Wilson wrote:
> > > By rearranging the bitfields within the key we can reduce the size
> > > of the key from 644 to 196 bytes, reducing the cost of both the
> > > hashing and equality tests.
> > > ---
> > > src/mesa/main/texenvprogram.c | 7 ++++---
> > > 1 files changed, 4 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/src/mesa/main/texenvprogram.c b/src/mesa/main/texenvprogram.c
> > > index 5913957..3851937 100644
> > > --- a/src/mesa/main/texenvprogram.c
> > > +++ b/src/mesa/main/texenvprogram.c
> > > @@ -82,8 +82,8 @@ texenv_doing_secondary_color(GLcontext *ctx)
> > > #define DISASSEM (MESA_VERBOSE & VERBOSE_DISASSEM)
> > >
> > > struct mode_opt {
> > > - GLuint Source:4; /**< SRC_x */
> > > - GLuint Operand:3; /**< OPR_x */
> > > + GLubyte Source:4; /**< SRC_x */
> > > + GLubyte Operand:3; /**< OPR_x */
> > > };
> >
> > This doesn't compact anything. This chunk stay as is.
>
> The size of the struct decreases from 4 bytes to one.
>
> If you compile and run the below, you get "1 4" as the output:
>
>
> #include <stdio.h>
>
> struct fc {
> unsigned char foo:2;
> unsigned char bar:6;
> };
>
> struct fi {
> unsigned int foo:2;
> unsigned int bar:6;
> };
>
> int main()
> {
> printf("%d %d\n", sizeof(struct fc), sizeof(struct fi));
> return 0;
> }
Interesting. Gcc is trying to do something smart with alignment. Note
that having
struct fi {
unsigned int foo0:2;
unsigned int bar0:6;
unsigned int foo1:2;
unsigned int bar1:6;
unsigned int foo2:2;
unsigned int bar2:6;
unsigned int foo3:2;
unsigned int bar3:6;
};
Still shows "1 4" as the output. MSVC does the same thing.
Jose
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev