mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 20:38:06 +02:00
r600g/compute: Add statuses to the compute_memory_items
These statuses will help track whether the items are mapped
or if they should be promoted to or demoted from the pool
v2: Use the new is_item_in_pool util function,
as suggested by Tom Stellard
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
This commit is contained in:
parent
9e491eb5d7
commit
e3dfe3f7b2
2 changed files with 18 additions and 1 deletions
|
|
@ -27,13 +27,18 @@
|
|||
|
||||
#include <stdlib.h>
|
||||
|
||||
#define ITEM_MAPPED_FOR_READING (1<<0)
|
||||
#define ITEM_MAPPED_FOR_WRITING (1<<1)
|
||||
#define ITEM_FOR_PROMOTING (1<<2)
|
||||
#define ITEM_FOR_DEMOTING (1<<3)
|
||||
|
||||
struct compute_memory_pool;
|
||||
|
||||
struct compute_memory_item
|
||||
{
|
||||
int64_t id; ///ID of the memory chunk
|
||||
|
||||
int untouched; ///True if the memory contains only junk, no need to save it for defrag
|
||||
uint32_t status; ///Will track the status of the item
|
||||
|
||||
int64_t start_in_dw; ///Start pointer in dwords relative in the pool bo
|
||||
int64_t size_in_dw; ///Size of the chunk in dwords
|
||||
|
|
|
|||
|
|
@ -659,6 +659,15 @@ static void evergreen_set_global_binding(
|
|||
return;
|
||||
}
|
||||
|
||||
/* We mark these items for promotion to the pool if they
|
||||
* aren't already there */
|
||||
for (int i = 0; i < n; i++) {
|
||||
struct compute_memory_item *item = buffers[i]->chunk;
|
||||
|
||||
if (!is_item_in_pool(item))
|
||||
buffers[i]->chunk->status |= ITEM_FOR_PROMOTING;
|
||||
}
|
||||
|
||||
compute_memory_finalize_pending(pool, ctx_);
|
||||
|
||||
for (int i = 0; i < n; i++)
|
||||
|
|
@ -969,6 +978,9 @@ void *r600_compute_global_transfer_map(
|
|||
offset += (buffer->chunk->start_in_dw * 4);
|
||||
}
|
||||
|
||||
if (usage & PIPE_TRANSFER_READ)
|
||||
buffer->chunk->status |= ITEM_MAPPED_FOR_READING;
|
||||
|
||||
COMPUTE_DBG(rctx->screen, "* r600_compute_global_transfer_map()\n"
|
||||
"level = %u, usage = %u, box(x = %u, y = %u, z = %u "
|
||||
"width = %u, height = %u, depth = %u)\n", level, usage,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue