From: Piotr Byszewski Date: Fri, 3 Mar 2023 15:48:20 +0000 (+0100) Subject: Merge vk-gl-cts/vulkan-cts-1.3.4 into vk-gl-cts/vulkan-cts-1.3.5 X-Git-Tag: upstream/1.3.5~14 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1f5be51bc831bce8ac0ce62e2b192c23b92aa1b5;hp=-c;p=platform%2Fupstream%2FVK-GL-CTS.git Merge vk-gl-cts/vulkan-cts-1.3.4 into vk-gl-cts/vulkan-cts-1.3.5 Change-Id: Id88b88271745df8a24fab873df096dc92c81988a --- 1f5be51bc831bce8ac0ce62e2b192c23b92aa1b5 diff --combined external/vulkancts/modules/vulkan/binding_model/vktBindingMutableTests.cpp index 330f330,976367a..5449b6a --- a/external/vulkancts/modules/vulkan/binding_model/vktBindingMutableTests.cpp +++ b/external/vulkancts/modules/vulkan/binding_model/vktBindingMutableTests.cpp @@@ -19,14 -19,10 +19,14 @@@ * *//*! * \file - * \brief Tests for VK_VALVE_mutable_descriptor_type. + * \brief Tests for VK_VALVE_mutable_descriptor_type and VK_EXT_mutable_descriptor_type. *//*--------------------------------------------------------------------*/ -#include "vktBindingValveMutableTests.hpp" +#include "vktBindingMutableTests.hpp" #include "vktTestCase.hpp" +#include "vktTestGroupUtil.hpp" +#include "vktCustomInstancesDevices.hpp" + +#include "tcuCommandLine.hpp" #include "vkDefs.hpp" #include "vkRefUtil.hpp" @@@ -61,82 -57,6 +61,82 @@@ namespac using namespace vk; +de::SharedPtr> g_singletonDevice; + +static std::vector removeExtensions (const std::vector& a, const std::vector& b) +{ + std::vector res; + std::set removeExts (b.begin(), b.end()); + + for (std::vector::const_iterator aIter = a.begin(); aIter != a.end(); ++aIter) + { + if (!de::contains(removeExts, *aIter)) + res.push_back(*aIter); + } + + return res; +} + +VkDevice getDevice(Context& context) +{ + if (!g_singletonDevice) + { + const float queuePriority = 1.0f; + + // Create a universal queue that supports graphics and compute + const VkDeviceQueueCreateInfo queueParams + { + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0u, // VkDeviceQueueCreateFlags flags; + context.getUniversalQueueFamilyIndex(), // deUint32 queueFamilyIndex; + 1u, // deUint32 queueCount; + &queuePriority // const float* pQueuePriorities; + }; + + // \note Extensions in core are not explicitly enabled even though + // they are in the extension list advertised to tests. + std::vector extensionPtrs; + std::vector coreExtensions; + getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); + std::vector nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); + + extensionPtrs.resize(nonCoreExtensions.size()); + + for (size_t ndx = 0; ndx < nonCoreExtensions.size(); ++ndx) + extensionPtrs[ndx] = nonCoreExtensions[ndx].c_str(); + + VkPhysicalDeviceAccelerationStructureFeaturesKHR accelerationStructureFeatures = initVulkanStructure(); + VkPhysicalDeviceBufferDeviceAddressFeatures bufferDeviceAddressFeatures = initVulkanStructure(&accelerationStructureFeatures); + VkPhysicalDeviceRayTracingPipelineFeaturesKHR rayTracingPipelineFeatures = initVulkanStructure(&bufferDeviceAddressFeatures); + VkPhysicalDeviceRayQueryFeaturesKHR rayQueryFeatures = initVulkanStructure(&rayTracingPipelineFeatures); + VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT mutableDescriptorTypeFeatures = initVulkanStructure(&rayQueryFeatures); + VkPhysicalDeviceDescriptorIndexingFeatures descriptorIndexingFeatures = initVulkanStructure(&mutableDescriptorTypeFeatures); + VkPhysicalDeviceFeatures2 features2 = initVulkanStructure(&descriptorIndexingFeatures); + + context.getInstanceInterface().getPhysicalDeviceFeatures2(context.getPhysicalDevice(), &features2); + + const VkDeviceCreateInfo deviceCreateInfo + { + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, //sType; + &features2, //pNext; + (VkDeviceCreateFlags)0u, //flags + 1, //queueRecordCount; + &queueParams, //pRequestedQueues; + 0, //layerCount; + DE_NULL, //ppEnabledLayerNames; + (deUint32)extensionPtrs.size(), // deUint32 enabledExtensionCount; + (extensionPtrs.empty() ? DE_NULL : &extensionPtrs[0]), // const char* const* ppEnabledExtensionNames; + DE_NULL, //pEnabledFeatures; + }; + + Move device = createCustomDevice(context.getTestContext().getCommandLine().isValidationEnabled(), context.getPlatformInterface(), context.getInstance(), context.getInstanceInterface(), context.getPhysicalDevice(), &deviceCreateInfo); + g_singletonDevice = de::SharedPtr>(new Move(device)); + } + + return g_singletonDevice->get(); +} + deUint32 getDescriptorNumericValue (deUint32 iteration, deUint32 bindingIdx, deUint32 descriptorIdx = 0u) { // When assigning numeric values for the descriptor contents, each descriptor will get 0x5aIIBBDD. II is an octed containing the @@@ -193,7 -113,7 +193,7 @@@ std::vector getForbid { return std::vector { - VK_DESCRIPTOR_TYPE_MUTABLE_VALVE, + VK_DESCRIPTOR_TYPE_MUTABLE_EXT, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT, @@@ -231,7 -151,7 +231,7 @@@ enum DescriptorTypeFlagBit DTFB_INLINE_UNIFORM_BLOCK_EXT = (1 << 11), DTFB_ACCELERATION_STRUCTURE_KHR = (1 << 12), DTFB_ACCELERATION_STRUCTURE_NV = (1 << 13), - DTFB_MUTABLE_VALVE = (1 << 14), + DTFB_MUTABLE = (1 << 14), }; using DescriptorTypeFlags = deUint32; @@@ -255,7 -175,7 +255,7 @@@ DescriptorTypeFlagBits toDescriptorType case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT: return DTFB_INLINE_UNIFORM_BLOCK_EXT; case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR: return DTFB_ACCELERATION_STRUCTURE_KHR; case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV: return DTFB_ACCELERATION_STRUCTURE_NV; - case VK_DESCRIPTOR_TYPE_MUTABLE_VALVE: return DTFB_MUTABLE_VALVE; + case VK_DESCRIPTOR_TYPE_MUTABLE_EXT: return DTFB_MUTABLE; default: break; } @@@ -292,7 -212,7 +292,7 @@@ std::vector toDescrip if (bitfield & DTFB_INLINE_UNIFORM_BLOCK_EXT) result.push_back(VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT); if (bitfield & DTFB_ACCELERATION_STRUCTURE_KHR) result.push_back(VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR); if (bitfield & DTFB_ACCELERATION_STRUCTURE_NV) result.push_back(VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV); - if (bitfield & DTFB_MUTABLE_VALVE) result.push_back(VK_DESCRIPTOR_TYPE_MUTABLE_VALVE); + if (bitfield & DTFB_MUTABLE) result.push_back(VK_DESCRIPTOR_TYPE_MUTABLE_EXT); return result; } @@@ -987,7 -907,7 +987,7 @@@ public DE_UNREF(kBeginForbidden); DE_UNREF(kEndForbidden); - if (type != VK_DESCRIPTOR_TYPE_MUTABLE_VALVE) + if (type != VK_DESCRIPTOR_TYPE_MUTABLE_EXT) { DE_ASSERT(mutableTypesVec.empty()); } @@@ -1003,7 -923,7 +1003,7 @@@ deUint32 maxTypes () const override { - if (type != VK_DESCRIPTOR_TYPE_MUTABLE_VALVE) + if (type != VK_DESCRIPTOR_TYPE_MUTABLE_EXT) return 1u; const auto vecSize = mutableTypesVec.size(); DE_ASSERT(vecSize <= std::numeric_limits::max()); @@@ -1017,7 -937,7 +1017,7 @@@ std::vector usedTypes () const { - if (type != VK_DESCRIPTOR_TYPE_MUTABLE_VALVE) + if (type != VK_DESCRIPTOR_TYPE_MUTABLE_EXT) return std::vector(1u, type); return mutableTypesVec; } @@@ -1058,7 -978,7 +1058,7 @@@ DE_UNREF(iteration); static const auto kMandatoryMutableTypeFlags = toDescriptorTypeFlags(getMandatoryMutableTypes()); - if (type == VK_DESCRIPTOR_TYPE_MUTABLE_VALVE) + if (type == VK_DESCRIPTOR_TYPE_MUTABLE_EXT) { const auto descFlags = toDescriptorTypeFlags(mutableTypesVec); return de::MovePtr(new SingleBinding(type, toDescriptorTypeVector(descFlags))); @@@ -1071,7 -991,7 +1071,7 @@@ // Convert the binding to mutable using a wider set of descriptor types if possible, including the binding type. const auto descFlags = (kMandatoryMutableTypeFlags | toDescriptorTypeFlagBit(type)); - return de::MovePtr(new SingleBinding(VK_DESCRIPTOR_TYPE_MUTABLE_VALVE, toDescriptorTypeVector(descFlags))); + return de::MovePtr(new SingleBinding(VK_DESCRIPTOR_TYPE_MUTABLE_EXT, toDescriptorTypeVector(descFlags))); } de::MovePtr toNonMutable (deUint32 iteration) const override @@@ -1531,9 -1451,9 +1531,9 @@@ public // Makes a descriptor pool that can be used when allocating descriptors for this set. Move makeDescriptorPool (const DeviceInterface& vkd, VkDevice device, PoolMutableStrategy strategy, VkDescriptorPoolCreateFlags flags) const { - std::vector poolSizes; - std::vector> mutableTypesVec; - std::vector mutableTypeLists; + std::vector poolSizes; + std::vector> mutableTypesVec; + std::vector mutableTypeLists; // Make vector element addresses stable. const auto bindingCount = numBindings(); @@@ -1552,7 -1472,7 +1552,7 @@@ if (strategy == PoolMutableStrategy::KEEP_TYPES || strategy == PoolMutableStrategy::EXPAND_TYPES) { - if (mainType == VK_DESCRIPTOR_TYPE_MUTABLE_VALVE) + if (mainType == VK_DESCRIPTOR_TYPE_MUTABLE_EXT) { if (strategy == PoolMutableStrategy::KEEP_TYPES) { @@@ -1568,12 -1488,12 +1568,12 @@@ } const auto& lastVec = mutableTypesVec.back(); - const VkMutableDescriptorTypeListVALVE typeList = { static_cast(lastVec.size()), de::dataOrNull(lastVec) }; + const VkMutableDescriptorTypeListEXT typeList = { static_cast(lastVec.size()), de::dataOrNull(lastVec) }; mutableTypeLists.push_back(typeList); } else { - const VkMutableDescriptorTypeListVALVE typeList = { 0u, nullptr }; + const VkMutableDescriptorTypeListEXT typeList = { 0u, nullptr }; mutableTypeLists.push_back(typeList); } } @@@ -1590,7 -1510,7 +1590,7 @@@ poolCreateInfo.poolSizeCount = static_cast(poolSizes.size()); poolCreateInfo.pPoolSizes = de::dataOrNull(poolSizes); - VkMutableDescriptorTypeCreateInfoVALVE mutableInfo = initVulkanStructure(); + VkMutableDescriptorTypeCreateInfoEXT mutableInfo = initVulkanStructure(); if (strategy == PoolMutableStrategy::KEEP_TYPES || strategy == PoolMutableStrategy::EXPAND_TYPES) { @@@ -1626,10 -1546,10 +1626,10 @@@ private DescriptorSetLayoutResult makeOrCheckDescriptorSetLayout (bool checkOnly, const DeviceInterface& vkd, VkDevice device, VkShaderStageFlags stageFlags, VkDescriptorSetLayoutCreateFlags createFlags) const { - const auto numIterations = maxTypes(); - std::vector bindingsVec; - std::vector> mutableTypesVec; - std::vector mutableTypeLists; + const auto numIterations = maxTypes(); + std::vector bindingsVec; + std::vector> mutableTypesVec; + std::vector mutableTypeLists; // Make vector element addresses stable. const auto bindingCount = numBindings(); @@@ -1655,7 -1575,7 +1655,7 @@@ mutableTypesVec.push_back(binding->mutableTypes()); const auto& lastVec = mutableTypesVec.back(); - const VkMutableDescriptorTypeListVALVE typeList = { + const VkMutableDescriptorTypeListEXT typeList = { static_cast(lastVec.size()), // deUint32 descriptorTypeCount; de::dataOrNull(lastVec), // const VkDescriptorType* pDescriptorTypes; }; @@@ -1707,8 -1627,8 +1707,8 @@@ flagsCreateInfo->pBindingFlags = de::dataOrNull(*bindingFlagsVec); } - const VkMutableDescriptorTypeCreateInfoVALVE createInfoValve = { - VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE, + const VkMutableDescriptorTypeCreateInfoEXT createInfoMutable = { + VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT, flagsCreateInfo.get(), static_cast(mutableTypeLists.size()), de::dataOrNull(mutableTypeLists), @@@ -1716,7 -1636,7 +1716,7 @@@ const VkDescriptorSetLayoutCreateInfo layoutCreateInfo = { VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, // VkStructureType sType; - &createInfoValve, // const void* pNext; + &createInfoMutable, // const void* pNext; createFlags, // VkDescriptorSetLayoutCreateFlags flags; static_cast(bindingsVec.size()), // deUint32 bindingCount; de::dataOrNull(bindingsVec), // const VkDescriptorSetLayoutBinding* pBindings; @@@ -2084,7 -2004,7 +2084,7 @@@ private createFlags |= VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT; if (isSourceSet && sourceSetType == SourceSetType::HOST_ONLY) - createFlags |= VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE; + createFlags |= VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT; return createFlags; } @@@ -2112,7 -2032,7 +2112,7 @@@ private poolCreateFlags |= VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT; if (isSourceSet && sourceSetType == SourceSetType::HOST_ONLY) - poolCreateFlags |= VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE; + poolCreateFlags |= VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT; return poolCreateFlags; } @@@ -2678,18 -2598,7 +2678,18 @@@ bool isVertexStage (TestingStage stage void MutableTypesTest::checkSupport (Context& context) const { - context.requireDeviceFunctionality("VK_VALVE_mutable_descriptor_type"); + if (!context.isDeviceFunctionalitySupported("VK_VALVE_mutable_descriptor_type") && + !context.isDeviceFunctionalitySupported("VK_EXT_mutable_descriptor_type")) + + TCU_THROW(NotSupportedError, "VK_VALVE_mutable_descriptor_type or VK_EXT_mutable_descriptor_type is not supported"); + + VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT mutableDescriptorType = initVulkanStructure(); + VkPhysicalDeviceFeatures2KHR features2 = initVulkanStructure(&mutableDescriptorType); + + context.getInstanceInterface().getPhysicalDeviceFeatures2(context.getPhysicalDevice(), &features2); + + if (!mutableDescriptorType.mutableDescriptorType) + TCU_THROW(NotSupportedError, "mutableDescriptorType feature is not supported"); // Check ray tracing if needed. const bool rayTracing = isRayTracingStage(m_params.testingStage); @@@ -2790,8 -2699,8 +2790,8 @@@ } break; - case VK_DESCRIPTOR_TYPE_MUTABLE_VALVE: - TCU_THROW(InternalError, "Found VK_DESCRIPTOR_TYPE_MUTABLE_VALVE in list of used descriptor types"); + case VK_DESCRIPTOR_TYPE_MUTABLE_EXT: + TCU_THROW(InternalError, "Found VK_DESCRIPTOR_TYPE_MUTABLE_EXT in list of used descriptor types"); default: TCU_THROW(InternalError, "Unexpected descriptor type found in list of used descriptor types: " + de::toString(descType)); @@@ -2854,8 -2763,8 +2854,8 @@@ context.requireDeviceFunctionality("VK_KHR_acceleration_structure"); break; - case VK_DESCRIPTOR_TYPE_MUTABLE_VALVE: - TCU_THROW(InternalError, "Found VK_DESCRIPTOR_TYPE_MUTABLE_VALVE in list of used array descriptor types"); + case VK_DESCRIPTOR_TYPE_MUTABLE_EXT: + TCU_THROW(InternalError, "Found VK_DESCRIPTOR_TYPE_MUTABLE_EXT in list of used array descriptor types"); default: TCU_THROW(InternalError, "Unexpected descriptor type found in list of used descriptor types: " + de::toString(descType)); @@@ -2866,7 -2775,7 +2866,7 @@@ // Check layout support. { const auto& vkd = context.getDeviceInterface(); - const auto device = context.getDevice(); + const auto device = getDevice(context); const auto stageFlags = m_params.getStageFlags(); { @@@ -3106,16 -3015,16 +3106,16 @@@ Move buildFramebuffer (c tcu::TestStatus MutableTypesInstance::iterate () { - const auto device = m_context.getDevice(); + const auto& vki = m_context.getInstanceInterface(); + const auto& vkd = m_context.getDeviceInterface(); + const auto device = getDevice(m_context); const auto physDev = m_context.getPhysicalDevice(); const auto qIndex = m_context.getUniversalQueueFamilyIndex(); - const auto queue = m_context.getUniversalQueue(); + const auto queue = getDeviceQueue(vkd, device, m_context.getUniversalQueueFamilyIndex(), 0); - const auto& vki = m_context.getInstanceInterface(); - const auto& vkd = m_context.getDeviceInterface(); - auto & alloc = m_context.getDefaultAllocator(); - const auto& paramSet = m_params.descriptorSet; + SimpleAllocator alloc(vkd, device, getPhysicalDeviceMemoryProperties(m_context.getInstanceInterface(), m_context.getPhysicalDevice())); + const auto& paramSet = m_params.descriptorSet; const auto numIterations = paramSet->maxTypes(); const bool useExternalImage = needsExternalImage(*m_params.descriptorSet); const bool useExternalSampler = needsExternalSampler(*m_params.descriptorSet); @@@ -3785,23 -3694,9 +3785,23 @@@ std::string descriptorTypeStr (VkDescri return de::toLower(de::toString(descriptorType).substr(prefixLen)); } -tcu::TestCaseGroup* createDescriptorValveMutableTests (tcu::TestContext& testCtx) +static void createChildren (tcu::TestCaseGroup* testGroup); + +static void cleanupGroup (tcu::TestCaseGroup* testGroup) { - GroupPtr mainGroup(new tcu::TestCaseGroup(testCtx, "mutable_descriptor", "Tests for VK_VALVE_mutable_descriptor_type")); + DE_UNREF(testGroup); + // Destroy singleton objects. + g_singletonDevice.clear(); +} + +tcu::TestCaseGroup* createDescriptorMutableTests (tcu::TestContext& testCtx) +{ + return createTestGroup(testCtx, "mutable_descriptor", "Tests for VK_VALVE_mutable_descriptor_type and VK_EXT_mutable_descriptor_type", createChildren, cleanupGroup); +} + +void createChildren (tcu::TestCaseGroup* mainGroup) +{ + tcu::TestContext& testCtx = mainGroup->getTestContext(); const VkDescriptorType basicDescriptorTypes[] = { VK_DESCRIPTOR_TYPE_SAMPLER, @@@ -3861,7 -3756,7 +3861,7 @@@ DescriptorSetPtr setPtr; { DescriptorSet::BindingPtrVector setBindings; - setBindings.emplace_back(new SingleBinding(VK_DESCRIPTOR_TYPE_MUTABLE_VALVE, actualTypes)); + setBindings.emplace_back(new SingleBinding(VK_DESCRIPTOR_TYPE_MUTABLE_EXT, actualTypes)); setPtr = DescriptorSetPtr(new DescriptorSet(setBindings)); } @@@ -3876,7 -3771,7 +3876,7 @@@ DescriptorSetPtr setPtr; { DescriptorSet::BindingPtrVector setBindings; - setBindings.emplace_back(new SingleBinding(VK_DESCRIPTOR_TYPE_MUTABLE_VALVE, mandatoryTypes)); + setBindings.emplace_back(new SingleBinding(VK_DESCRIPTOR_TYPE_MUTABLE_EXT, mandatoryTypes)); setPtr = DescriptorSetPtr(new DescriptorSet(setBindings)); } @@@ -3899,7 -3794,7 +3899,7 @@@ const std::vector mutableTypes { initialDescriptorType, finalDescriptorType }; DescriptorSet::BindingPtrVector setBindings; - setBindings.emplace_back(new SingleBinding(VK_DESCRIPTOR_TYPE_MUTABLE_VALVE, mutableTypes)); + setBindings.emplace_back(new SingleBinding(VK_DESCRIPTOR_TYPE_MUTABLE_EXT, mutableTypes)); DescriptorSetPtr setPtr = DescriptorSetPtr(new DescriptorSet(setBindings)); @@@ -4004,13 -3899,13 +4004,13 @@@ std::rotate(beginPtr, &rotatedTypes[typeIdx], endPtr); - arrayBindings.emplace_back(VK_DESCRIPTOR_TYPE_MUTABLE_VALVE, rotatedTypes); + arrayBindings.emplace_back(VK_DESCRIPTOR_TYPE_MUTABLE_EXT, rotatedTypes); } } else { // Without aliasing, all descriptors use the same type at the same time. - const SingleBinding noAliasingBinding(VK_DESCRIPTOR_TYPE_MUTABLE_VALVE, mandatoryTypesVector); + const SingleBinding noAliasingBinding(VK_DESCRIPTOR_TYPE_MUTABLE_EXT, mandatoryTypesVector); arrayBindings.resize(mandatoryTypesVector.size(), noAliasingBinding); } @@@ -4064,13 -3959,14 +4064,14 @@@ DescriptorSet::BindingPtrVector setBindings; std::vector arrayBindings; - // Single mutable descriptor as the first binding. - setBindings.emplace_back(new SingleBinding(VK_DESCRIPTOR_TYPE_MUTABLE_EXT, mandatoryTypes)); - - // Descriptor array as the second binding. + // Add single type beyond the mandatory ones. auto arrayBindingDescTypes = mandatoryTypes; arrayBindingDescTypes.push_back(descriptorType); + // Single mutable descriptor as the first binding. - setBindings.emplace_back(new SingleBinding(VK_DESCRIPTOR_TYPE_MUTABLE_VALVE, arrayBindingDescTypes)); ++ setBindings.emplace_back(new SingleBinding(VK_DESCRIPTOR_TYPE_MUTABLE_EXT, arrayBindingDescTypes)); + + // Descriptor array as the second binding. if (aliasingCase.aliasing) { // With aliasing, the descriptor types rotate in each descriptor. @@@ -4082,13 -3978,13 +4083,13 @@@ std::rotate(beginPtr, &rotatedTypes[typeIdx], endPtr); - arrayBindings.emplace_back(VK_DESCRIPTOR_TYPE_MUTABLE_VALVE, rotatedTypes); + arrayBindings.emplace_back(VK_DESCRIPTOR_TYPE_MUTABLE_EXT, rotatedTypes); } } else { // Without aliasing, all descriptors use the same type at the same time. - const SingleBinding noAliasingBinding(VK_DESCRIPTOR_TYPE_MUTABLE_VALVE, arrayBindingDescTypes); + const SingleBinding noAliasingBinding(VK_DESCRIPTOR_TYPE_MUTABLE_EXT, arrayBindingDescTypes); arrayBindings.resize(arrayBindingDescTypes.size(), noAliasingBinding); } @@@ -4127,7 -4023,7 +4128,7 @@@ const auto endPtr = beginPtr + rotatedTypes.size(); std::rotate(beginPtr, &rotatedTypes[typeIdx], endPtr); - setBindings.emplace_back(new SingleBinding(VK_DESCRIPTOR_TYPE_MUTABLE_VALVE, rotatedTypes)); + setBindings.emplace_back(new SingleBinding(VK_DESCRIPTOR_TYPE_MUTABLE_EXT, rotatedTypes)); // Additional non-mutable binding interleaved with the mutable ones. if (mixed) @@@ -4143,6 -4039,8 +4144,6 @@@ multipleGroup->addChild(mixedGroup.release()); mainGroup->addChild(multipleGroup.release()); } - - return mainGroup.release(); } } // BindingModel diff --combined external/vulkancts/modules/vulkan/pipeline/vktPipelineDescriptorLimitsTests.cpp index c76640f,70499f8..638d108 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineDescriptorLimitsTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineDescriptorLimitsTests.cpp @@@ -605,7 -605,7 +605,7 @@@ tcu::TestStatus DescriptorLimitTestInst graphicsPipelineWrapper.setDefaultDepthStencilState() .setDefaultColorBlendState() .setDefaultRasterizationState() - .setupVertexInputStete() + .setupVertexInputState() .setupPreRasterizationShaderState(viewports, scissors, pipelineLayout.get(), @@@ -768,7 -768,7 +768,7 @@@ void DescriptorLimitTest::initPrograms if (m_testType == TestType::InputAttachments) { - testTypeStr << "layout (input_attachment_index = 0, set = 0, binding = " << m_descCount - 1u << ") uniform subpassInput imageInput;\n"; + testTypeStr << "layout (input_attachment_index = 1, set = 0, binding = " << m_descCount - 1u << ") uniform subpassInput imageInput;\n"; fragResultStr << " fragColor = subpassLoad(imageInput);\n"; compResultStr << " outputData.color = vec4(0.0, 0.0, 0.0, 1.0);\n";