[Mesa-dev] [PATCH v2] util/ralloc: Remove double zero'ing of rzalloc buffers

Kenneth Graunke kenneth at whitecape.org
Tue May 10 23:16:17 UTC 2016


On Tuesday, May 10, 2016 3:54:05 PM PDT Jordan Justen wrote:
> Juha-Pekka found this back in May 2015:
> <1430915727-28677-1-git-send-email-juhapekka.heikkila at gmail.com>
> 
> From the discussion, obviously it would be preferable to make
> ralloc_size no longer return zeroed memory, but Juha-Pekka found that
> it would break Mesa.
> 
> In <56AF1C57.2030904 at gmail.com>, Juha-Pekka mentioned that patches
> exist to fix i965 when ralloc_size is fixed to not zero memory, but
> the patches have not made their way to mesa-dev yet.
> 
> For now, let's stop doing the double zeroing of rzalloc buffers.
> 
> v2:
>  * Move ralloc_size code to rzalloc_size, and add a comment as
>    suggested by Ken.
> 
> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> Cc: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
> Cc: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/util/ralloc.c | 21 ++++++++++++---------
>  1 file changed, 12 insertions(+), 9 deletions(-)
> 
> diff --git a/src/util/ralloc.c b/src/util/ralloc.c
> index 6d4032b..9526011 100644
> --- a/src/util/ralloc.c
> +++ b/src/util/ralloc.c
> @@ -110,6 +110,18 @@ ralloc_context(const void *ctx)
>  void *
>  ralloc_size(const void *ctx, size_t size)
>  {
> +   /* ralloc_size was originally implemented using calloc, which meant some
> +    * code accidentally relied on its zero filling behavior.
> +    *
> +    * TODO: Make ralloc_size not zero fill memory, and cleanup any code 
that
> +    * should instead be using rzalloc.
> +    */
> +   return rzalloc_size(ctx, size);
> +}
> +
> +void *
> +rzalloc_size(const void *ctx, size_t size)
> +{
>     void *block = calloc(1, size + sizeof(ralloc_header));
>     ralloc_header *info;
>     ralloc_header *parent;
> @@ -128,15 +140,6 @@ ralloc_size(const void *ctx, size_t size)
>     return PTR_FROM_HEADER(info);
>  }
>  
> -void *
> -rzalloc_size(const void *ctx, size_t size)
> -{
> -   void *ptr = ralloc_size(ctx, size);
> -   if (likely(ptr != NULL))
> -      memset(ptr, 0, size);
> -   return ptr;
> -}
> -
>  /* helper function - assumes ptr != NULL */
>  static void *
>  resize(void *ptr, size_t size)

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160510/68965c52/attachment.sig>


More information about the mesa-dev mailing list