anv/allocator: Improve block pool growing asserts
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 3 May 2017 16:43:58 +0000 (09:43 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 5 May 2017 02:07:54 +0000 (19:07 -0700)
Reviewed-by: Juan A. Suarez Romero <jasuarez@igalia.com>
src/intel/vulkan/anv_allocator.c

index a05aaf8fabd9820d35f5d4398b280557523115c8..e2f2dea5699c6630df0fdda828bf61eb6d834aa1 100644 (file)
@@ -340,6 +340,11 @@ anv_block_pool_expand_range(struct anv_block_pool *pool,
    assert(center_bo_offset >= pool->back_state.end);
    assert(size - center_bo_offset >= pool->state.end);
 
    assert(center_bo_offset >= pool->back_state.end);
    assert(size - center_bo_offset >= pool->state.end);
 
+   /* Assert that we don't go outside the bounds of the memfd */
+   assert(center_bo_offset <= BLOCK_POOL_MEMFD_CENTER);
+   assert(size - center_bo_offset <=
+          BLOCK_POOL_MEMFD_SIZE - BLOCK_POOL_MEMFD_CENTER);
+
    cleanup = u_vector_add(&pool->mmap_cleanups);
    if (!cleanup)
       return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
    cleanup = u_vector_add(&pool->mmap_cleanups);
    if (!cleanup)
       return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
@@ -495,12 +500,6 @@ anv_block_pool_grow(struct anv_block_pool *pool, struct anv_block_state *state)
 
    assert(size > pool->bo.size);
 
 
    assert(size > pool->bo.size);
 
-   /* We can't have a block pool bigger than 1GB because we use signed
-    * 32-bit offsets in the free list and we don't want overflow.  We
-    * should never need a block pool bigger than 1GB anyway.
-    */
-   assert(size <= (1u << 31));
-
    /* We compute a new center_bo_offset such that, when we double the size
     * of the pool, we maintain the ratio of how much is used by each side.
     * This way things should remain more-or-less balanced.
    /* We compute a new center_bo_offset such that, when we double the size
     * of the pool, we maintain the ratio of how much is used by each side.
     * This way things should remain more-or-less balanced.