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>
Mon, 1 Aug 2016 20:21:23 +0000 (13:21 -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.

(cherry picked from commit dc4227d5ec87080f5dad810b5e33ae3b3fa014a4)

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

index ca4513c..f3f441c 100644 (file)
@@ -1740,7 +1740,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");