[Mesa-dev] [PATCH] anv/allocator: Don't srink either end of the block pool

Eero Tamminen eero.t.tamminen at intel.com
Mon Apr 23 11:17:10 UTC 2018


Hi,

On 21.04.2018 08:15, Jason Ekstrand wrote:
> Previously, we only tried to ensure that we didn't shrink either end
> below what was already handed out.  However, due to the way we handle
> relocations with block pools, we can't shrink the back end at all.  It's
> probably best to not shrink in either direction.
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105374
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106147

Verified that "texture3d" demo works with this patch, crashes without it.

Tested-by: Eero Tamminen <eero.t.tamminen at intel.com>


	- Eero

> Cc: mesa-stable at lists.freedesktop.org
> ---
>   src/intel/vulkan/anv_allocator.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/src/intel/vulkan/anv_allocator.c b/src/intel/vulkan/anv_allocator.c
> index f884ac3..642e161 100644
> --- a/src/intel/vulkan/anv_allocator.c
> +++ b/src/intel/vulkan/anv_allocator.c
> @@ -508,12 +508,12 @@ anv_block_pool_grow(struct anv_block_pool *pool, struct anv_block_state *state)
>         assert(center_bo_offset >= back_used);
>   
>         /* Make sure we don't shrink the back end of the pool */
> -      if (center_bo_offset < pool->back_state.end)
> -         center_bo_offset = pool->back_state.end;
> +      if (center_bo_offset < back_required)
> +         center_bo_offset = back_required;
>   
>         /* Make sure that we don't shrink the front end of the pool */
> -      if (size - center_bo_offset < pool->state.end)
> -         center_bo_offset = size - pool->state.end;
> +      if (size - center_bo_offset < front_required)
> +         center_bo_offset = size - front_required;
>      }
>   
>      assert(center_bo_offset % PAGE_SIZE == 0);
> 



More information about the mesa-dev mailing list