Mesa (master): r600g/compute: Map only against intermediate buffers
Tom Stellard
tstellar at kemper.freedesktop.org
Fri Jun 20 17:49:54 UTC 2014
Module: Mesa
Branch: master
Commit: 257d697fb92c617161a2a90607c4cde6f7b9034a
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=257d697fb92c617161a2a90607c4cde6f7b9034a
Author: Bruno Jiménez <brunojimen at gmail.com>
Date: Wed Jun 18 17:01:58 2014 +0200
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 at amd.com>
---
src/gallium/drivers/r600/evergreen_compute.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/src/gallium/drivers/r600/evergreen_compute.c b/src/gallium/drivers/r600/evergreen_compute.c
index 8657071..c0dd0f3 100644
--- a/src/gallium/drivers/r600/evergreen_compute.c
+++ b/src/gallium/drivers/r600/evergreen_compute.c
@@ -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;
More information about the mesa-commit
mailing list