winsys/svga: Fix RELOC_INTERNAL mob GPU access
authorThomas Hellstrom <thellstrom@vmware.com>
Wed, 8 May 2019 13:57:09 +0000 (15:57 +0200)
committerThomas Hellstrom <thellstrom@vmware.com>
Fri, 17 May 2019 06:44:31 +0000 (08:44 +0200)
commitfb6d09764d8169662a4d24380c51f9edff1a9afd
treea8dcc5d21a9e30229185f88ae4f4d6d756abeae6
parenteed24156ec9ca24dfab71234d0938d358a214ecb
winsys/svga: Fix RELOC_INTERNAL mob GPU access

SVGA_RELOC_INTERNAL indicates a transfer between surface and backing mob.
This means that if the GPU for example reads from the surface it writes
to the backing mob. But since the buffer mapping code allows for
simultaneous gpu- and cpu read access, a read from the surface to the mob
will not synchronize a subsequent map to the readback.

Fix this by inverting the mob access mode in a surface relocation with
SVGA_RELOC_INTERNAL set.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
src/gallium/winsys/svga/drm/vmw_context.c