svga: fix texture array layer index in transfer map
authorCharmaine Lee <charmainel@vmware.com>
Mon, 27 Aug 2018 19:07:42 +0000 (12:07 -0700)
committerBrian Paul <brianp@vmware.com>
Thu, 20 Sep 2018 19:20:10 +0000 (13:20 -0600)
commit1dcf377a76cc4fa3e1c5312b0e10c4754532b512
tree71884afb7eb08145e8f953ef3fb3c9890cff9ed9
parent18a6e426f3aa546c8eb74d40f66b265044bec683
svga: fix texture array layer index in transfer map

In gallium, the layer index of a texture array to be mapped
is specified in the z component, whereas in svga device, the
index is specified in a separate argument.
Currently in svga_texture_transfer_map(), we explicitly modify
the z value in the base transfer map to 0 so the layer offset will not be
applied twice, but this causes problem when state tracker later
refers to the base transfer map and expects the slice index to be
specified in z (commit 463b0ea1f6762b7e0536cfadc4e384840af3e8e0).

To fix the problem, this patch makes a local copy of the box in
svga_transfer and modifies the z value in this copy instead.

Fixes spec@khr_texture_compression-astc piglit test crashes.
Fixes regression in the dma path with commit 1fdd3dd94a.

Tested with mtt glretrace, piglit on Windows VM and Linux VM.

Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/drivers/svga/svga_resource_texture.c
src/gallium/drivers/svga/svga_resource_texture.h