From 492ee0517f0bae00af495222ef3bb4e7ed8c431f Mon Sep 17 00:00:00 2001 From: Tom Cooper Date: Sat, 26 Oct 2019 19:14:42 +0100 Subject: [PATCH] Fix descriptor_indexing.input_attachment subpass description The input attachments in the subpass description did not match the descriptor set layout and shader. Unused attachment references have been inserted to pad out the subpass description. Components: Vulkan VK-GL-CTS Issue: 2072 Affects: dEQP-VK.descriptor_indexing.input_attachment* Change-Id: Iab36be779007828ddb25fe0600305a19be448804 --- .../vktDescriptorSetsIndexingTests.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.cpp b/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.cpp index 18ee14b..541b492 100644 --- a/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.cpp +++ b/external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.cpp @@ -1092,7 +1092,6 @@ PixelBufferAccess CommonDescriptorInstance::getPixelAccess (deUint32 i return tcu::PixelBufferAccess(vk::mapVkFormat(imageFormat), (imageExtent.width >> mipLevel), (imageExtent.height >> mipLevel), imageExtent.depth, data); } - void CommonDescriptorInstance::updateDescriptors (IterateCommonVariables& variables) { const std::vector primes = ut::generatePrimes(variables.availableDescriptorCount); @@ -1104,7 +1103,6 @@ void CommonDescriptorInstance::updateDescriptors (IterateCommonVariables& const VkDescriptorImageInfo* pImageInfo = DE_NULL; const VkBufferView* pTexelBufferView = DE_NULL; - VkDescriptorImageInfo imageInfo = { static_cast(0), @@ -2395,9 +2393,25 @@ Move InputAttachmentInstance::createRenderPass (const IterateComm // build input atachments { + const std::vector primes = ut::generatePrimes(variables.availableDescriptorCount); const deUint32 inputCount = static_cast(variables.descriptorImageViews.size()); for (deUint32 inputIdx = 0; inputIdx < inputCount; ++inputIdx) { + // primes holds the indices of input attachments for shader binding 10 which has input_attachment_index=1 + deUint32 nextInputAttachmentIndex = primes[inputIdx] + 1; + + // Fill up the subpass description's input attachments with unused attachments forming gaps to the next referenced attachment + for (deUint32 unusedIdx = static_cast(inputAttachmentRefs.size()); unusedIdx < nextInputAttachmentIndex; ++unusedIdx) + { + const VkAttachmentReference inputAttachmentRef = + { + VK_ATTACHMENT_UNUSED, // deUint32 attachment; + VK_IMAGE_LAYOUT_GENERAL // VkImageLayout layout; + }; + + inputAttachmentRefs.push_back(inputAttachmentRef); + } + const VkAttachmentDescription inputAttachmentDescription = { VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT, // VkAttachmentDescriptionFlags flags; -- 2.7.4