summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorJosé Fonseca <[email protected]>2011-03-14 16:55:46 +0000
committerJosé Fonseca <[email protected]>2011-03-15 15:44:03 +0000
commitb0fff8d17eb65368db018f6ccc226482ccf46763 (patch)
treef1ccda3ab5b232cf4a539ac30ed707cc53740bf3 /src/gallium/drivers
parent147ca90bd3fcac6dca28baf08ce7adb88821a414 (diff)
svga: Tell the host to discard when doing writes without FLUSH_EXPLICIT.
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/svga/svga_resource_buffer.c13
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);
}