Lines Matching refs:pool

139 vn_feedback_pool_grow_locked(struct vn_feedback_pool *pool)
145 result = vn_feedback_buffer_create(pool->device, pool->size, pool->alloc,
150 pool->used = 0;
152 list_add(&feedback_buf->head, &pool->feedback_buffers);
159 struct vn_feedback_pool *pool,
163 simple_mtx_init(&pool->mutex, mtx_plain);
165 pool->device = dev;
166 pool->alloc = alloc;
167 pool->size = size;
168 pool->used = size;
169 list_inithead(&pool->feedback_buffers);
170 list_inithead(&pool->free_slots);
173 return vn_feedback_pool_grow_locked(pool);
177 vn_feedback_pool_fini(struct vn_feedback_pool *pool)
179 list_for_each_entry_safe(struct vn_feedback_slot, slot, &pool->free_slots,
181 vk_free(pool->alloc, slot);
184 &pool->feedback_buffers, head)
185 vn_feedback_buffer_destroy(pool->device, feedback_buf, pool->alloc);
187 simple_mtx_destroy(&pool->mutex);
191 vn_feedback_pool_alloc_locked(struct vn_feedback_pool *pool,
198 if (unlikely(aligned_size > pool->size - pool->used)) {
199 VkResult result = vn_feedback_pool_grow_locked(pool);
203 assert(aligned_size <= pool->size - pool->used);
206 *out_offset = pool->used;
207 pool->used += aligned_size;
209 return list_first_entry(&pool->feedback_buffers, struct vn_feedback_buffer,
214 vn_feedback_pool_alloc(struct vn_feedback_pool *pool,
225 simple_mtx_lock(&pool->mutex);
226 if (!list_is_empty(&pool->free_slots)) {
228 list_first_entry(&pool->free_slots, struct vn_feedback_slot, head);
230 simple_mtx_unlock(&pool->mutex);
236 slot = vk_alloc(pool->alloc, sizeof(*slot), VN_DEFAULT_ALIGN,
239 simple_mtx_unlock(&pool->mutex);
243 feedback_buf = vn_feedback_pool_alloc_locked(pool, slot_size, &offset);
244 simple_mtx_unlock(&pool->mutex);
247 vk_free(pool->alloc, slot);
260 vn_feedback_pool_free(struct vn_feedback_pool *pool,
263 simple_mtx_lock(&pool->mutex);
264 list_add(&slot->head, &pool->free_slots);
265 simple_mtx_unlock(&pool->mutex);
389 struct vn_feedback_cmd_pool *pool,
396 .commandPool = pool->pool,
403 simple_mtx_lock(&pool->mutex);
410 vn_FreeCommandBuffers(dev_handle, pool->pool, 1, &cmd_handle);
417 simple_mtx_unlock(&pool->mutex);
424 struct vn_feedback_cmd_pool *pool,
427 simple_mtx_lock(&pool->mutex);
428 vn_FreeCommandBuffers(dev_handle, pool->pool, 1, &cmd_handle);
429 simple_mtx_unlock(&pool->mutex);
459 result = vn_CreateCommandPool(dev_handle, &info, alloc, &pools[i].pool);
462 vn_DestroyCommandPool(dev_handle, pools[j].pool, alloc);
488 vn_DestroyCommandPool(dev_handle, dev->cmd_pools[i].pool, alloc);