radv: disallow 3D images and mipmaps/layers for R32G32B32 linear formats
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 8 Oct 2018 12:40:17 +0000 (14:40 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 11 Oct 2018 12:49:14 +0000 (14:49 +0200)
R32G32B32 are weird formats and we are only going to support
some basic operations for now.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_formats.c

index ad06c9e996431ce3a82e2b19e255823daaa728eb..a7aa819e2bdc7795e14e53e46533b6e764b12a0b 100644 (file)
@@ -1091,6 +1091,20 @@ static VkResult radv_get_image_format_properties(struct radv_physical_device *ph
                sampleCounts |= VK_SAMPLE_COUNT_2_BIT | VK_SAMPLE_COUNT_4_BIT | VK_SAMPLE_COUNT_8_BIT;
        }
 
+       if (info->tiling == VK_IMAGE_TILING_LINEAR &&
+           (info->format == VK_FORMAT_R32G32B32_SFLOAT ||
+            info->format == VK_FORMAT_R32G32B32_SINT ||
+            info->format == VK_FORMAT_R32G32B32_UINT)) {
+               /* R32G32B32 is a weird format and the driver currently only
+                * supports the barely minimum.
+                * TODO: Implement more if we really need to.
+                */
+               if (info->type == VK_IMAGE_TYPE_3D)
+                       goto unsupported;
+               maxArraySize = 1;
+               maxMipLevels = 1;
+       }
+
        if (info->usage & VK_IMAGE_USAGE_SAMPLED_BIT) {
                if (!(format_feature_flags & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)) {
                        goto unsupported;