---
 src/gallium/drivers/r600/r600_texture.c |   27 ++++++++++++++++++++++++++-
 1 files changed, 26 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_texture.c 
b/src/gallium/drivers/r600/r600_texture.c
index 4ebd5b7..7222b43 100644
--- a/src/gallium/drivers/r600/r600_texture.c
+++ b/src/gallium/drivers/r600/r600_texture.c
@@ -31,6 +31,7 @@
 #include <util/u_inlines.h>
 #include <util/u_memory.h>
 #include "state_tracker/drm_driver.h"
+#include "pipebuffer/pb_buffer.h"
 #include "r600_pipe.h"
 #include "r600_resource.h"
 #include "r600_state_inlines.h"
@@ -537,6 +538,7 @@ void* r600_texture_transfer_map(struct pipe_context *ctx,
        enum pipe_format format = transfer->resource->format;
        struct radeon *radeon = (struct radeon *)ctx->screen->winsys;
        unsigned offset = 0;
+       unsigned usage = 0;
        char *map;
 
        if (rtransfer->linear_texture) {
@@ -553,7 +555,30 @@ void* r600_texture_transfer_map(struct pipe_context *ctx,
                        transfer->box.y / util_format_get_blockheight(format) * 
transfer->stride +
                        transfer->box.x / util_format_get_blockwidth(format) * 
util_format_get_blocksize(format);
        }
-       map = r600_bo_map(radeon, bo, 0, ctx);
+
+       if (transfer->usage & PIPE_TRANSFER_WRITE) {
+               usage |= PB_USAGE_CPU_WRITE;
+
+               if (transfer->usage & PIPE_TRANSFER_DISCARD) {
+               }
+
+               if (transfer->usage & PIPE_TRANSFER_FLUSH_EXPLICIT) {
+               }
+       }
+
+       if (transfer->usage & PIPE_TRANSFER_READ) {
+               usage |= PB_USAGE_CPU_READ;
+       }
+
+       if (transfer->usage & PIPE_TRANSFER_DONTBLOCK) {
+               usage |= PB_USAGE_DONTBLOCK;
+       }
+
+       if (transfer->usage & PIPE_TRANSFER_UNSYNCHRONIZED) {
+               usage |= PB_USAGE_UNSYNCHRONIZED;
+       }
+
+       map = r600_bo_map(radeon, bo, usage, ctx);
        if (!map) {
                return NULL;
        }
-- 
1.7.1

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

Reply via email to