radv: Fix descriptors for cube images with VK_IMAGE_USAGE_STORAGE_BIT
authorAlex Smith <asmith@feralinteractive.com>
Wed, 12 Jul 2017 09:29:52 +0000 (10:29 +0100)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Wed, 12 Jul 2017 22:21:20 +0000 (00:21 +0200)
commit0e1886efb9e151c8ffd5cb89f54c966a54a4fe74
treefeff74e8917ae7890607c4a8877042e52368be17
parent4d5c0c189d43e7ebf880d7994a09118051d69e97
radv: Fix descriptors for cube images with VK_IMAGE_USAGE_STORAGE_BIT

If a cube image has VK_IMAGE_USAGE_STORAGE_BIT set, the type in an image
view's descriptor was set to a 2D array (and a few other fields adjusted
accordingly). This is correct when the image view is actually bound as a
storage image, but not when bound as a sampled image. In that case the
type should be set as a cube.

Fix by generating 2 sets of descriptors at view creation time for both
storage and non-storage usage, and then choose between them based on
descriptor type when writing descriptor sets.

v2: Generate storage descriptors for images with TRANSFER_DST, since
    those may be used as storage images internally.

Signed-off-by: Alex Smith <asmith@feralinteractive.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_descriptor_set.c
src/amd/vulkan/radv_image.c
src/amd/vulkan/radv_private.h