diff options
author | Bruno Jiménez <brunojimen@gmail.com> | 2014-05-19 18:14:56 +0200 |
---|---|---|
committer | Tom Stellard <thomas.stellard@amd.com> | 2014-06-10 15:29:57 -0400 |
commit | 2e01b8b440c1402c88a2755d89f40292e1f36ce5 (patch) | |
tree | 29be59cd5cedaae8ef5f8fac6848ddce5dee0f17 /src | |
parent | df1dd8bf22273b70a725299d269369c2d965334a (diff) | |
download | external_mesa3d-2e01b8b440c1402c88a2755d89f40292e1f36ce5.zip external_mesa3d-2e01b8b440c1402c88a2755d89f40292e1f36ce5.tar.gz external_mesa3d-2e01b8b440c1402c88a2755d89f40292e1f36ce5.tar.bz2 |
r600g/compute: align items correctly
Now, items whose size is a multiple of 1024 dw won't leave
1024 dw between itself and the following item
The rest of the cases is left as it was
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/r600/compute_memory_pool.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/gallium/drivers/r600/compute_memory_pool.c b/src/gallium/drivers/r600/compute_memory_pool.c index 01851ad..2050f28 100644 --- a/src/gallium/drivers/r600/compute_memory_pool.c +++ b/src/gallium/drivers/r600/compute_memory_pool.c @@ -30,6 +30,7 @@ #include "util/u_transfer.h" #include "util/u_surface.h" #include "util/u_pack_color.h" +#include "util/u_math.h" #include "util/u_memory.h" #include "util/u_inlines.h" #include "util/u_framebuffer.h" @@ -41,6 +42,7 @@ #include "evergreen_compute_internal.h" #include <inttypes.h> +#define ITEM_ALIGNMENT 1024 /** * Creates a new pool */ @@ -112,8 +114,7 @@ int64_t compute_memory_prealloc_chunk( return last_end; } - last_end = item->start_in_dw + item->size_in_dw; - last_end += (1024 - last_end % 1024); + last_end = item->start_in_dw + align(item->size_in_dw, ITEM_ALIGNMENT); } } @@ -177,7 +178,7 @@ int compute_memory_grow_pool(struct compute_memory_pool* pool, if (pool->shadow == NULL) return -1; } else { - new_size_in_dw += 1024 - (new_size_in_dw % 1024); + new_size_in_dw = align(new_size_in_dw, ITEM_ALIGNMENT); COMPUTE_DBG(pool->screen, " Aligned size = %d (%d bytes)\n", new_size_in_dw, new_size_in_dw * 4); @@ -323,7 +324,7 @@ int compute_memory_finalize_pending(struct compute_memory_pool* pool, need = pool->size_in_dw / 10; } - need += 1024 - (need % 1024); + need = align(need, ITEM_ALIGNMENT); err = compute_memory_grow_pool(pool, pipe, |