Fix required sample count tests
authorNanley Chery <nanley.g.chery@intel.com>
Tue, 19 Apr 2016 19:13:58 +0000 (12:13 -0700)
committerPyry Haulos <phaulos@google.com>
Wed, 20 Jul 2016 19:18:08 +0000 (12:18 -0700)
According to,

   Table 11.1. Image and image view parameter compatibility requirements

Only non-cube images with type VK_IMAGE_TYPE_2D can have sample counts
greater than one.

In addition, the following properties should hold for multisampled
images: the formats must support being used in a color or depth/stencil
attachment, or in a storage image when shaderStorageImageMultisample is
supported. Images not fitting the above descriptions may have a sample
count of one or zero (in error conditions). Align tests for sample
counts to this behavior.

external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp

index a7ff0ad..3e144b1 100644 (file)
@@ -1845,7 +1845,9 @@ tcu::TestStatus imageFormatProperties (Context& context, ImageFormatPropertyCase
                                results.check(imageType != VK_IMAGE_TYPE_3D || (properties.maxExtent.width >= 1 && properties.maxExtent.height >= 1 && properties.maxExtent.depth >= 1), "Invalid dimensions for 3D image");
                                results.check(imageType != VK_IMAGE_TYPE_3D || properties.maxArrayLayers == 1, "Invalid maxArrayLayers for 3D image");
 
-                               if (tiling == VK_IMAGE_TILING_OPTIMAL)
+                               if (tiling == VK_IMAGE_TILING_OPTIMAL && imageType == VK_IMAGE_TYPE_2D && !(curCreateFlags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) &&
+                                        ((supportedFeatures & (VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT)) ||
+                                        ((supportedFeatures & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT) && deviceFeatures.shaderStorageImageMultisample)))
                                {
                                        const VkSampleCountFlags        requiredSampleCounts    = getRequiredOptimalTilingSampleCounts(deviceLimits, format, curUsageFlags);
                                        results.check((properties.sampleCounts & requiredSampleCounts) == requiredSampleCounts, "Required sample counts not supported");