turnip: Correctly set layer stride for 3D images
authorBrian Ho <brian@brkho.com>
Mon, 13 Apr 2020 21:57:45 +0000 (14:57 -0700)
committerMarge Bot <eric+marge@anholt.net>
Wed, 15 Apr 2020 16:19:34 +0000 (16:19 +0000)
commitd6d5ee29ab715c08d3b46e270f7eacde28e2e665
treed54ce8dee0a96536456c49c9f6c9241f53668f4e
parent7e525d29ab68d927d0f2aa7e3ef21d25e915e76d
turnip: Correctly set layer stride for 3D images

Previously we were using layout.layer_size for the layer stride, but
in Vulkan, you can alias a 3D image as an array of 2D images via the
VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT flag. One reason to use
this behavior is so the geometry shader can write to a specific
depth in a 3D framebuffer with gl_Layer.

Since the 3D image is not a *true* layered image, layer_size is 0.
Instead, we can copy what freedreno does and use the slice size.

Fixes dEQP-VK.geometry.layered.3d.*

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4541>
src/freedreno/vulkan/tu_cmd_buffer.c