From b0fff8d17eb65368db018f6ccc226482ccf46763 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Mon, 14 Mar 2011 16:55:46 +0000 Subject: svga: Tell the host to discard when doing writes without FLUSH_EXPLICIT. --- src/gallium/drivers/svga/svga_resource_buffer.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gallium/drivers/svga/svga_resource_buffer.c b/src/gallium/drivers/svga/svga_resource_buffer.c index ae854a8054..2d7c524d86 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); } -- cgit v1.2.3