[Mesa-dev] [PATCH 4/5] r600g/compute: Tidy a bit compute_memory_finalize_pending
Bruno Jiménez
brunojimen at gmail.com
Sun Jan 19 05:17:17 PST 2014
Explanation of the changes, as requested by Tom Stellard:
Let's take need after is calculated as
item->size_in_dw+2048 - (pool->size_in_dw - allocated)
BEFORE:
If need is positive or 0:
we calculate need += 1024 - (need % 1024), which is like
cealing to the nearest multiple of 1024, for example
0 goes to 1024, 512 goes to 1024 as well, 1025 goes
to 2048 and so on. So now need is always possitive,
we do compute_memory_grow_pool, check its output
and continue.
If need is negative:
we calculate need += 1024 - (need % 1024), in this case
we will have negative numbers, and if need is
[-1024:-1] 0, so now we take the else, recalculate
need as need = pool->size_in_dw / 10 and
need += 1024 - (need % 1024), we do
compute_memory_grow_pool, check its output and continue.
AFTER:
If need is positive or 0:
we jump the if, calculate need += 1024 - (need % 1024)
compute_memory_grow_pool, check its output and continue.
If need is negative:
we enter the if, and need is now pool->size_in_dw / 10.
Now we calculate need += 1024 - (need % 1024)
compute_memory_grow_pool, check its output and continue.
---
src/gallium/drivers/r600/compute_memory_pool.c | 19 +++++++------------
1 file changed, 7 insertions(+), 12 deletions(-)
diff --git a/src/gallium/drivers/r600/compute_memory_pool.c b/src/gallium/drivers/r600/compute_memory_pool.c
index 1e04639..7a3b92c 100644
--- a/src/gallium/drivers/r600/compute_memory_pool.c
+++ b/src/gallium/drivers/r600/compute_memory_pool.c
@@ -320,21 +320,16 @@ 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) {
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.3
More information about the mesa-dev
mailing list