From: Marek Olšák <marek.ol...@amd.com>

The invalidation is already implemented by the driver.
---
 src/gallium/drivers/radeon/r600_pipe_common.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c 
b/src/gallium/drivers/radeon/r600_pipe_common.c
index 5f6e0fc..44fb7ae 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.c
+++ b/src/gallium/drivers/radeon/r600_pipe_common.c
@@ -43,6 +43,18 @@ static void r600_memory_barrier(struct pipe_context *ctx, 
unsigned flags)
 {
 }
 
+static void r600_resource_invalidate(struct pipe_context *ctx,
+                                    struct pipe_resource *res,
+                                    struct pipe_box *box)
+{
+       struct r600_common_context *rctx = (struct r600_common_context *)ctx;
+
+       if (res->target == PIPE_BUFFER &&
+           box->x == 0 && box->width == res->width0) {
+               rctx->invalidate_buffer(ctx, res);
+       }
+}
+
 static void r600_flush_dma_ring(void *ctx, unsigned flags)
 {
        struct r600_common_context *rctx = (struct r600_common_context *)ctx;
@@ -82,6 +94,7 @@ bool r600_common_context_init(struct r600_common_context 
*rctx,
        rctx->b.transfer_unmap = u_transfer_unmap_vtbl;
        rctx->b.transfer_inline_write = u_default_transfer_inline_write;
         rctx->b.memory_barrier = r600_memory_barrier;
+       rctx->b.resource_invalidate = r600_resource_invalidate;
 
        r600_init_context_texture_functions(rctx);
        r600_streamout_init(rctx);
-- 
1.8.3.2

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to