This series changes anv_block_pool to use a list of BO's instead of a single BO that gets reallocated and set with userptr.
The main changes are: - The introduction of anv_state_table to track anv_states, and recycle them; - Addition of a list of BOs in anv_block_pool, instead of a single BO; - Forcing allocations to not cross boundaries between the previous size of a block_pool and the new one; - And pushing back the "padding" required to avoid such boundaries cross to the pool of free anv_states. I'm still working on increasing the test coverage (adding new tests for some new cases we have now), but the series seems reasonable imho to start getting some review already. Cc: Jason Ekstrand <ja...@jlekstrand.net> Rafael Antognolli (14): anv/tests: Fix block_pool_no_free test. anv/allocator: Add anv_state_table. anv/allocator: Use anv_state_table on anv_state_pool_alloc. anv/allocator: Use anv_state_table on back_alloc too. anv/allocator: Remove usage of anv_free_list. anv/allocator: Add getters for anv_block_pool. anv: Update usage of block_pool->bo. anv/allocator: Add support for a list of BOs in block pool. anv: Validate the list of BOs from the block pool. anv: Add clflush to states. anv: Remove some asserts. anv/allocator: Rework chunk return to the state pool. anv/allocator: Add padding information. anv/allocator: Add support for non-userptr. src/intel/vulkan/anv_allocator.c | 741 ++++++++++++++++---- src/intel/vulkan/anv_batch_chain.c | 62 +- src/intel/vulkan/anv_blorp.c | 2 +- src/intel/vulkan/anv_private.h | 73 +- src/intel/vulkan/gen8_cmd_buffer.c | 6 +- src/intel/vulkan/genX_blorp_exec.c | 9 +- src/intel/vulkan/genX_cmd_buffer.c | 20 +- src/intel/vulkan/genX_gpu_memcpy.c | 3 - src/intel/vulkan/tests/block_pool_no_free.c | 19 +- 9 files changed, 740 insertions(+), 195 deletions(-) -- 2.17.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev