diff options
author | Marek Olšák <[email protected]> | 2014-08-11 13:32:40 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2014-08-14 20:45:03 +0200 |
commit | 79f28cdb983b7faf9d3008fae541a30e34ccce5a (patch) | |
tree | 1fc0bc698647b6398660bdc20b2066bc23808d4f /src/gallium/drivers/radeon | |
parent | da9c3ed304be5d08ff989d61c6e2d1be8a845767 (diff) |
r600g: implement invalidation of texture buffer objects
This fixes piglit spec/ARB_texture_buffer_object/data-sync.
Reviewed-by: Alex Deucher <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeon')
-rw-r--r-- | src/gallium/drivers/radeon/r600_pipe_common.c | 2 | ||||
-rw-r--r-- | src/gallium/drivers/radeon/r600_pipe_common.h | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c index 95abfb82f41..5ceadb4d3e5 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.c +++ b/src/gallium/drivers/radeon/r600_pipe_common.c @@ -157,6 +157,8 @@ bool r600_common_context_init(struct r600_common_context *rctx, rctx->b.memory_barrier = r600_memory_barrier; rctx->b.flush = r600_flush_from_st; + LIST_INITHEAD(&rctx->texture_buffers); + r600_init_context_texture_functions(rctx); r600_streamout_init(rctx); r600_query_init(rctx); diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h b/src/gallium/drivers/radeon/r600_pipe_common.h index 59d0b3e21c4..ab348ae02cc 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.h +++ b/src/gallium/drivers/radeon/r600_pipe_common.h @@ -375,6 +375,11 @@ struct r600_common_context { float sample_locations_8x[8][2]; float sample_locations_16x[16][2]; + /* The list of all texture buffer objects in this context. + * This list is walked when a buffer is invalidated/reallocated and + * the GPU addresses are updated. */ + struct list_head texture_buffers; + /* Copy one resource to another using async DMA. */ void (*dma_copy)(struct pipe_context *ctx, struct pipe_resource *dst, |