Procházet zdrojové kódy

r600g/compute: Map only against intermediate buffers

With this we can assure that mapped buffers will never change
its position when relocating the pool.

This patch should finally solve the mapping bug.

v2: Use the new is_item_in_pool util function,
    as suggested by Tom Stellard

Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
tags/10.3-branchpoint
Bruno Jiménez před 11 roky
rodič
revize
257d697fb9
1 změnil soubory, kde provedl 4 přidání a 6 odebrání
  1. 4
    6
      src/gallium/drivers/r600/evergreen_compute.c

+ 4
- 6
src/gallium/drivers/r600/evergreen_compute.c Zobrazit soubor

@@ -970,14 +970,12 @@ void *r600_compute_global_transfer_map(
struct pipe_resource *dst;
unsigned offset = box->x;

if (buffer->chunk->real_buffer) {
dst = (struct pipe_resource*)buffer->chunk->real_buffer;
}
else {
dst = (struct pipe_resource*)buffer->chunk->pool->bo;
offset += (buffer->chunk->start_in_dw * 4);
if (is_item_in_pool(buffer->chunk)) {
compute_memory_demote_item(pool, buffer->chunk, ctx_);
}

dst = (struct pipe_resource*)buffer->chunk->real_buffer;

if (usage & PIPE_TRANSFER_READ)
buffer->chunk->status |= ITEM_MAPPED_FOR_READING;


Načítá se…
Zrušit
Uložit