Fixes sparse flags
authorMatthew Netsch <quic_mnetsch@quicinc.com>
Wed, 11 May 2022 15:27:38 +0000 (08:27 -0700)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Wed, 11 May 2022 15:27:38 +0000 (08:27 -0700)
Spec requires that VK_IMAGE_CREATE_SPARSE_BINDING_BIT
is set if residency or alias bits are set

Components: Vulkan
VK-GL-CTS Issue: 3678

Affects:
dEQP-VK.api.info.image_format_properties.*

Change-Id: Ie8788567ae5189e6303fb7d3eb7e64b1bdd9dbcf

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

index 7ae9ea5..5271a7e 100644 (file)
@@ -3661,15 +3661,23 @@ VkImageCreateFlags getValidImageCreateFlags (const VkPhysicalDeviceFeatures& dev
                        flags |= VK_IMAGE_CREATE_SPARSE_BINDING_BIT|VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT;
 
                if (deviceFeatures.sparseResidencyAliased)
-                       flags |= VK_IMAGE_CREATE_SPARSE_ALIASED_BIT;
+                       flags |= VK_IMAGE_CREATE_SPARSE_BINDING_BIT|VK_IMAGE_CREATE_SPARSE_ALIASED_BIT;
        }
 
        return flags;
 }
 
-bool isValidImageCreateFlagCombination (VkImageCreateFlags)
+bool isValidImageCreateFlagCombination (VkImageCreateFlags createFlags)
 {
-       return true;
+       bool isValid = true;
+
+       if (((createFlags & (VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT|VK_IMAGE_CREATE_SPARSE_ALIASED_BIT)) != 0) &&
+               ((createFlags & VK_IMAGE_CREATE_SPARSE_BINDING_BIT) == 0))
+       {
+               isValid = false;
+       }
+
+       return isValid;
 }
 
 bool isRequiredImageParameterCombination (const VkPhysicalDeviceFeatures&      deviceFeatures,