mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 02:58:05 +02:00
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>
This commit is contained in:
parent
df1dd8bf22
commit
2e01b8b440
1 changed files with 5 additions and 4 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue