From: Jason Ekstrand Date: Wed, 26 Apr 2017 16:54:41 +0000 (-0700) Subject: anv/allocator: Add support for large stream allocations X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=955127db9376b49a41a428f5f89137cafec89b1c;p=mesa.git anv/allocator: Add support for large stream allocations Reviewed-by: Juan A. Suarez Romero --- diff --git a/src/intel/vulkan/anv_allocator.c b/src/intel/vulkan/anv_allocator.c index 3988a1ab2b8..a05aaf8fabd 100644 --- a/src/intel/vulkan/anv_allocator.c +++ b/src/intel/vulkan/anv_allocator.c @@ -916,10 +916,13 @@ anv_state_stream_alloc(struct anv_state_stream *stream, assert(alignment <= PAGE_SIZE); uint32_t offset = align_u32(stream->next, alignment); - if (offset + size > stream->block_size) { + if (offset + size > stream->block.alloc_size) { + uint32_t block_size = stream->block_size; + if (block_size < size) + block_size = round_to_power_of_two(size); + stream->block = anv_state_pool_alloc_no_vg(stream->state_pool, - stream->block_size, - PAGE_SIZE); + block_size, PAGE_SIZE); struct anv_state_stream_block *sb = stream->block.map; VG_NOACCESS_WRITE(&sb->block, stream->block); @@ -933,7 +936,7 @@ anv_state_stream_alloc(struct anv_state_stream *stream, stream->next = sizeof(*sb); offset = align_u32(stream->next, alignment); - assert(offset + size <= stream->block_size); + assert(offset + size <= stream->block.alloc_size); } struct anv_state state = stream->block;