From 5e5b10be58a561b6e0d0c74a3d71fc9d2bc4ddb9 Mon Sep 17 00:00:00 2001 From: Piotr Byszewski Date: Fri, 5 Nov 2021 21:34:05 +0100 Subject: [PATCH] Test VK_KHR_roadmap_2022 VK-GL-CTS issue: 3189 Components: Vulkan Affects: dEQP-VK.api.info.profiles.roadmap_2022 Change-Id: Idfcd7e87a4686de02c5a162db247966d21c2e737 --- android/cts/master/vk-master-2021-03-01/api.txt | 1 + android/cts/master/vk-master/api.txt | 1 + .../modules/vulkan/api/vktApiFeatureInfo.cpp | 158 +++++++++++++++++++++ .../vulkancts/mustpass/master/vk-default/api.txt | 1 + 4 files changed, 161 insertions(+) diff --git a/android/cts/master/vk-master-2021-03-01/api.txt b/android/cts/master/vk-master-2021-03-01/api.txt index a9c5618..b59baf2 100644 --- a/android/cts/master/vk-master-2021-03-01/api.txt +++ b/android/cts/master/vk-master-2021-03-01/api.txt @@ -26,6 +26,7 @@ dEQP-VK.api.info.image_format_properties2.2d.linear.g8_b8r8_2plane_444_unorm dEQP-VK.api.info.image_format_properties2.2d.linear.g10x6_b10x6r10x6_2plane_444_unorm_3pack16 dEQP-VK.api.info.image_format_properties2.2d.linear.g12x4_b12x4r12x4_2plane_444_unorm_3pack16 dEQP-VK.api.info.image_format_properties2.2d.linear.g16_b16r16_2plane_444_unorm +dEQP-VK.api.info.profiles.roadmap_2022 dEQP-VK.api.device_drm_properties.drm_files_exist dEQP-VK.api.device_init.enumerate_devices_alloc_leak dEQP-VK.api.device_init.create_device_global_priority diff --git a/android/cts/master/vk-master/api.txt b/android/cts/master/vk-master/api.txt index 792427f..dfcd24b 100644 --- a/android/cts/master/vk-master/api.txt +++ b/android/cts/master/vk-master/api.txt @@ -3735,6 +3735,7 @@ dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x10_unorm_bloc dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x10_srgb_block dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x12_unorm_block dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x12_srgb_block +dEQP-VK.api.info.profiles.roadmap_2022 dEQP-VK.api.info.android.mandatory_extensions dEQP-VK.api.info.android.no_unknown_extensions dEQP-VK.api.info.android.no_layers diff --git a/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp b/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp index cc58ee5..e5d1e30 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp +++ b/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp @@ -1556,6 +1556,156 @@ tcu::TestStatus validateLimitsMaxInlineUniformTotalSize (Context& context) return tcu::TestStatus::fail("fail"); } +tcu::TestStatus validateRoadmap2022(Context& context) +{ + if (context.getUsedApiVersion() < VK_API_VERSION_1_3) + TCU_THROW(NotSupportedError, "Profile not supported"); + + const VkBool32 checkAlways = VK_TRUE; + VkBool32 oneOrMoreChecksFailed = VK_FALSE; + TestLog& log = context.getTestContext().getLog(); + + auto vk10Features = context.getDeviceFeatures(); + auto vk11Features = context.getDeviceVulkan11Features(); + auto vk12Features = context.getDeviceVulkan12Features(); + + const auto& vk10Properties = context.getDeviceProperties2(); + const auto& vk11Properties = context.getDeviceVulkan11Properties(); + const auto& vk12Properties = context.getDeviceVulkan12Properties(); + const auto& vk13Properties = context.getDeviceVulkan13Properties(); + const auto& limits = vk10Properties.properties.limits; + + #define ROADMAP_FEATURE_ITEM(STRUC, FIELD) { &(STRUC), &(STRUC.FIELD), #STRUC "." #FIELD } + + struct FeatureTable + { + void* structPtr; + VkBool32* fieldPtr; + const char* fieldName; + }; + + std::vector featureTable + { + // Vulkan 1.0 Features + ROADMAP_FEATURE_ITEM(vk10Features, fullDrawIndexUint32), + ROADMAP_FEATURE_ITEM(vk10Features, imageCubeArray), + ROADMAP_FEATURE_ITEM(vk10Features, independentBlend), + ROADMAP_FEATURE_ITEM(vk10Features, sampleRateShading), + ROADMAP_FEATURE_ITEM(vk10Features, drawIndirectFirstInstance), + ROADMAP_FEATURE_ITEM(vk10Features, depthClamp), + ROADMAP_FEATURE_ITEM(vk10Features, depthBiasClamp), + ROADMAP_FEATURE_ITEM(vk10Features, samplerAnisotropy), + ROADMAP_FEATURE_ITEM(vk10Features, occlusionQueryPrecise), + ROADMAP_FEATURE_ITEM(vk10Features, fragmentStoresAndAtomics), + ROADMAP_FEATURE_ITEM(vk10Features, shaderStorageImageExtendedFormats), + ROADMAP_FEATURE_ITEM(vk10Features, shaderUniformBufferArrayDynamicIndexing), + ROADMAP_FEATURE_ITEM(vk10Features, shaderSampledImageArrayDynamicIndexing), + ROADMAP_FEATURE_ITEM(vk10Features, shaderStorageBufferArrayDynamicIndexing), + ROADMAP_FEATURE_ITEM(vk10Features, shaderStorageImageArrayDynamicIndexing), + + // Vulkan 1.1 Features + ROADMAP_FEATURE_ITEM(vk11Features, samplerYcbcrConversion), + + // Vulkan 1.2 Features + ROADMAP_FEATURE_ITEM(vk12Features, samplerMirrorClampToEdge), + ROADMAP_FEATURE_ITEM(vk12Features, descriptorIndexing), + ROADMAP_FEATURE_ITEM(vk12Features, shaderUniformTexelBufferArrayDynamicIndexing), + ROADMAP_FEATURE_ITEM(vk12Features, shaderStorageTexelBufferArrayDynamicIndexing), + ROADMAP_FEATURE_ITEM(vk12Features, shaderUniformBufferArrayNonUniformIndexing), + ROADMAP_FEATURE_ITEM(vk12Features, shaderSampledImageArrayNonUniformIndexing), + ROADMAP_FEATURE_ITEM(vk12Features, shaderStorageBufferArrayNonUniformIndexing), + ROADMAP_FEATURE_ITEM(vk12Features, shaderStorageImageArrayNonUniformIndexing), + ROADMAP_FEATURE_ITEM(vk12Features, shaderUniformTexelBufferArrayNonUniformIndexing), + ROADMAP_FEATURE_ITEM(vk12Features, shaderStorageTexelBufferArrayNonUniformIndexing), + ROADMAP_FEATURE_ITEM(vk12Features, descriptorBindingUniformBufferUpdateAfterBind), + ROADMAP_FEATURE_ITEM(vk12Features, descriptorBindingSampledImageUpdateAfterBind), + ROADMAP_FEATURE_ITEM(vk12Features, descriptorBindingStorageImageUpdateAfterBind), + ROADMAP_FEATURE_ITEM(vk12Features, descriptorBindingStorageBufferUpdateAfterBind), + ROADMAP_FEATURE_ITEM(vk12Features, descriptorBindingUniformTexelBufferUpdateAfterBind), + ROADMAP_FEATURE_ITEM(vk12Features, descriptorBindingStorageTexelBufferUpdateAfterBind), + ROADMAP_FEATURE_ITEM(vk12Features, descriptorBindingUpdateUnusedWhilePending), + ROADMAP_FEATURE_ITEM(vk12Features, descriptorBindingPartiallyBound), + ROADMAP_FEATURE_ITEM(vk12Features, descriptorBindingVariableDescriptorCount), + ROADMAP_FEATURE_ITEM(vk12Features, runtimeDescriptorArray), + ROADMAP_FEATURE_ITEM(vk12Features, scalarBlockLayout), + }; + + for (FeatureTable& testedFeature : featureTable) + { + if (!testedFeature.fieldPtr[0]) + { + log << TestLog::Message + << "Feature " << testedFeature.fieldName << "is not supported" + << TestLog::EndMessage; + oneOrMoreChecksFailed = VK_TRUE; + } + } + + std::vector featureLimitTable + { + // Vulkan 1.0 limits + { PN(checkAlways), PN(limits.maxImageDimension1D), LIM_MIN_UINT32(8192) }, + { PN(checkAlways), PN(limits.maxImageDimension2D), LIM_MIN_UINT32(8192) }, + { PN(checkAlways), PN(limits.maxImageDimensionCube), LIM_MIN_UINT32(8192) }, + { PN(checkAlways), PN(limits.maxImageArrayLayers), LIM_MIN_UINT32(2048) }, + { PN(checkAlways), PN(limits.maxUniformBufferRange), LIM_MIN_UINT32(65536) }, + { PN(checkAlways), PN(limits.bufferImageGranularity), LIM_MAX_DEVSIZE(4096) }, + { PN(checkAlways), PN(limits.maxPerStageDescriptorSamplers), LIM_MIN_UINT32(64) }, + { PN(checkAlways), PN(limits.maxPerStageDescriptorUniformBuffers), LIM_MIN_UINT32(15) }, + { PN(checkAlways), PN(limits.maxPerStageDescriptorStorageBuffers), LIM_MIN_UINT32(30) }, + { PN(checkAlways), PN(limits.maxPerStageDescriptorSampledImages), LIM_MIN_UINT32(200) }, + { PN(checkAlways), PN(limits.maxPerStageDescriptorStorageImages), LIM_MIN_UINT32(16) }, + { PN(checkAlways), PN(limits.maxPerStageResources), LIM_MIN_UINT32(200) }, + { PN(checkAlways), PN(limits.maxDescriptorSetSamplers), LIM_MIN_UINT32(576) }, + { PN(checkAlways), PN(limits.maxDescriptorSetUniformBuffers), LIM_MIN_UINT32(90) }, + { PN(checkAlways), PN(limits.maxDescriptorSetStorageBuffers), LIM_MIN_UINT32(96) }, + { PN(checkAlways), PN(limits.maxDescriptorSetSampledImages), LIM_MIN_UINT32(1800) }, + { PN(checkAlways), PN(limits.maxDescriptorSetStorageImages), LIM_MIN_UINT32(144) }, + { PN(checkAlways), PN(limits.maxFragmentCombinedOutputResources), LIM_MIN_UINT32(16) }, + { PN(checkAlways), PN(limits.maxComputeWorkGroupInvocations), LIM_MIN_UINT32(256) }, + { PN(checkAlways), PN(limits.maxComputeWorkGroupSize[0]), LIM_MIN_UINT32(256) }, + { PN(checkAlways), PN(limits.maxComputeWorkGroupSize[1]), LIM_MIN_UINT32(256) }, + { PN(checkAlways), PN(limits.maxComputeWorkGroupSize[2]), LIM_MIN_UINT32(64) }, + { PN(checkAlways), PN(limits.subPixelPrecisionBits), LIM_MIN_UINT32(8) }, + { PN(checkAlways), PN(limits.mipmapPrecisionBits), LIM_MIN_UINT32(6) }, + { PN(checkAlways), PN(limits.maxSamplerLodBias), LIM_MIN_FLOAT(14.0f) }, + { PN(checkAlways), PN(limits.pointSizeGranularity), LIM_MAX_FLOAT(0.125f) }, + { PN(checkAlways), PN(limits.lineWidthGranularity), LIM_MAX_FLOAT(0.5f) }, + { PN(checkAlways), PN(limits.standardSampleLocations), LIM_MIN_UINT32(1) }, + { PN(checkAlways), PN(limits.maxColorAttachments), LIM_MIN_UINT32(7) }, + + // Vulkan 1.1 limits + { PN(checkAlways), PN(vk11Properties.subgroupSize), LIM_MIN_UINT32(4) }, + { PN(checkAlways), PN(vk11Properties.subgroupSupportedStages), LIM_MIN_UINT32(VK_SHADER_STAGE_COMPUTE_BIT|VK_SHADER_STAGE_FRAGMENT_BIT) }, + { PN(checkAlways), PN(vk11Properties.subgroupSupportedOperations), LIM_MIN_UINT32(VK_SUBGROUP_FEATURE_BASIC_BIT|VK_SUBGROUP_FEATURE_VOTE_BIT| + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT|VK_SUBGROUP_FEATURE_BALLOT_BIT| + VK_SUBGROUP_FEATURE_SHUFFLE_BIT|VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT| + VK_SUBGROUP_FEATURE_QUAD_BIT) }, + // Vulkan 1.2 limits + { PN(checkAlways), PN(vk12Properties.shaderSignedZeroInfNanPreserveFloat16), LIM_MIN_UINT32(1) }, + { PN(checkAlways), PN(vk12Properties.shaderSignedZeroInfNanPreserveFloat32), LIM_MIN_UINT32(1) }, + + // Vulkan 1.3 limits + { PN(checkAlways), PN(vk13Properties.maxSubgroupSize), LIM_MIN_UINT32(4) }, + }; + + for (const auto& featureLimit : featureLimitTable) + oneOrMoreChecksFailed |= !validateLimit(featureLimit, log); + + if (!context.isDeviceFunctionalitySupported("VK_KHR_global_priority")) + { + log << TestLog::Message + << "VK_KHR_global_priority is not supported" + << TestLog::EndMessage; + oneOrMoreChecksFailed = VK_TRUE; + } + + if (oneOrMoreChecksFailed) + TCU_THROW(NotSupportedError, "Profile not supported"); + + return tcu::TestStatus::pass("Profile supported"); +} + void createTestDevice (Context& context, void* pNext, const char* const* ppEnabledExtensionNames, deUint32 enabledExtensionCount) { const PlatformInterface& platformInterface = context.getPlatformInterface(); @@ -6418,6 +6568,14 @@ tcu::TestCaseGroup* createFeatureInfoTests (tcu::TestContext& testCtx) infoTests->addChild(createTestGroup(testCtx, "sparse_image_format_properties2", "VkGetPhysicalDeviceSparseImageFormatProperties2() Tests", createImageFormatTests, sparseImageFormatProperties2)); { + de::MovePtr profilesValidationTests(new tcu::TestCaseGroup(testCtx, "profiles", "Profiles limits and features validation")); + + addFunctionCase(profilesValidationTests.get(), "roadmap_2022", "Limits and features check for roadmap 2022", checkApiVersionSupport<1, 3>, validateRoadmap2022); + + infoTests->addChild(profilesValidationTests.release()); + } + + { de::MovePtr androidTests (new tcu::TestCaseGroup(testCtx, "android", "Android CTS Tests")); addFunctionCase(androidTests.get(), "mandatory_extensions", "Test that all mandatory extensions are supported", android::testMandatoryExtensions); diff --git a/external/vulkancts/mustpass/master/vk-default/api.txt b/external/vulkancts/mustpass/master/vk-default/api.txt index 0496c24..03b7926 100644 --- a/external/vulkancts/mustpass/master/vk-default/api.txt +++ b/external/vulkancts/mustpass/master/vk-default/api.txt @@ -3736,6 +3736,7 @@ dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x10_unorm_bloc dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x10_srgb_block dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x12_unorm_block dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x12_srgb_block +dEQP-VK.api.info.profiles.roadmap_2022 dEQP-VK.api.device_drm_properties.drm_files_exist dEQP-VK.api.device_init.create_instance_name_version dEQP-VK.api.device_init.create_instance_invalid_api_version -- 2.7.4