[Mesa-dev] [PATCH] mesa: Remove the ralloc canary on release builds.

Kenneth Graunke kenneth at whitecape.org
Fri Nov 22 00:47:45 PST 2013


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 <kenneth at 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);
>  }
> 



More information about the mesa-dev mailing list