On 11/22/2013 12:21 AM, Eric Anholt wrote: > The canary is basically just to give a better debugging message when you > ralloc_free() something that wasn't rallocated. Reduces maximum memory > usage of apitrace replay of the dota2 demo by 60MB on my 64-bit system (so > half that on a real 32-bit dota2 environment).
Thanks so much for doing the measurement on this. Obvious improvement, and frankly I'm embarrassed that I didn't think to do this years ago. :) Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> > --- > src/glsl/ralloc.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/src/glsl/ralloc.c b/src/glsl/ralloc.c > index e79dad7..36bc61f 100644 > --- a/src/glsl/ralloc.c > +++ b/src/glsl/ralloc.c > @@ -53,8 +53,10 @@ _CRTIMP int _vscprintf(const char *format, va_list argptr); > > struct ralloc_header > { > +#ifdef DEBUG > /* A canary value used to determine whether a pointer is ralloc'd. */ > unsigned canary; > +#endif > > struct ralloc_header *parent; > > @@ -78,7 +80,9 @@ get_header(const void *ptr) > { > ralloc_header *info = (ralloc_header *) (((char *) ptr) - > sizeof(ralloc_header)); > +#ifdef DEBUG > assert(info->canary == CANARY); > +#endif > return info; > } > > @@ -117,7 +121,9 @@ ralloc_size(const void *ctx, size_t size) > > add_child(parent, info); > > +#ifdef DEBUG > info->canary = CANARY; > +#endif > > return PTR_FROM_HEADER(info); > } > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev