Fix test using LAYOUT_CREATE_INDEPENDENT_SETS_BIT
authorPiotr Byszewski <piotr.byszewski@mobica.com>
Sat, 21 May 2022 21:49:08 +0000 (23:49 +0200)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Sat, 4 Jun 2022 13:28:04 +0000 (13:28 +0000)
Original test plan for testing VK_EXT_graphics_pipeline_library had
one test that actually doesn't require pipeline library extension.
This test wrongfully created pipeline layout using
VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT flag
violating VUID-VkPipelineLayoutCreateInfo-flags-parameter.

Components: Vulkan

VK-GL-CTS issue: 3704

Affects:
dEQP-VK.pipeline.pipeline_library.graphics_library.*

Change-Id: I6842fcfd7dd686af32f989cd1b0fcd2730305d9e

external/vulkancts/modules/vulkan/pipeline/vktPipelineLibraryTests.cpp

index c108b6d..ff463ce 100644 (file)
@@ -836,9 +836,13 @@ bool PipelineLibraryTestInstance::runTest (RuntimePipelineTreeConfiguration&       run
        VkDescriptorSetLayout vecLayoutFrag[2] = { *descriptorSetLayoutBlank, *descriptorSetLayoutFrag };
        VkDescriptorSetLayout vecLayoutBoth[2] = { *descriptorSetLayoutVert, *descriptorSetLayoutFrag };
 
-       const Move<VkPipelineLayout>                    pipelineLayoutVert              = makePipelineLayout(vk, device, 2, vecLayoutVert, VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT);
-       const Move<VkPipelineLayout>                    pipelineLayoutFrag              = makePipelineLayout(vk, device, 2, vecLayoutFrag, VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT);
-       const Move<VkPipelineLayout>                    pipelineLayoutSame              = makePipelineLayout(vk, device, 2, vecLayoutBoth, VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT);
+       VkPipelineLayoutCreateFlags pipelineLayoutCreateFlag = 0u;
+       if (m_data.delayedShaderCreate || (m_data.pipelineTreeConfiguration.size() > 1))
+               pipelineLayoutCreateFlag = VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT;
+
+       const Move<VkPipelineLayout>                    pipelineLayoutVert              = makePipelineLayout(vk, device, 2, vecLayoutVert, pipelineLayoutCreateFlag);
+       const Move<VkPipelineLayout>                    pipelineLayoutFrag              = makePipelineLayout(vk, device, 2, vecLayoutFrag, pipelineLayoutCreateFlag);
+       const Move<VkPipelineLayout>                    pipelineLayoutSame              = makePipelineLayout(vk, device, 2, vecLayoutBoth, pipelineLayoutCreateFlag);
        const Move<VkCommandPool>                               cmdPool                                 = createCommandPool(vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex);
        const Move<VkCommandBuffer>                             cmdBuffer                               = allocateCommandBuffer(vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY);
        Move<VkPipeline>                                                rootPipeline;