diff options
author | José Fonseca <[email protected]> | 2011-03-14 16:55:46 +0000 |
---|---|---|
committer | José Fonseca <[email protected]> | 2011-03-15 15:44:03 +0000 |
commit | b0fff8d17eb65368db018f6ccc226482ccf46763 (patch) | |
tree | f1ccda3ab5b232cf4a539ac30ed707cc53740bf3 /src/gallium | |
parent | 147ca90bd3fcac6dca28baf08ce7adb88821a414 (diff) |
svga: Tell the host to discard when doing writes without FLUSH_EXPLICIT.
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/svga/svga_resource_buffer.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/gallium/drivers/svga/svga_resource_buffer.c b/src/gallium/drivers/svga/svga_resource_buffer.c index ae854a8054a..2d7c524d869 100644 --- a/src/gallium/drivers/svga/svga_resource_buffer.c +++ b/src/gallium/drivers/svga/svga_resource_buffer.c @@ -228,11 +228,18 @@ svga_buffer_unmap( struct pipe_context *pipe, if(sbuf->hwbuf) sws->buffer_unmap(sws, sbuf->hwbuf); - if(sbuf->map.writing) { - if(!sbuf->map.flush_explicit) { - /* No mapped range was flushed -- flush the whole buffer */ + if (sbuf->map.writing) { + if (!sbuf->map.flush_explicit) { + /* + * Mapped range not flushed explicitly, so flush the whole buffer, + * and tell the host to discard the contents when processing the DMA + * command. + */ + SVGA_DBG(DEBUG_DMA, "flushing the whole buffer\n"); + sbuf->dma.flags.discard = TRUE; + svga_buffer_add_range(sbuf, 0, sbuf->b.b.width0); } |