On Sat, Jul 19, 2014 at 07:35:50PM +0200, Bruno Jiménez wrote: > This will be used in the following patch to avoid duplicated code > ---
Reviewed-by: Tom Stellard <thomas.stell...@amd.com> > src/gallium/drivers/r600/compute_memory_pool.c | 11 ++++++----- > src/gallium/drivers/r600/compute_memory_pool.h | 1 + > 2 files changed, 7 insertions(+), 5 deletions(-) > > diff --git a/src/gallium/drivers/r600/compute_memory_pool.c > b/src/gallium/drivers/r600/compute_memory_pool.c > index 1ad77ad..ca36240 100644 > --- a/src/gallium/drivers/r600/compute_memory_pool.c > +++ b/src/gallium/drivers/r600/compute_memory_pool.c > @@ -293,7 +293,8 @@ int compute_memory_finalize_pending(struct > compute_memory_pool* pool, > } > > if (pool->status & POOL_FRAGMENTED) { > - compute_memory_defrag(pool, pipe); > + struct pipe_resource *src = (struct pipe_resource *)pool->bo; > + compute_memory_defrag(pool, src, src, pipe); > } > > if (pool->size_in_dw < allocated + unallocated) { > @@ -328,20 +329,20 @@ int compute_memory_finalize_pending(struct > compute_memory_pool* pool, > * \param pool The pool to be defragmented > */ > void compute_memory_defrag(struct compute_memory_pool *pool, > + struct pipe_resource *src, struct pipe_resource *dst, > struct pipe_context *pipe) > { > struct compute_memory_item *item; > - struct pipe_resource *src = (struct pipe_resource *)pool->bo; > int64_t last_pos; > > COMPUTE_DBG(pool->screen, "* compute_memory_defrag()\n"); > > last_pos = 0; > LIST_FOR_EACH_ENTRY(item, pool->item_list, link) { > - if (item->start_in_dw != last_pos) { > - assert(last_pos < item->start_in_dw); > + if (src != dst || item->start_in_dw != last_pos) { > + assert(last_pos <= item->start_in_dw); > > - compute_memory_move_item(pool, src, src, > + compute_memory_move_item(pool, src, dst, > item, last_pos, pipe); > } > > diff --git a/src/gallium/drivers/r600/compute_memory_pool.h > b/src/gallium/drivers/r600/compute_memory_pool.h > index 822bfbe..5f1d72b 100644 > --- a/src/gallium/drivers/r600/compute_memory_pool.h > +++ b/src/gallium/drivers/r600/compute_memory_pool.h > @@ -91,6 +91,7 @@ int compute_memory_finalize_pending(struct > compute_memory_pool* pool, > struct pipe_context * pipe); > > void compute_memory_defrag(struct compute_memory_pool *pool, > + struct pipe_resource *src, struct pipe_resource *dst, > struct pipe_context *pipe); > > int compute_memory_promote_item(struct compute_memory_pool *pool, > -- > 2.0.2 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev