Selaa lähdekoodia

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 11 vuotta sitten
vanhempi
commit
257d697fb9
1 muutettua tiedostoa jossa 4 lisäystä ja 6 poistoa
  1. 4
    6
      src/gallium/drivers/r600/evergreen_compute.c

+ 4
- 6
src/gallium/drivers/r600/evergreen_compute.c Näytä tiedosto

@@ -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;


Loading…
Peruuta
Tallenna