diff --git a/src/imagination/vulkan/pvr_hw_pass.c b/src/imagination/vulkan/pvr_hw_pass.c index a269eaac8c9..704cd71323c 100644 --- a/src/imagination/vulkan/pvr_hw_pass.c +++ b/src/imagination/vulkan/pvr_hw_pass.c @@ -182,7 +182,7 @@ struct pvr_renderpass_alloc { /* Which parts of each tile buffer are allocated. Length is * tile_buffers_count. */ - struct pvr_renderpass_alloc_buffer *tile_buffers; + struct pvr_renderpass_alloc_buffer tile_buffers[PVR_MAX_TILE_BUFFER_COUNT]; }; struct pvr_renderpass_subpass { @@ -291,19 +291,9 @@ static VkResult pvr_copy_alloc(struct pvr_renderpass_context *ctx, dst->tile_buffers_count = src->tile_buffers_count; if (dst->tile_buffers_count > 0U) { - dst->tile_buffers = - vk_alloc(ctx->allocator, - sizeof(dst->tile_buffers[0U]) * dst->tile_buffers_count, - 8, - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND); - if (!dst->tile_buffers) - return vk_error(NULL, VK_ERROR_OUT_OF_HOST_MEMORY); - memcpy(dst->tile_buffers, src->tile_buffers, sizeof(dst->tile_buffers[0U]) * dst->tile_buffers_count); - } else { - dst->tile_buffers = NULL; } return VK_SUCCESS; @@ -313,9 +303,6 @@ static VkResult pvr_copy_alloc(struct pvr_renderpass_context *ctx, static void pvr_free_alloc(struct pvr_renderpass_context *ctx, struct pvr_renderpass_alloc *alloc) { - if (alloc->tile_buffers) - vk_free(ctx->allocator, alloc->tile_buffers); - memset(alloc, 0U, sizeof(*alloc)); } @@ -328,7 +315,7 @@ static void pvr_reset_render(struct pvr_renderpass_context *ctx) memset(&ctx->alloc.output_reg, 0U, sizeof(ctx->alloc.output_reg)); ctx->alloc.output_regs_count = 0U; ctx->alloc.tile_buffers_count = 0U; - ctx->alloc.tile_buffers = NULL; + memset(&ctx->alloc.tile_buffers, 0U, sizeof(ctx->alloc.tile_buffers)); ctx->hw_render = NULL; ctx->subpasses = NULL; @@ -660,17 +647,6 @@ pvr_mark_storage_allocated(struct pvr_renderpass_context *ctx, assert(resource->type == USC_MRT_RESOURCE_TYPE_MEMORY); if (resource->mem.tile_buffer >= alloc->tile_buffers_count) { - /* Grow the number of tile buffers. */ - struct pvr_renderpass_alloc_buffer *new_tile_buffers = vk_realloc( - ctx->allocator, - alloc->tile_buffers, - sizeof(alloc->tile_buffers[0U]) * (resource->mem.tile_buffer + 1U), - 8U, - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND); - if (!new_tile_buffers) - return vk_error(NULL, VK_ERROR_OUT_OF_HOST_MEMORY); - - alloc->tile_buffers = new_tile_buffers; memset( &alloc->tile_buffers[alloc->tile_buffers_count], 0U, @@ -1671,16 +1647,6 @@ static VkResult pvr_merge_alloc(struct pvr_renderpass_context *ctx, MAX2(dst->output_regs_count, src->output_regs_count); if (dst->tile_buffers_count < src->tile_buffers_count) { - struct pvr_renderpass_alloc_buffer *new_tile_buffers = - vk_realloc(ctx->allocator, - dst->tile_buffers, - sizeof(dst->tile_buffers[0U]) * src->tile_buffers_count, - 8U, - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND); - if (!new_tile_buffers) - return vk_error(NULL, VK_ERROR_OUT_OF_HOST_MEMORY); - - dst->tile_buffers = new_tile_buffers; memset(dst->tile_buffers + dst->tile_buffers_count, 0U, sizeof(dst->tile_buffers[0U]) * @@ -1778,7 +1744,6 @@ pvr_is_subpass_space_available(const struct pvr_device_info *dev_info, /* Mark pointers in return structures as not allocated. */ sp_dsts->color = NULL; - alloc->tile_buffers = NULL; /* Allocate space for which locations are in use after this subpass. */ result = pvr_copy_alloc(ctx, alloc, &ctx->alloc); @@ -1890,7 +1855,6 @@ pvr_can_combine_with_render(const struct pvr_device_info *dev_info, /* Mark pointers in return structures as not allocated. */ sp_dsts->color = NULL; - new_alloc->tile_buffers = NULL; if (ctx->hw_render && (ctx->hw_render->view_mask != subpass->view_mask)) return false;