svga: flush buffers when mapping for reading
authorBrian Paul <brianp@vmware.com>
Thu, 30 Jun 2016 19:27:57 +0000 (13:27 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 30 Jun 2016 20:32:10 +0000 (14:32 -0600)
commit88a344253c2091f7935b3dfc7fe3be99b76033a3
tree7a0b1cfc009bb38b6c8ac9cff396002517ab939e
parentfa2cdd973d466528c2c353c86457ce12f46e5cc4
svga: flush buffers when mapping for reading

With host-side buffer copies (via SVGA3D_vgpu10_BufferCopy()) we have
to make sure any pending map-write operations are completed before reading
if the buffer is dirty.  Otherwise the ReadbackSubResource operation could
get stale data from the host buffer.

This allows the piglit arb_copy_buffer-subdata-sync test to pass when
we start using the SVGA3D_vgpu10_BufferCopy command.

v2: check the sbuf->dirty flag in the outer conditional, per Charmaine.

Acked-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
src/gallium/drivers/svga/svga_resource_buffer.c