On Wed, May 3, 2017 at 10:19 AM, Juan A. Suarez Romero <jasua...@igalia.com> wrote:
> On Wed, 2017-04-26 at 07:35 -0700, Jason Ekstrand wrote: > > --- > > src/intel/vulkan/anv_allocator.c | 19 ++++++++++++++++--- > > 1 file changed, 16 insertions(+), 3 deletions(-) > > > > diff --git a/src/intel/vulkan/anv_allocator.c b/src/intel/vulkan/anv_ > allocator.c > > index 0e33d1e..7a687b7 100644 > > --- a/src/intel/vulkan/anv_allocator.c > > +++ b/src/intel/vulkan/anv_allocator.c > > @@ -177,11 +177,22 @@ anv_free_list_pop(union anv_free_list *list, void > **map, int32_t *offset) > > } > > > > static void > > -anv_free_list_push(union anv_free_list *list, void *map, int32_t offset) > > +anv_free_list_push(union anv_free_list *list, void *map, int32_t offset, > > + uint32_t stride, uint32_t count) > > Is stride a good name? Wouldn't it be better to use block_size, or just > size? > > Specially because later we invoke it with block_size/alloc_size. > Sure. I'm happy to rename it. > > In any case, Reviewed-by: Juan A. Suarez Romero <jasua...@igalia.com> > Thanks! > > > { > > union anv_free_list current, old, new; > > int32_t *next_ptr = map + offset; > > > > + /* If we're returning more than one chunk, we need to build a chain > to add > > + * to the list. Fortunately, we can do this without any atomics > since we > > + * own everything in the chain right now. `offset` is left pointing > to the > > + * head of our chain list while `next_ptr` points to the tail. > > + */ > > + for (uint32_t i = 1; i < count; i++) { > > + VG_NOACCESS_WRITE(next_ptr, offset + i * stride); > > + next_ptr = map + offset + i * stride; > > + } > > + > > old = *list; > > do { > > current = old; > > @@ -742,10 +753,12 @@ anv_state_pool_free_no_vg(struct anv_state_pool > *pool, struct anv_state state) > > if (state.offset < 0) { > > assert(state.alloc_size == pool->block_size); > > anv_free_list_push(&pool->back_alloc_free_list, > > - pool->block_pool.map, state.offset); > > + pool->block_pool.map, state.offset, > > + state.alloc_size, 1); > > } else { > > anv_free_list_push(&pool->buckets[bucket].free_list, > > - pool->block_pool.map, state.offset); > > + pool->block_pool.map, state.offset, > > + state.alloc_size, 1); > > } > > } > > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev