[Mesa-dev] [PATCH 4/5] Tidy a bit compute_memory_finalize_pending
Bruno Jimenez
brunojimen at gmail.com
Sat Jan 4 09:28:27 PST 2014
On Sat, 2014-01-04 at 08:52 -0800, Tom Stellard wrote:
> On Sat, Jan 04, 2014 at 01:27:32AM +0100, Bruno Jiménez wrote:
> > ---
> > src/gallium/drivers/r600/compute_memory_pool.c | 18 +++++++-----------
> > 1 file changed, 7 insertions(+), 11 deletions(-)
> >
> > diff --git a/src/gallium/drivers/r600/compute_memory_pool.c b/src/gallium/drivers/r600/compute_memory_pool.c
> > index 5374a48..954c890 100644
> > --- a/src/gallium/drivers/r600/compute_memory_pool.c
> > +++ b/src/gallium/drivers/r600/compute_memory_pool.c
> > @@ -320,21 +320,17 @@ int compute_memory_finalize_pending(struct compute_memory_pool* pool,
> > int64_t need = item->size_in_dw+2048 -
> > (pool->size_in_dw - allocated);
> >
> > - need += 1024 - (need % 1024);
> >
> > - if (need > 0) {
> > - err = compute_memory_grow_pool(pool,
> > - pipe,
> > - pool->size_in_dw + need);
> > - }
> > - else {
> > + if (need <= 0) {
>
> It looks like we are changing the behavior of the code here,
> because we are no longer doing need += 1024 - (need % 1024) before
> checking the value of need.
>
> This code really does need to be cleaned up, but I want to make sure we
> aren't changing its behavior, or if we are we have a test case to show
> we aren't breaking things.
>
> If you don't think we are changing behavior here, can you explain why
> not?
>
> Thanks,
> Tom
You are completely wright, it changes the behaviour for need == 0 when
calculated. Still, I think it can be addressed just by checking need <
< 0.
I'll explain myself:
Suppose that need is 0 or positive, with
need += 1024 - (need % 1024)
we do something like ceil to the nearest multiple of
1024, thus 0 will be 1024, 512 will also be 1024,
1025 will be 2048 and so on. So now need is always
positive, and we do compute_memory_grow_pool, check
its output and continue.
If need was negative it after
need += 1024 - (need % 1024)
it will still be negative OR 0, so now we take the
else and recalculate need as
need = pool->size_in_dw/10
need += 1024 - (need % 1024)
then we do compute_memory_grow, check its output
and continue.
What I changed is that we just check need for being
positive or negative or 0, in the second case, need
is just pool->size_in_dw/10, after that, we calculate
need += 1024 - (need % 1024)
and do compute_memory_grow, check its output and
continue.
So, you were wright, I changed the behaviour for
need == 0. But just checking for need < 0 should
address it.
If this is OK, I'll prepare a version 2 of the patches
later for submission.
Thanks!
Bruno
> > need = pool->size_in_dw / 10;
> > - need += 1024 - (need % 1024);
> > - err = compute_memory_grow_pool(pool,
> > - pipe,
> > - pool->size_in_dw + need);
> > }
> >
> > + need += 1024 - (need % 1024);
> > +
> > + err = compute_memory_grow_pool(pool,
> > + pipe,
> > + pool->size_in_dw + need);
> > +
> > if(err == -1)
> > return -1;
> > }
> > --
> > 1.8.5.2
> >
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list