Module: Mesa Branch: master Commit: ec4851253bbf7fd7d11c5570f19f9733a885e471 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ec4851253bbf7fd7d11c5570f19f9733a885e471
Author: Marek Olšák <mar...@gmail.com> Date: Sat Dec 24 11:43:10 2011 +0100 r300g: mapping buffers for read should be unsynchronized The GPU never uses them for write. --- src/gallium/drivers/r300/r300_screen_buffer.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/src/gallium/drivers/r300/r300_screen_buffer.c b/src/gallium/drivers/r300/r300_screen_buffer.c index a8392d2..2e9e7d7 100644 --- a/src/gallium/drivers/r300/r300_screen_buffer.c +++ b/src/gallium/drivers/r300/r300_screen_buffer.c @@ -107,13 +107,21 @@ r300_buffer_transfer_map( struct pipe_context *pipe, struct radeon_winsys *rws = r300screen->rws; struct r300_resource *rbuf = r300_resource(transfer->resource); uint8_t *map; + enum pipe_transfer_usage usage; if (rbuf->b.user_ptr) return (uint8_t *) rbuf->b.user_ptr + transfer->box.x; if (rbuf->constant_buffer) return (uint8_t *) rbuf->constant_buffer + transfer->box.x; - map = rws->buffer_map(rbuf->buf, r300->cs, transfer->usage); + /* Buffers are never used for write, therefore mapping for read can be + * unsynchronized. */ + usage = transfer->usage; + if (!(usage & PIPE_TRANSFER_WRITE)) { + usage |= PIPE_TRANSFER_UNSYNCHRONIZED; + } + + map = rws->buffer_map(rbuf->buf, r300->cs, usage); if (map == NULL) return NULL; _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit