[Mesa-dev] [PATCH 02/18] anv/allocator: Return a null state for zero-size allocations

Juan A. Suarez Romero jasuarez at igalia.com
Thu Apr 27 16:22:07 UTC 2017


Reviewed-by: Juan A. Suarez Romero <jasuarez at igalia.com>


On Wed, 2017-04-26 at 07:35 -0700, Jason Ekstrand wrote:
> ---
>  src/intel/vulkan/anv_allocator.c | 9 +++++++++
>  src/intel/vulkan/anv_private.h   | 2 ++
>  2 files changed, 11 insertions(+)
> 
> diff --git a/src/intel/vulkan/anv_allocator.c b/src/intel/vulkan/anv_allocator.c
> index 594cf49..d93d4c9 100644
> --- a/src/intel/vulkan/anv_allocator.c
> +++ b/src/intel/vulkan/anv_allocator.c
> @@ -705,6 +705,9 @@ anv_state_pool_alloc_no_vg(struct anv_state_pool *pool,
>  struct anv_state
>  anv_state_pool_alloc(struct anv_state_pool *pool, size_t size, size_t align)
>  {
> +   if (size == 0)
> +      return ANV_STATE_NULL;
> +
>     struct anv_state state = anv_state_pool_alloc_no_vg(pool, size, align);
>     VG(VALGRIND_MEMPOOL_ALLOC(pool, state.map, size));
>     return state;
> @@ -726,6 +729,9 @@ anv_state_pool_free_no_vg(struct anv_state_pool *pool, struct anv_state state)
>  void
>  anv_state_pool_free(struct anv_state_pool *pool, struct anv_state state)
>  {
> +   if (state.alloc_size == 0)
> +      return;
> +
>     VG(VALGRIND_MEMPOOL_FREE(pool, state.map));
>     anv_state_pool_free_no_vg(pool, state);
>  }
> @@ -786,6 +792,9 @@ struct anv_state
>  anv_state_stream_alloc(struct anv_state_stream *stream,
>                         uint32_t size, uint32_t alignment)
>  {
> +   if (size == 0)
> +      return ANV_STATE_NULL;
> +
>     struct anv_state_stream_block *sb = stream->block;
>  
>     struct anv_state state;
> diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
> index dbe1e04..6ee8f54 100644
> --- a/src/intel/vulkan/anv_private.h
> +++ b/src/intel/vulkan/anv_private.h
> @@ -490,6 +490,8 @@ struct anv_state {
>     void *map;
>  };
>  
> +#define ANV_STATE_NULL ((struct anv_state) { .alloc_size = 0 })
> +
>  struct anv_fixed_size_state_pool {
>     size_t state_size;
>     union anv_free_list free_list;


More information about the mesa-dev mailing list