mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 04:48:08 +02:00
anv: Account for the header in anv_state_stream_alloc
If we have an allocation that's exactly the block size, we end up computing a new block size to allocate that's exactly the block size, add in the header, and then assert fail. When computing the block size, we need to account for the header. Fixes:955127db93"anv/allocator: Add support for large stream..." Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4336> (cherry picked from commit63bec07e14)
This commit is contained in:
parent
6ddc34f659
commit
e51b749f1d
2 changed files with 4 additions and 3 deletions
|
|
@ -40,7 +40,7 @@
|
|||
"description": "anv: Account for the header in anv_state_stream_alloc",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "955127db9376b49a41a428f5f89137cafec89b1c"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1226,9 +1226,10 @@ anv_state_stream_alloc(struct anv_state_stream *stream,
|
|||
|
||||
uint32_t offset = align_u32(stream->next, alignment);
|
||||
if (offset + size > stream->block.alloc_size) {
|
||||
uint32_t min_block_size = size + sizeof(struct anv_state_stream_block);
|
||||
uint32_t block_size = stream->block_size;
|
||||
if (block_size < size)
|
||||
block_size = round_to_power_of_two(size);
|
||||
if (block_size < min_block_size)
|
||||
block_size = round_to_power_of_two(min_block_size);
|
||||
|
||||
stream->block = anv_state_pool_alloc_no_vg(stream->state_pool,
|
||||
block_size, PAGE_SIZE);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue