Modify pipeline library tests to always specify the layout
authorPiers Daniell <pdaniell@nvidia.com>
Wed, 27 Apr 2022 19:35:06 +0000 (13:35 -0600)
committerPiers Daniell <pdaniell@nvidia.com>
Mon, 27 Jun 2022 22:07:43 +0000 (16:07 -0600)
A recent Vulkan spec change for the VK_KHT_graphics_pipeline_library
extension now requires the VkGraphicsPipelineCreateInfo.layout
field to always be valid for final-link pipelines and never NULL.

Several tests were still using a NULL layout for either the fast
link or optimized link.

This CL updates all tests to now specify a valid layout and
also removes a test variant that explicitly tested the NULL case.

Affects:

dEQP-VK.pipeline.*

Components: Vulkan

VK-GL-CTS Issue: 3661

Change-Id: I5471a9381c3be6e110106004bc3a22110b144864

51 files changed:
android/cts/main/vk-master-2022-03-01/pipeline.txt
android/cts/main/vk-master/pipeline.txt
external/vulkancts/framework/vulkan/vkPipelineConstructionUtil.cpp
external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateBaseClass.cpp
external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateCBTests.cpp
external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateDSTests.cpp
external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateGeneralTests.cpp
external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateInheritanceTests.cpp
external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateRSTests.cpp
external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateTests.cpp
external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateVPTests.cpp
external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRateBasic.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineBindPointTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineBlendOperationAdvancedTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineBlendTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineCacheTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineColorWriteEnableTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineCreationFeedbackTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineDepthRangeUnrestrictedTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineDepthTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineDynamicOffsetTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineEarlyDestroyTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineExecutablePropertiesTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineExtendedDynamicStateTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineFramebufferAttachmentTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineInputAssemblyTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineInterfaceMatchingTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineLibraryTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineMatchedAttachmentsTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineMaxVaryingsTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleBaseResolve.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleBaseResolveAndPerSampleFetch.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleImageTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleMixedAttachmentSamplesTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleResolveRenderAreaTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleSampleLocationsExtTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleShaderBuiltInTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleShaderFragmentMaskTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineNoPositionTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelinePushConstantTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelinePushDescriptorTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineRenderToImageTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineSamplerBorderSwizzleTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineSamplerTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineSpecConstantTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineStencilExportTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineStencilTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineTimestampTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineVertexInputTests.cpp
external/vulkancts/mustpass/main/vk-default/pipeline.txt

index d6222b1..97d4f24 100644 (file)
@@ -282702,7 +282702,6 @@ dEQP-VK.pipeline.pipeline_library.graphics_library.optimize.1_1_1_1
 dEQP-VK.pipeline.pipeline_library.graphics_library.optimize.0_1_1_1_1
 dEQP-VK.pipeline.pipeline_library.graphics_library.misc.independent_pipeline_layout_sets.fast_linked
 dEQP-VK.pipeline.pipeline_library.graphics_library.misc.independent_pipeline_layout_sets.link_opt_union_handle
-dEQP-VK.pipeline.pipeline_library.graphics_library.misc.independent_pipeline_layout_sets.link_opt_null_handle
 dEQP-VK.pipeline.pipeline_library.graphics_library.misc.bind_null_descriptor_set.1
 dEQP-VK.pipeline.pipeline_library.graphics_library.misc.bind_null_descriptor_set.11
 dEQP-VK.pipeline.pipeline_library.graphics_library.misc.bind_null_descriptor_set.01
index f0dec77..c8b42d5 100644 (file)
@@ -447391,7 +447391,6 @@ dEQP-VK.pipeline.pipeline_library.graphics_library.optimize.1_1_1_1
 dEQP-VK.pipeline.pipeline_library.graphics_library.optimize.0_1_1_1_1
 dEQP-VK.pipeline.pipeline_library.graphics_library.misc.independent_pipeline_layout_sets.fast_linked
 dEQP-VK.pipeline.pipeline_library.graphics_library.misc.independent_pipeline_layout_sets.link_opt_union_handle
-dEQP-VK.pipeline.pipeline_library.graphics_library.misc.independent_pipeline_layout_sets.link_opt_null_handle
 dEQP-VK.pipeline.pipeline_library.graphics_library.misc.bind_null_descriptor_set.1
 dEQP-VK.pipeline.pipeline_library.graphics_library.misc.bind_null_descriptor_set.11
 dEQP-VK.pipeline.pipeline_library.graphics_library.misc.bind_null_descriptor_set.01
index 75eba56..e25303b 100644 (file)
@@ -757,6 +757,7 @@ void GraphicsPipelineWrapper::buildPipeline(const VkPipelineCache                                           pipelineC
 
                linkedCreateInfo.pNext  = &linkingInfo;
                linkedCreateInfo.flags  = m_internalData->pipelineFlags;
+               linkedCreateInfo.layout = m_internalData->monolithicPipelineCreateInfo.layout;
                pointerToCreateInfo             = &linkedCreateInfo;
 
                if (m_internalData->pipelineConstructionType == PIPELINE_CONSTRUCTION_TYPE_LINK_TIME_OPTIMIZED_LIBRARY)
index c309014..312a645 100644 (file)
@@ -191,6 +191,7 @@ void DynamicStateBaseClass::initPipeline (const vk::VkDevice device)
                                                                                                static_cast<const vk::VkPipelineRasterizationStateCreateInfo*>(&rasterizerState))
                          .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *fs, static_cast<const vk::VkPipelineDepthStencilStateCreateInfo*>(&depthStencilState))
                          .setupFragmentOutputState(*m_renderPass, 0u, static_cast<const vk::VkPipelineColorBlendStateCreateInfo*>(&colorBlendState))
+                         .setMonolithicPipelineLayout(*m_pipelineLayout)
                          .buildPipeline();
 }
 
index 1b2e55a..55b5020 100644 (file)
@@ -88,6 +88,7 @@ public:
                                                                                                        static_cast<const vk::VkPipelineRasterizationStateCreateInfo*>(&rasterizerState))
                                  .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *fs, static_cast<const vk::VkPipelineDepthStencilStateCreateInfo*>(&depthStencilState))
                                  .setupFragmentOutputState(*m_renderPass, 0u, static_cast<const vk::VkPipelineColorBlendStateCreateInfo*>(&colorBlendState))
+                                 .setMonolithicPipelineLayout(*m_pipelineLayout)
                                  .buildPipeline();
        }
 
index e312f4a..d430b63 100644 (file)
@@ -259,6 +259,7 @@ protected:
                                                                                                          static_cast<const vk::VkPipelineRasterizationStateCreateInfo*>(&rasterizerState))
                                        .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *fs, static_cast<const vk::VkPipelineDepthStencilStateCreateInfo*>(&m_depthStencilState_1))
                                        .setupFragmentOutputState(*m_renderPass, 0u, static_cast<const vk::VkPipelineColorBlendStateCreateInfo*>(&colorBlendState))
+                                       .setMonolithicPipelineLayout(*m_pipelineLayout)
                                        .buildPipeline();
 
                m_pipeline_2.setDefaultTopology(m_topology)
@@ -274,6 +275,7 @@ protected:
                                                                                                          static_cast<const vk::VkPipelineRasterizationStateCreateInfo*>(&rasterizerState))
                                        .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *fs, static_cast<const vk::VkPipelineDepthStencilStateCreateInfo*>(&m_depthStencilState_2))
                                        .setupFragmentOutputState(*m_renderPass, 0u, static_cast<const vk::VkPipelineColorBlendStateCreateInfo*>(&colorBlendState))
+                                       .setMonolithicPipelineLayout(*m_pipelineLayout)
                                        .buildPipeline();
 
                std::vector<vk::VkImageView> attachments(2);
@@ -643,6 +645,7 @@ void DepthBoundsTestInstance::initPipeline (const vk::VkDevice device)
                                                                                                static_cast<const vk::VkPipelineRasterizationStateCreateInfo*>(&rasterizerState))
                          .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *fs, static_cast<const vk::VkPipelineDepthStencilStateCreateInfo*>(&depthStencilState))
                          .setupFragmentOutputState(*m_renderPass, 0u, static_cast<const vk::VkPipelineColorBlendStateCreateInfo*>(&colorBlendState))
+                         .setMonolithicPipelineLayout(*m_pipelineLayout)
                          .buildPipeline();
 }
 
index 2b5b93d..ca31b2a 100644 (file)
@@ -290,6 +290,7 @@ public:
                                                                                                        static_cast<const vk::VkPipelineRasterizationStateCreateInfo*>(&rasterizerState))
                                  .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *fs, static_cast<const vk::VkPipelineDepthStencilStateCreateInfo*>(&depthStencilState))
                                  .setupFragmentOutputState(*m_renderPass, 0u, static_cast<const vk::VkPipelineColorBlendStateCreateInfo*>(&colorBlendState))
+                                 .setMonolithicPipelineLayout(*m_pipelineLayout)
                                  .buildPipeline();
 
                m_pipelineAdditional.setDefaultTopology(vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST)
@@ -305,6 +306,7 @@ public:
                                                                                                        static_cast<const vk::VkPipelineRasterizationStateCreateInfo*>(&rasterizerState))
                                  .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *fs, static_cast<const vk::VkPipelineDepthStencilStateCreateInfo*>(&depthStencilState))
                                  .setupFragmentOutputState(*m_renderPass, 0u, static_cast<const vk::VkPipelineColorBlendStateCreateInfo*>(&colorBlendState))
+                                 .setMonolithicPipelineLayout(*m_pipelineLayout)
                                  .buildPipeline();
        }
 
index 4bc2b1a..618933c 100644 (file)
@@ -644,6 +644,7 @@ void InheritanceTestInstance::startRenderCmds(const TestGeometry& geometry)
                                                                          *m_fragModule,
                                                                          &pipelinestate::depthStencil)
                        .setupFragmentOutputState(*m_renderPass, 0u, &pipelinestate::blend)
+                       .setMonolithicPipelineLayout(*m_rectanglePipelineLayout)
                        .buildPipeline();
        }
        const VkPipeline graphicsPipeline = m_rectanglePipelines[staticViewportCount].getPipeline();
index 3685471..5257a20 100644 (file)
@@ -249,6 +249,7 @@ protected:
                                                                                                        static_cast<const vk::VkPipelineRasterizationStateCreateInfo*>(&rasterizerState))
                                  .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *fs, static_cast<const vk::VkPipelineDepthStencilStateCreateInfo*>(&m_depthStencilState))
                                  .setupFragmentOutputState(*m_renderPass, 0u, static_cast<const vk::VkPipelineColorBlendStateCreateInfo*>(&colorBlendState))
+                                 .setMonolithicPipelineLayout(*m_pipelineLayout)
                                  .buildPipeline();
 
 
index 96d0639..abde8a0 100644 (file)
@@ -56,13 +56,6 @@ void createChildren (tcu::TestCaseGroup* group, vk::PipelineConstructionType pip
                group->addChild(createDynamicStateComputeTests  (testCtx));
 }
 
-static void cleanupGroup(tcu::TestCaseGroup* group)
-{
-       DE_UNREF(group);
-       // Destroy singleton objects.
-       cleanupDevice();
-}
-
 } // anonymous
 
 tcu::TestCaseGroup* createTests (tcu::TestContext& testCtx)
index c480fb5..95ecacd 100644 (file)
@@ -264,6 +264,7 @@ public:
                                                                                                        *gs)
                                  .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *fs, static_cast<const vk::VkPipelineDepthStencilStateCreateInfo*>(&depthStencilState))
                                  .setupFragmentOutputState(*m_renderPass, 0u, static_cast<const vk::VkPipelineColorBlendStateCreateInfo*>(&colorBlendState))
+                                 .setMonolithicPipelineLayout(*m_pipelineLayout)
                                  .buildPipeline();
        }
 
index 9c5bae3..d6844c6 100644 (file)
@@ -1972,6 +1972,7 @@ tcu::TestStatus FSRTestInstance::iterate (void)
                                                &multisampleStateCreateInfo,
                                                &shadingRateStateCreateInfo)
                                        .setupFragmentOutputState(*renderPass, 0u, DE_NULL, &multisampleStateCreateInfo)
+                                       .setMonolithicPipelineLayout(*pipelineLayout)
                                        .buildPipeline();
                                vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipelines.back().getPipeline());
                        }
@@ -2092,6 +2093,7 @@ tcu::TestStatus FSRTestInstance::iterate (void)
                                                        &multisampleStateCreateInfo,
                                                        &shadingRateStateCreateInfo)
                                                .setupFragmentOutputState(*renderPass, 0u, DE_NULL, &multisampleStateCreateInfo)
+                                               .setMonolithicPipelineLayout(*pipelineLayout)
                                                .buildPipeline();
                                        vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipelines.back().getPipeline());
                                }
index a149ca9..bca98fe 100644 (file)
@@ -528,6 +528,7 @@ tcu::TestStatus BindPointInstance::iterate (void)
                                                        *vertShader)
                                                .setupFragmentShaderState(*graphicsPipelineLayout, *renderPass, 0u, *fragShader)
                                                .setupFragmentOutputState(*renderPass, 0u)
+                                               .setMonolithicPipelineLayout(*graphicsPipelineLayout)
                                                .buildPipeline();
        }
 
index 94ef02d..3f9c7c0 100644 (file)
@@ -1131,6 +1131,7 @@ void BlendOperationAdvancedTestInstance::buildPipeline (VkBool32 srcPremultiplie
                          .setupPreRasterizationShaderState(viewport, scissor, *m_pipelineLayout, *m_renderPass, 0u, m_shaderModules[0].get())
                          .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, m_shaderModules[1].get(), &depthStencilStateParams, &multisampleStateParams)
                          .setupFragmentOutputState(*m_renderPass, 0u, &colorBlendStateParams, &multisampleStateParams)
+                         .setMonolithicPipelineLayout(*m_pipelineLayout)
                          .buildPipeline();
 }
 
@@ -1807,6 +1808,7 @@ void BlendOperationAdvancedTestCoherentInstance::buildPipeline ()
                .setupPreRasterizationShaderState(viewport, scissor, *m_pipelineLayout, m_renderPasses[0].get(), 0u, m_shaderModules[0].get())
                .setupFragmentShaderState(*m_pipelineLayout, m_renderPasses[0].get(), 0u, m_shaderModules[1].get(), &depthStencilStateParams, &multisampleStateParams)
                .setupFragmentOutputState(m_renderPasses[0].get(), 0u, &colorBlendStateParams[0], &multisampleStateParams)
+               .setMonolithicPipelineLayout(*m_pipelineLayout)
                .buildPipeline();
 
        // Create second pipeline
@@ -1818,6 +1820,7 @@ void BlendOperationAdvancedTestCoherentInstance::buildPipeline ()
                .setupPreRasterizationShaderState(viewport, scissor, *m_pipelineLayout, m_renderPasses[1].get(), 0u, m_shaderModules[0].get())
                .setupFragmentShaderState(*m_pipelineLayout, m_renderPasses[1].get(), 0u, m_shaderModules[1].get(), &depthStencilStateParams, &multisampleStateParams)
                .setupFragmentOutputState(m_renderPasses[1].get(), 0u, &colorBlendStateParams[1], &multisampleStateParams)
+               .setMonolithicPipelineLayout(*m_pipelineLayout)
                .buildPipeline();
 }
 
index 3db5179..4b7d9df 100644 (file)
@@ -781,6 +781,7 @@ BlendTestInstance::BlendTestInstance (Context&                                                                      context,
                                                                                                                                                  *m_vertexShaderModule)
                                                                                .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *m_fragmentShaderModule)
                                                                                .setupFragmentOutputState(*m_renderPass, 0u, &colorBlendStateParams)
+                                                                               .setMonolithicPipelineLayout(*m_pipelineLayout)
                                                                                .buildPipeline();
                }
        }
@@ -1380,6 +1381,7 @@ DualSourceBlendTestInstance::DualSourceBlendTestInstance (Context&                                                                        conte
                                                                                                                                                  *m_vertexShaderModule)
                                                                                .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *m_fragmentShaderModule)
                                                                                .setupFragmentOutputState(*m_renderPass, 0u, &colorBlendStateParams)
+                                                                               .setMonolithicPipelineLayout(*m_pipelineLayout)
                                                                                .buildPipeline();
                }
        }
@@ -1918,6 +1920,7 @@ tcu::TestStatus ClampTestInstance::iterate (void)
                                                                                                          *vertexShaderModule)
                                        .setupFragmentShaderState(*pipelineLayout, *renderPass, 0u, *fragmentShaderModule)
                                        .setupFragmentOutputState(*renderPass, 0u, &colorBlendStateParams)
+                                       .setMonolithicPipelineLayout(*pipelineLayout)
                                        .buildPipeline();
 
        // Vertex buffer
index a7eb185..fc5cd35 100644 (file)
@@ -757,6 +757,7 @@ void GraphicsCacheTestInstance::preparePipelineWrapper(GraphicsPipelineWrapper&
                                                                                  *geomShaderModule)
                .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *fragShaderModule, &defaultDepthStencilState)
                .setupFragmentOutputState(*m_renderPass)
+               .setMonolithicPipelineLayout(*m_pipelineLayout)
                .buildPipeline(cache);
 }
 
index 16f6a68..535b7dd 100644 (file)
@@ -811,6 +811,7 @@ tcu::TestStatus ColorWriteEnableInstance::iterate (void)
                                                                &depthStencilStateCreateInfo,
                                                                &multisampleStateCreateInfo)
                                          .setupFragmentOutputState(*renderPass, 0u, &colorBlendStateCreateInfo, &multisampleStateCreateInfo)
+                                         .setMonolithicPipelineLayout(*pipelineLayout)
                                          .buildPipeline();
        }
 
@@ -832,6 +833,7 @@ tcu::TestStatus ColorWriteEnableInstance::iterate (void)
                                                                &depthStencilStateCreateInfo,
                                                                &multisampleStateCreateInfo)
                                        .setupFragmentOutputState(*renderPass, 0u, &colorBlendStateCreateInfo, &multisampleStateCreateInfo)
+                                       .setMonolithicPipelineLayout(*pipelineLayout)
                                        .buildPipeline();
 
        // Command buffer.
index 4b18556..c35b23e 100644 (file)
@@ -619,6 +619,12 @@ void GraphicsCacheTestInstance::preparePipelineWrapper (GraphicsPipelineWrapper&
                pipelineCreationFeedbackCreateInfo[1].pPipelineStageCreationFeedbacks           = pipelineStageCreationFeedbacks;
                pipelineCreationFeedbackCreateInfo[2].pipelineStageCreationFeedbackCount        = 1u;
                pipelineCreationFeedbackCreateInfo[2].pPipelineStageCreationFeedbacks           = pipelineStageCreationFeedbacks + geometryStages;
+
+               if (m_param->getPipelineConstructionType() == PIPELINE_CONSTRUCTION_TYPE_LINK_TIME_OPTIMIZED_LIBRARY)
+               {
+                       pipelineCreationFeedbackCreateInfo[4].pipelineStageCreationFeedbackCount        = 1u + geometryStages;
+                       pipelineCreationFeedbackCreateInfo[4].pPipelineStageCreationFeedbacks           = pipelineStageCreationFeedbacks;
+               }
        }
 
        gpw.setDefaultTopology((tescShaderModule == DE_NULL) ? VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST : VK_PRIMITIVE_TOPOLOGY_PATCH_LIST)
@@ -652,6 +658,7 @@ void GraphicsCacheTestInstance::preparePipelineWrapper (GraphicsPipelineWrapper&
                        *m_cache,
                        &pipelineCreationFeedbackCreateInfo[2])
           .setupFragmentOutputState(*m_renderPass, 0u, &colorBlendStateParams, DE_NULL, *m_cache, &pipelineCreationFeedbackCreateInfo[3])
+          .setMonolithicPipelineLayout(*m_pipelineLayout)
           .buildPipeline(*m_cache, basePipelineHandle, basePipelineHandle != DE_NULL ? -1 : 0, &pipelineCreationFeedbackCreateInfo[4]);
 }
 
index 23072c1..0be45cc 100644 (file)
@@ -660,6 +660,7 @@ void DepthRangeUnrestrictedTestInstance::preparePipelineWrapper (GraphicsPipelin
                        &rasterStateParams)
           .setupFragmentShaderState(*m_pipelineLayout, renderpass, 0u, *m_fragModule, &depthStencilStateParams)
           .setupFragmentOutputState(renderpass, 0u, &colorBlendStateParams)
+          .setMonolithicPipelineLayout(*m_pipelineLayout)
           .buildPipeline();
 }
 
index b480a31..75386b1 100644 (file)
@@ -687,6 +687,7 @@ DepthTestInstance::DepthTestInstance (Context&                                                      context,
                                                                                                                                        *m_fragmentShaderModule,
                                                                                                                                        &depthStencilStateParams)
                                                                                .setupFragmentOutputState(*m_renderPass)
+                                                                               .setMonolithicPipelineLayout(*m_pipelineLayout)
                                                                                .buildPipeline();
 
                        if (useAltGraphicsPipelines)
@@ -709,6 +710,7 @@ DepthTestInstance::DepthTestInstance (Context&                                                      context,
                                                                                                                                                                *m_fragmentShaderModule,
                                                                                                                                                                &depthStencilStateParams)
                                                                                           .setupFragmentOutputState(*m_renderPass)
+                                                                                          .setMonolithicPipelineLayout(*m_pipelineLayout)
                                                                                           .buildPipeline();
                        }
                }
index c4dd7f0..a4239d7 100644 (file)
@@ -602,7 +602,8 @@ void DynamicOffsetGraphicsTestInstance::init (void)
                const vector<VkRect2D>          scissors        { makeRect2D(m_renderSize) };
 
                m_graphicsPipelines.emplace_back(vk, vkDevice, m_params.pipelineConstructionType);
-               m_graphicsPipelines.back().setDefaultRasterizationState()
+               m_graphicsPipelines.back().setMonolithicPipelineLayout(*m_pipelineLayout)
+                                                                 .setDefaultRasterizationState()
                                                                  .setDefaultDepthStencilState()
                                                                  .setDefaultColorBlendState()
                                                                  .setDefaultMultisampleState()
index 0d085d2..a5ecb97 100644 (file)
@@ -195,6 +195,7 @@ tcu::TestStatus testEarlyDestroy (Context& context, const TestParams& params, bo
                                                                                                                  &rasterizationStateCreateInfo)
                                                .setupFragmentShaderState(*pipelineLayout, *renderPass, 0u, *fragmentShaderModule)
                                                .setupFragmentOutputState(*renderPass, 0u, &colorBlendStateCreateInfo)
+                                               .setMonolithicPipelineLayout(*pipelineLayout)
                                                .buildPipeline(params.usePipelineCache ? *pipelineCache : DE_NULL);
 
                const deUint32 framebufferWidth                                                                                                 = 32;
index 5b27bc1..1d35510 100644 (file)
@@ -1093,6 +1093,7 @@ void GraphicsExecutablePropertiesTestInstance::preparePipelineWrapper(GraphicsPi
                        geomShaderModule)
           .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, fragShaderModule, &depthStencilStateParams)
           .setupFragmentOutputState(*m_renderPass, 0u, &colorBlendStateParams)
+          .setMonolithicPipelineLayout(*m_pipelineLayout)
           .buildPipeline(*m_cache);
 }
 
index 26446e3..9886775 100644 (file)
@@ -2211,6 +2211,7 @@ tcu::TestStatus ExtendedDynamicStateInstance::iterate (void)
                                                                                        *geomModule)
                                          .setupFragmentShaderState(*pipelineLayout, *renderPass, 0u, *fragModule, &depthStencilStateCreateInfo, &multisampleStateCreateInfo)
                                          .setupFragmentOutputState(*renderPass, 0u, &colorBlendStateCreateInfo, &multisampleStateCreateInfo)
+                                         .setMonolithicPipelineLayout(*pipelineLayout)
                                          .buildPipeline();
        }
 
@@ -2263,6 +2264,7 @@ tcu::TestStatus ExtendedDynamicStateInstance::iterate (void)
                                                                                        *geomModule)
                                                .setupFragmentShaderState(*pipelineLayout, *renderPass, 0u, *fragModule, &depthStencilStateCreateInfo, &multisampleStateCreateInfo)
                                                .setupFragmentOutputState(*renderPass, 0u, &colorBlendStateCreateInfo, &multisampleStateCreateInfo)
+                                               .setMonolithicPipelineLayout(*pipelineLayout)
                                                .buildPipeline();
        }
 
index 8a81e62..e2c361c 100644 (file)
@@ -255,6 +255,7 @@ void preparePipelineWrapper(GraphicsPipelineWrapper&        gpw,
                                                                                 vertexModule)
           .setupFragmentShaderState(pipelineLayout, renderPass, subpass, fragmentModule, DE_NULL, &pipelineMultisampleStateInfo)
           .setupFragmentOutputState(renderPass, subpass, &pipelineColorBlendStateInfo, &pipelineMultisampleStateInfo)
+          .setMonolithicPipelineLayout(pipelineLayout)
           .buildPipeline();
 }
 
index d8c8f89..43ba94e 100644 (file)
@@ -1371,6 +1371,7 @@ InputAssemblyInstance::InputAssemblyInstance (Context&                                                    context,
                                                                                        *m_fragmentShaderModule,
                                                                                        &depthStencilStateParams)
                                                  .setupFragmentOutputState(*m_renderPass, 0u, &colorBlendStateParams)
+                                                 .setMonolithicPipelineLayout(*m_pipelineLayout)
                                                  .buildPipeline();
        }
 
index 630f338..80b0ea2 100644 (file)
@@ -322,6 +322,7 @@ tcu::TestStatus InterfaceMatchingTestInstance::iterate(void)
                                                                                                                *m_geomShaderModule)
                                          .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *m_fragShaderModule)
                                          .setupFragmentOutputState(*m_renderPass)
+                                         .setMonolithicPipelineLayout(*m_pipelineLayout)
                                          .buildPipeline();
 
        // create vertex buffer
index d7de1a7..2567373 100644 (file)
@@ -881,7 +881,10 @@ bool PipelineLibraryTestInstance::runTest (RuntimePipelineTreeConfiguration&       run
                        appendStructurePtrToVulkanChain(&graphicsPipelineCreateInfo.pNext, &graphicsPipelineLibraryCreateInfo);
 
                if (linkingInfo.libraryCount != 0)
+               {
                        appendStructurePtrToVulkanChain(&graphicsPipelineCreateInfo.pNext, &linkingInfo);
+                       graphicsPipelineCreateInfo.layout = *pipelineLayoutSame;
+               }
 
                node.pipeline = createGraphicsPipeline(vk, device, DE_NULL, &graphicsPipelineCreateInfo);
 
@@ -1209,7 +1212,6 @@ enum class MiscTestMode
 {
        INDEPENDENT_PIPELINE_LAYOUT_SETS_FAST_LINKED = 0,
        INDEPENDENT_PIPELINE_LAYOUT_SETS_WITH_LINK_TIME_OPTIMIZATION_UNION_HANDLE,
-       INDEPENDENT_PIPELINE_LAYOUT_SETS_WITH_LINK_TIME_OPTIMIZATION_NULL_HANDLE,
        BIND_NULL_DESCRIPTOR_SET,
        COMPARE_LINK_TIMES
 };
@@ -1234,7 +1236,7 @@ public:
 protected:
 
        tcu::TestStatus         runNullDescriptorSet                            (void);
-       tcu::TestStatus         runIndependentPipelineLayoutSets        (bool useLinkTimeOptimization = false, bool useNullLayout = false);
+       tcu::TestStatus         runIndependentPipelineLayoutSets        (bool useLinkTimeOptimization = false);
        tcu::TestStatus         runCompareLinkTimes                                     (void);
 
        struct VerificationData
@@ -1299,8 +1301,6 @@ tcu::TestStatus PipelineLibraryMiscTestInstance::iterate (void)
                return runIndependentPipelineLayoutSets();
        else if (m_testParams.mode == MiscTestMode::INDEPENDENT_PIPELINE_LAYOUT_SETS_WITH_LINK_TIME_OPTIMIZATION_UNION_HANDLE)
                return runIndependentPipelineLayoutSets(true);
-       else if (m_testParams.mode == MiscTestMode::INDEPENDENT_PIPELINE_LAYOUT_SETS_WITH_LINK_TIME_OPTIMIZATION_NULL_HANDLE)
-               return runIndependentPipelineLayoutSets(true, true);
        else if (m_testParams.mode == MiscTestMode::COMPARE_LINK_TIMES)
                return runCompareLinkTimes();
 
@@ -1529,7 +1529,7 @@ tcu::TestStatus PipelineLibraryMiscTestInstance::runNullDescriptorSet(void)
        return verifyResult(verificationData, colorPixelAccess);
 }
 
-tcu::TestStatus PipelineLibraryMiscTestInstance::runIndependentPipelineLayoutSets (bool useLinkTimeOptimization, bool useNullLayout)
+tcu::TestStatus PipelineLibraryMiscTestInstance::runIndependentPipelineLayoutSets (bool useLinkTimeOptimization)
 {
        const DeviceInterface&                  vk                                                      = m_context.getDeviceInterface();
        const VkDevice                                  device                                          = m_context.getDevice();
@@ -1573,7 +1573,7 @@ tcu::TestStatus PipelineLibraryMiscTestInstance::runIndependentPipelineLayoutSet
 
        // for the link time opt (and when null handle is used) use total pipeline layout recreated without the INDEPENDENT SETS bit
        deUint32 allLayoutsFlag = deUint32(VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT);
-       if (useLinkTimeOptimization && !useNullLayout)
+       if (useLinkTimeOptimization)
                allLayoutsFlag = 0u;
 
        // Pre-rasterization stage library has sets 0, 1, 2
@@ -1659,7 +1659,7 @@ tcu::TestStatus PipelineLibraryMiscTestInstance::runIndependentPipelineLayoutSet
        VkGraphicsPipelineCreateInfo    finalPipelineInfo       = initVulkanStructure();
 
        finalPipelineInfo.flags         = finalPipelineFlag;
-       finalPipelineInfo.layout        = useNullLayout ? DE_NULL : *allLayouts;
+       finalPipelineInfo.layout        = *allLayouts;
 
        appendStructurePtrToVulkanChain(&finalPipelineInfo.pNext, &linkingInfo);
        Move<VkPipeline> pipeline = createGraphicsPipeline(vk, device, DE_NULL, &finalPipelineInfo);
@@ -1795,6 +1795,7 @@ tcu::TestStatus PipelineLibraryMiscTestInstance::runCompareLinkTimes (void)
 
                VkPipelineLibraryCreateInfoKHR  linkingInfo                     = makePipelineLibraryCreateInfo(pipelinesToLink);
                VkGraphicsPipelineCreateInfo    finalPipelineInfo       = initVulkanStructure();
+               finalPipelineInfo.layout = layout;
 
                appendStructurePtrToVulkanChain(&finalPipelineInfo.pNext, &linkingInfo);
 
@@ -1958,7 +1959,6 @@ void PipelineLibraryMiscTestCase::initPrograms(SourceCollections& programCollect
                        "}\n");
        }
        else if ((m_testParams.mode == MiscTestMode::INDEPENDENT_PIPELINE_LAYOUT_SETS_FAST_LINKED) ||
-                        (m_testParams.mode == MiscTestMode::INDEPENDENT_PIPELINE_LAYOUT_SETS_WITH_LINK_TIME_OPTIMIZATION_NULL_HANDLE) ||
                         (m_testParams.mode == MiscTestMode::INDEPENDENT_PIPELINE_LAYOUT_SETS_WITH_LINK_TIME_OPTIMIZATION_UNION_HANDLE))
        {
                programCollection.glslSources.add("vert") << glu::VertexSource(
@@ -2182,7 +2182,6 @@ tcu::TestCaseGroup*       createPipelineLibraryTests(tcu::TestContext& testCtx)
        de::MovePtr<tcu::TestCaseGroup> independentLayoutSetsTests(new tcu::TestCaseGroup(testCtx, "independent_pipeline_layout_sets", ""));
        independentLayoutSetsTests->addChild(new PipelineLibraryMiscTestCase(testCtx, "fast_linked", { MiscTestMode::INDEPENDENT_PIPELINE_LAYOUT_SETS_FAST_LINKED, 0u, 0u }));
        independentLayoutSetsTests->addChild(new PipelineLibraryMiscTestCase(testCtx, "link_opt_union_handle", { MiscTestMode::INDEPENDENT_PIPELINE_LAYOUT_SETS_WITH_LINK_TIME_OPTIMIZATION_UNION_HANDLE, 0u, 0u }));
-       independentLayoutSetsTests->addChild(new PipelineLibraryMiscTestCase(testCtx, "link_opt_null_handle", { MiscTestMode::INDEPENDENT_PIPELINE_LAYOUT_SETS_WITH_LINK_TIME_OPTIMIZATION_NULL_HANDLE, 0u, 0u }));
        miscTests->addChild(independentLayoutSetsTests.release());
 
        de::MovePtr<tcu::TestCaseGroup> bindNullDescriptorCombinationsTests(new tcu::TestCaseGroup(testCtx, "bind_null_descriptor_set", ""));
index 06dc375..771f3e4 100644 (file)
@@ -233,6 +233,7 @@ tcu::TestStatus testMatchedAttachments (Context& context, const MatchedAttachmen
                                                                                                          *vertexShaderModule)
                                        .setupFragmentShaderState(*pipelineLayout, *renderPass, 0u, *fragmentShaderModule)
                                        .setupFragmentOutputState(*renderPass, 0u)
+                                       .setMonolithicPipelineLayout(*pipelineLayout)
                                        .buildPipeline(params.usePipelineCache ? *pipelineCache : DE_NULL);
 
        // Passes as long as createGraphicsPipeline didn't crash.
index 8e36974..d8f156a 100644 (file)
@@ -1067,6 +1067,7 @@ tcu::TestStatus test(Context& context, const MaxVaryingsParam param)
                                                                                                        &pSpecInfo)
                                        .setupFragmentShaderState(*pipelineLayout, *renderPass, 0u, *fragShaderModule)
                                        .setupFragmentOutputState(*renderPass)
+                                       .setMonolithicPipelineLayout(*pipelineLayout)
                                        .buildPipeline();
 
        // Draw commands
index 91870a0..72c5850 100644 (file)
@@ -292,6 +292,7 @@ tcu::TestStatus MSInstanceBaseResolve::iterate (void)
                                                *vsModule)
                                        .setupFragmentShaderState(*pipelineLayout, *renderPass, 0u, *fsModule, DE_NULL, &multisampleStateInfo)
                                        .setupFragmentOutputState(*renderPass, 0, DE_NULL, &multisampleStateInfo)
+                                       .setMonolithicPipelineLayout(*pipelineLayout)
                                        .buildPipeline();
 
        // Create command buffer for compute and transfer oparations
index 768f25d..ace5a30 100644 (file)
@@ -436,6 +436,7 @@ tcu::TestStatus MSInstanceBaseResolveAndPerSampleFetch::iterate (void)
                                                  .setupPreRasterizationShaderState(viewports, scissors, *pipelineLayoutMSPass, *renderPass, 0u, *vsMSPassModule)
                                                  .setupFragmentShaderState(*pipelineLayoutMSPass, *renderPass, 0u, *fsMSPassModule, DE_NULL, &multisampleStateInfo)
                                                  .setupFragmentOutputState(*renderPass, 0u, DE_NULL, &multisampleStateInfo)
+                                                 .setMonolithicPipelineLayout(*pipelineLayoutMSPass)
                                                  .buildPipeline();
 
        std::vector<GraphicsPipelineWrapper> graphicsPipelinesPerSampleFetch;
@@ -486,6 +487,7 @@ tcu::TestStatus MSInstanceBaseResolveAndPerSampleFetch::iterate (void)
                                .setupPreRasterizationShaderState(viewports, scissors, *pipelineLayoutPerSampleFetchPass, *renderPass, subpass, *vsPerSampleFetchPassModule)
                                .setupFragmentShaderState(*pipelineLayoutPerSampleFetchPass, *renderPass, subpass, *fsPerSampleFetchPassModule)
                                .setupFragmentOutputState(*renderPass, subpass)
+                               .setMonolithicPipelineLayout(*pipelineLayoutPerSampleFetchPass)
                                .buildPipeline();
                }
        }
index fb224dd..e21e9cd 100644 (file)
@@ -410,6 +410,7 @@ void preparePipelineWrapper (GraphicsPipelineWrapper&               gpw,
                        vertexModule)
           .setupFragmentShaderState(pipelineLayout, renderPass, subpassNdx, fragmentModule, DE_NULL, &pipelineMultisampleStateInfo)
           .setupFragmentOutputState(renderPass, subpassNdx, &pipelineColorBlendStateInfo, &pipelineMultisampleStateInfo)
+          .setMonolithicPipelineLayout(pipelineLayout)
           .buildPipeline();
 }
 
index c75bbae..57cf5c4 100644 (file)
@@ -313,6 +313,7 @@ void preparePipelineWrapper(GraphicsPipelineWrapper&                        gpw,
                                                                &pipelineMultisampleStateInfo,
                                                                (useFragmentShadingRate ? &shadingRateStateCreateInfo : DE_NULL))
           .setupFragmentOutputState(renderPass, subpassNdx, &pipelineColorBlendStateInfo, &pipelineMultisampleStateInfo)
+          .setMonolithicPipelineLayout(pipelineLayout)
           .buildPipeline();
 }
 
index d4dc9ea..db5e90d 100644 (file)
@@ -238,6 +238,7 @@ void MultisampleRenderAreaTestInstance::preparePipelineWrapper (GraphicsPipeline
                        DE_NULL,
                        &multisampleStateCreateInfo)
           .setupFragmentOutputState(renderPass, 0u, DE_NULL, &multisampleStateCreateInfo)
+          .setMonolithicPipelineLayout(pipelineLayout)
           .buildPipeline();
 }
 
index cd83b79..daacb21 100644 (file)
@@ -706,6 +706,7 @@ void preparePipelineWrapper (GraphicsPipelineWrapper&                       gpw,
                                                                &pipelineMultisampleStateInfo,
                                                                (useFragmentShadingRate ? &shadingRateStateCreateInfo : DE_NULL))
           .setupFragmentOutputState(renderPass, subpassIndex, &colorBlendStateCreateInfoDefault, &pipelineMultisampleStateInfo)
+          .setMonolithicPipelineLayout(pipelineLayout)
           .buildPipeline();
 }
 
index 0922520..7452233 100644 (file)
@@ -1988,6 +1988,7 @@ tcu::TestStatus WriteSampleMaskTestInstance::iterate (void)
                                                .setupPreRasterizationShaderState(viewport, scissor, *emptyPipelineLayout, *renderPass, 0u, *vertModule)
                                                .setupFragmentShaderState(*emptyPipelineLayout, *renderPass, 0u, *writeModule, &depthStencilInfo, &multisampleInfo)
                                                .setupFragmentOutputState(*renderPass, 0u, &colorBlendInfo, &multisampleInfo)
+                                               .setMonolithicPipelineLayout(*emptyPipelineLayout)
                                                .buildPipeline();
 
        // Pipeline for the second subpass.
@@ -1998,6 +1999,7 @@ tcu::TestStatus WriteSampleMaskTestInstance::iterate (void)
                                                .setupPreRasterizationShaderState(viewport, scissor, *checkPipelineLayout, *renderPass, 1u, *vertModule)
                                                .setupFragmentShaderState(*checkPipelineLayout, *renderPass, 1u, *checkModule, &depthStencilInfo, &multisampleInfo)
                                                .setupFragmentOutputState(*renderPass, 1u, &colorBlendInfo, &multisampleInfo)
+                                               .setMonolithicPipelineLayout(*checkPipelineLayout)
                                                .buildPipeline();
 
        // Command pool and command buffer.
index 3d37c5e..d698b21 100644 (file)
@@ -714,6 +714,7 @@ void drawAndSampleInputAttachment (Context& context, const TestParams& params, W
                                                                        *vertexModuleDraw)
                                        .setupFragmentShaderState(*pipelineLayout, *renderPass, 0u, *fragmentModuleDraw, DE_NULL, &multisampleStateInfo)
                                        .setupFragmentOutputState(*renderPass, 0u, &colorBlendStateInfo, &multisampleStateInfo)
+                                       .setMonolithicPipelineLayout(*pipelineLayout)
                                        .buildPipeline();
        }
 
@@ -742,6 +743,7 @@ void drawAndSampleInputAttachment (Context& context, const TestParams& params, W
                                                                        *vertexModuleSample)
                                          .setupFragmentShaderState(*pipelineLayout, *renderPass, 1u, *fragmentModuleSample, DE_NULL, &multisampleStateInfo)
                                          .setupFragmentOutputState(*renderPass, 1u, &colorBlendStateInfo, &multisampleStateInfo)
+                                         .setMonolithicPipelineLayout(*pipelineLayout)
                                          .buildPipeline();
        }
 
@@ -977,6 +979,7 @@ void draw (Context& context, const TestParams& params, WorkingData& wd)
                                                                                                *vertexModuleDraw)
                                                .setupFragmentShaderState(*pipelineLayout, *renderPass, layerNdx, *fragmentModuleDraw, DE_NULL, &multisampleStateInfo)
                                                .setupFragmentOutputState(*renderPass, layerNdx, &colorBlendStateInfo, &multisampleStateInfo)
+                                               .setMonolithicPipelineLayout(*pipelineLayout)
                                                .buildPipeline();
        }
 
index ee6eb42..0cba1d6 100644 (file)
@@ -4149,6 +4149,7 @@ void MultisampleRenderer::initialize (Context&                                                                    context,
                                                                                                                                        &m_multisampleStateParams,
                                                                                                                                        m_useFragmentShadingRate ? &shadingRateStateCreateInfo : DE_NULL)
                                                                                  .setupFragmentOutputState(*m_renderPass, subpassIdx, &colorBlendStateParams, &m_multisampleStateParams)
+                                                                                 .setMonolithicPipelineLayout(*m_pipelineLayout)
                                                                                  .buildPipeline();
                        }
        }
@@ -4206,6 +4207,7 @@ void MultisampleRenderer::initialize (Context&                                                                    context,
                                                                                                                                        subpassIdx,
                                                                                                                                        *m_copySampleFragmentShaderModule)
                                                                                        .setupFragmentOutputState(*m_renderPass, subpassIdx, &colorBlendStateParams)
+                                                                                       .setMonolithicPipelineLayout(*m_copySamplePipelineLayout)
                                                                                        .buildPipeline();
                        }
                }
@@ -4922,6 +4924,7 @@ tcu::TestStatus VariableRateTestInstance::iterate (void)
                                *vertModule)
                        .setupFragmentShaderState(*pipelineLayout, *renderPassSingleSubpass, 0u, *fragModule)
                        .setupFragmentOutputState(*renderPassSingleSubpass, 0u, DE_NULL, &multisampleStateCreateInfo)
+                       .setMonolithicPipelineLayout(*pipelineLayout)
                        .buildPipeline();
        }
 
@@ -4947,6 +4950,7 @@ tcu::TestStatus VariableRateTestInstance::iterate (void)
                                *vertModule)
                        .setupFragmentShaderState(*pipelineLayout, *renderPassMultiplePasses, subpass, *fragModule)
                        .setupFragmentOutputState(*renderPassMultiplePasses, subpass, DE_NULL, &multisampleStateCreateInfo)
+                       .setMonolithicPipelineLayout(*pipelineLayout)
                        .buildPipeline();
        }
 
index 6f62fb9..24eea12 100644 (file)
@@ -570,6 +570,7 @@ tcu::TestStatus NoPositionInstance::iterate (void)
                                *geom)
                        .setupFragmentShaderState(*pipelineLayout, *renderPass, 0u, *frag)
                        .setupFragmentOutputState(*renderPass)
+                       .setMonolithicPipelineLayout(*pipelineLayout)
                        .buildPipeline();
 
        // Descriptor set and output SSBO if needed.
index f51116b..31d2d60 100644 (file)
@@ -2370,6 +2370,7 @@ void PushConstantLifetimeTestInstance::init (void)
                                                                                                                           *m_vertexShaderModule)
                                                         .setupFragmentShaderState(*(m_pipelineLayout[0]), *m_renderPass, 0u, *m_fragmentShaderModule)
                                                         .setupFragmentOutputState(*m_renderPass)
+                                                        .setMonolithicPipelineLayout(*(m_pipelineLayout[0]))
                                                         .buildPipeline();
 
                m_graphicsPipeline[1].setDefaultRasterizationState()
@@ -2386,6 +2387,7 @@ void PushConstantLifetimeTestInstance::init (void)
                                                                                                                           *m_vertexShaderModule)
                                                         .setupFragmentShaderState(*(m_pipelineLayout[1]), *m_renderPass, 0u, *m_fragmentShaderModule)
                                                         .setupFragmentOutputState(*m_renderPass)
+                                                        .setMonolithicPipelineLayout(*(m_pipelineLayout[1]))
                                                         .buildPipeline();
        }
 
@@ -2926,6 +2928,7 @@ tcu::TestStatus OverwriteTestInstance::iterate (void)
                                                                                                                 *vertModule)
                                           .setupFragmentShaderState(*pipelineLayout, *renderPass, 0u, *fragModule)
                                           .setupFragmentOutputState(*renderPass)
+                                          .setMonolithicPipelineLayout(*pipelineLayout)
                                           .buildPipeline();
        }
 
index b5baf65..5dd6fe7 100644 (file)
@@ -491,6 +491,7 @@ void PushDescriptorBufferGraphicsTestInstance::init (void)
                                                                                                                        *m_vertexShaderModule)
                                                  .setupFragmentShaderState(*m_fragmentStatePipelineLayout, *m_renderPass, 0u, *m_fragmentShaderModule)
                                                  .setupFragmentOutputState(*m_renderPass)
+                                                 .setMonolithicPipelineLayout(*m_preRasterizationStatePipelineLayout)
                                                  .buildPipeline();
        }
 
index 5c065b2..e2cdc57 100644 (file)
@@ -340,6 +340,7 @@ void preparePipelineWrapper(GraphicsPipelineWrapper&        gpw,
                                                                                 vertexModule)
           .setupFragmentShaderState(pipelineLayout, renderPass, subpass, fragmentModule, &pipelineDepthStencilStateInfo)
           .setupFragmentOutputState(renderPass, subpass, &pipelineColorBlendStateInfo)
+          .setMonolithicPipelineLayout(pipelineLayout)
           .buildPipeline(DE_NULL, basePipeline, -1);
 }
 
index e0011a8..abe1f09 100644 (file)
@@ -925,6 +925,7 @@ tcu::TestStatus BorderSwizzleInstance::iterate (void)
                                                                        DE_NULL,
                                                                        &specializationInfo)
                                        .setupFragmentOutputState(*renderPass, 0u, &colorBlendInfo)
+                                       .setMonolithicPipelineLayout(*pipelineLayout)
                                        .buildPipeline();
 
        // Framebuffer.
index d781947..005a0ec 100644 (file)
@@ -1709,6 +1709,7 @@ tcu::TestStatus ExactSamplingInstance::iterate (void)
                                                        *vertexModule)
                        .setupFragmentShaderState(*pipelineLayout, *renderPass, 0u, *fragModule)
                        .setupFragmentOutputState(*renderPass)
+                       .setMonolithicPipelineLayout(*pipelineLayout)
                        .buildPipeline();
 
        // Command pool and command buffer.
index d7ca7a2..4e015cc 100644 (file)
@@ -725,6 +725,7 @@ tcu::TestStatus GraphicsTestInstance::iterate (void)
                                                                                                          pSpecInfo)
                                        .setupFragmentShaderState(*pipelineLayout, *renderPass, 0u, *fragShaderModule, DE_NULL, DE_NULL, DE_NULL, pSpecInfo)
                                        .setupFragmentOutputState(*renderPass)
+                                       .setMonolithicPipelineLayout(*pipelineLayout)
                                        .buildPipeline();
 
        // Draw commands
index 647554a..0491c8c 100644 (file)
@@ -342,6 +342,7 @@ void preparePipelineWrapper(GraphicsPipelineWrapper&        gpw,
                                                                                 vertexModule)
           .setupFragmentShaderState(pipelineLayout, renderPass, subpass, fragmentModule, &pipelineDepthStencilStateInfo)
           .setupFragmentOutputState(renderPass, subpass, &pipelineColorBlendStateInfo)
+          .setMonolithicPipelineLayout(pipelineLayout)
           .buildPipeline();
 }
 
index 0e7ddbe..c2f6cf7 100644 (file)
@@ -622,6 +622,7 @@ StencilTestInstance::StencilTestInstance (Context&                                  context,
                                                                                                                                                  &rasterizationStateParams)
                                                                                .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *m_fragmentShaderModule, &depthStencilStateParams)
                                                                                .setupFragmentOutputState(*m_renderPass)
+                                                                               .setMonolithicPipelineLayout(*m_pipelineLayout)
                                                                                .buildPipeline();
                }
        }
index 9177edb..41a9749 100644 (file)
@@ -1685,6 +1685,7 @@ void BasicGraphicsTestInstance::buildPipeline(void)
                                                                                                                *vertexShaderModule)
                                          .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *fragmentShaderModule, &defaultDepthStencilStateParams)
                                          .setupFragmentOutputState(*m_renderPass)
+                                         .setMonolithicPipelineLayout(*m_pipelineLayout)
                                          .buildPipeline();
 }
 
@@ -1966,6 +1967,7 @@ void AdvGraphicsTestInstance::buildPipeline(void)
                                                                                                                *geomShaderModule)
                                          .setupFragmentShaderState(*m_pipelineLayout, *m_renderPass, 0u, *fragShaderModule, &defaultDepthStencilStateParams)
                                          .setupFragmentOutputState(*m_renderPass)
+                                         .setMonolithicPipelineLayout(*m_pipelineLayout)
                                          .buildPipeline();
 }
 
index 1be7672..dca9abd 100644 (file)
@@ -1164,6 +1164,7 @@ VertexInputInstance::VertexInputInstance (Context&                                                                                                context,
                                                                                0u,
                                                                                *m_fragmentShaderModule)
                                                  .setupFragmentOutputState(*m_renderPass, 0u, &colorBlendStateParams)
+                                                 .setMonolithicPipelineLayout(*m_pipelineLayout)
                                                  .buildPipeline();
        }
 
index b5c90c3..85d7299 100644 (file)
@@ -447473,7 +447473,6 @@ dEQP-VK.pipeline.pipeline_library.graphics_library.optimize.1_1_1_1
 dEQP-VK.pipeline.pipeline_library.graphics_library.optimize.0_1_1_1_1
 dEQP-VK.pipeline.pipeline_library.graphics_library.misc.independent_pipeline_layout_sets.fast_linked
 dEQP-VK.pipeline.pipeline_library.graphics_library.misc.independent_pipeline_layout_sets.link_opt_union_handle
-dEQP-VK.pipeline.pipeline_library.graphics_library.misc.independent_pipeline_layout_sets.link_opt_null_handle
 dEQP-VK.pipeline.pipeline_library.graphics_library.misc.bind_null_descriptor_set.1
 dEQP-VK.pipeline.pipeline_library.graphics_library.misc.bind_null_descriptor_set.11
 dEQP-VK.pipeline.pipeline_library.graphics_library.misc.bind_null_descriptor_set.01