diff options
author | Alex Smith <[email protected]> | 2017-07-12 10:29:52 +0100 |
---|---|---|
committer | Bas Nieuwenhuizen <[email protected]> | 2017-07-13 00:21:20 +0200 |
commit | 0e1886efb9e151c8ffd5cb89f54c966a54a4fe74 (patch) | |
tree | feff74e8917ae7890607c4a8877042e52368be17 /src/amd/vulkan/radv_private.h | |
parent | 4d5c0c189d43e7ebf880d7994a09118051d69e97 (diff) |
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 <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/amd/vulkan/radv_private.h')
-rw-r--r-- | src/amd/vulkan/radv_private.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index a1674098845..a8bc5c96586 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -1276,6 +1276,12 @@ struct radv_image_view { uint32_t descriptor[8]; uint32_t fmask_descriptor[8]; + + /* Descriptor for use as a storage image as opposed to a sampled image. + * This has a few differences for cube maps (e.g. type). + */ + uint32_t storage_descriptor[8]; + uint32_t storage_fmask_descriptor[8]; }; struct radv_image_create_info { |