diff options
author | Eric Anholt <[email protected]> | 2013-09-19 14:54:13 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2013-09-23 12:45:22 -0700 |
commit | 673129e0b936b1c748e988d3f74f3efaab9e5693 (patch) | |
tree | f52de6f9d312a47de141ffbee83d1363a60c14c4 | |
parent | c0378b6400e9e56df984eb1bc7ef43254740171c (diff) |
mesa: Shrink the size of the enum string lookup struct.
Since it's only used for debug information, we can misalign the struct and
save the disk space. Another 19k on a 64-bit build.
v2: Make a compiler.h macro to only use the attribute if we know we can.
Reviewed-by: Kenneth Graunke <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
-rw-r--r-- | src/mapi/glapi/gen/gl_enums.py | 6 | ||||
-rw-r--r-- | src/mesa/main/compiler.h | 9 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/mapi/glapi/gen/gl_enums.py b/src/mapi/glapi/gen/gl_enums.py index e1ab6009136..a0c47f41f20 100644 --- a/src/mapi/glapi/gen/gl_enums.py +++ b/src/mapi/glapi/gen/gl_enums.py @@ -47,8 +47,8 @@ class PrintGlEnums(gl_XML.gl_print_base): print '#include "main/imports.h"' print '#include "main/mtypes.h"' print '' - print 'typedef struct {' - print ' size_t offset;' + print 'typedef struct PACKED {' + print ' uint16_t offset;' print ' int n;' print '} enum_elt;' print '' @@ -78,6 +78,8 @@ static char token_tmp[20]; const char *_mesa_lookup_enum_by_nr( int nr ) { + STATIC_ASSERT(sizeof(enum_string_table) < (1 << 16)); + enum_elt *elt = _mesa_bsearch(& nr, enum_string_table_offsets, Elements(enum_string_table_offsets), sizeof(enum_string_table_offsets[0]), diff --git a/src/mesa/main/compiler.h b/src/mesa/main/compiler.h index fb7baf84ea4..0f27d5a6643 100644 --- a/src/mesa/main/compiler.h +++ b/src/mesa/main/compiler.h @@ -270,6 +270,15 @@ static INLINE GLuint CPU_TO_LE32(GLuint x) #define NULL 0 #endif +/* Used to optionally mark structures with misaligned elements or size as + * packed, to trade off performance for space. + */ +#if (__GNUC__ >= 3) +#define PACKED __attribute__((__packed__)) +#else +#define PACKED +#endif + /** * LONGSTRING macro |