blob: 47afd34bb2d38c5cccdb3dc49f07b31d1d813cef [file] [log] [blame]
From 353f3d1100ed6590bc09a6632ebd5440b197f79f Mon Sep 17 00:00:00 2001
From: Nicolas Capens <capn@google.com>
Date: Mon, 13 Jun 2022 11:27:21 -0400
Subject: [PATCH] Fix regresion in FSR tests
FSR tests were recently repeated few times - for pipeline libraries
and for secondary command buffers in dynamic rendering cases. As a
result there were cases where delayed group creation with
createChildren had another nested call to createChildren. This CL
modifies code to use only tow delayed group creation calls - for
renderpass2 and dynamic_rendering sub-groups.
Components: Vulkan
VK-GL-CTS issue: 3760
Affects:
dEQP-VK.fragment_shading_rate.*
Change-Id: If8da1532c0c924ef812ab055de4c71c5b9ba86b4
---
.../vktFragmentShadingRateTests.cpp | 147 +++++++++---------
1 file changed, 72 insertions(+), 75 deletions(-)
diff --git a/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRateTests.cpp b/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRateTests.cpp
index d8430c10b..344c87a49 100644
--- a/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRateTests.cpp
+++ b/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRateTests.cpp
@@ -429,6 +429,7 @@ void createMiscTests(tcu::TestContext& testCtx, tcu::TestCaseGroup* parentGroup)
void createTests (tcu::TestCaseGroup* group, SharedGroupParams groupParams)
{
tcu::TestContext& testCtx = group->getTestContext();
+
#ifndef CTS_USES_VULKANSC
createBasicTests(testCtx, group, groupParams);
#endif // CTS_USES_VULKANSC
@@ -450,91 +451,87 @@ void createTests (tcu::TestCaseGroup* group, SharedGroupParams groupParams)
}
}
-void createPipelineConstructionTypePermutations(tcu::TestContext& testCtx, tcu::TestCaseGroup* parentGroup, SharedGroupParams baseGroupParams)
+void createPipelineConstructionTypePermutations(tcu::TestCaseGroup* parentGroup, SharedGroupParams baseGroupParams)
{
- parentGroup->addChild(createTestGroup(testCtx, "monolithic", "Monolithic pipeline tests", createTests,
- SharedGroupParams(
- new GroupParams
- {
- baseGroupParams->useDynamicRendering,
- baseGroupParams->useSecondaryCmdBuffer,
- baseGroupParams->secondaryCmdBufferCompletelyContainsDynamicRenderpass,
- vk::PIPELINE_CONSTRUCTION_TYPE_MONOLITHIC,
- })));
- parentGroup->addChild(createTestGroup(testCtx, "pipeline_library", "Graphics pipeline library tests", createTests,
- SharedGroupParams(
- new GroupParams
- {
- baseGroupParams->useDynamicRendering,
- baseGroupParams->useSecondaryCmdBuffer,
- baseGroupParams->secondaryCmdBufferCompletelyContainsDynamicRenderpass,
- vk::PIPELINE_CONSTRUCTION_TYPE_LINK_TIME_OPTIMIZED_LIBRARY,
- })));
- parentGroup->addChild(createTestGroup(testCtx, "fast_linked_library", "Fast linked graphics pipeline library tests", createTests,
- SharedGroupParams(
- new GroupParams
- {
- baseGroupParams->useDynamicRendering,
- baseGroupParams->useSecondaryCmdBuffer,
- baseGroupParams->secondaryCmdBufferCompletelyContainsDynamicRenderpass,
- vk::PIPELINE_CONSTRUCTION_TYPE_FAST_LINKED_LIBRARY,
- })));
-}
+ tcu::TestContext& testCtx = parentGroup->getTestContext();
-} // anonymous
+ auto constructGroupParams = [](SharedGroupParams baseGroupParams, vk::PipelineConstructionType pipelineConstructionType)
+ {
+ return SharedGroupParams(new GroupParams
+ {
+ baseGroupParams->useDynamicRendering,
+ baseGroupParams->useSecondaryCmdBuffer,
+ baseGroupParams->secondaryCmdBufferCompletelyContainsDynamicRenderpass,
+ pipelineConstructionType,
+ });
+ };
-tcu::TestCaseGroup* createTests (tcu::TestContext& testCtx)
-{
- de::MovePtr<tcu::TestCaseGroup> mainGroup(new tcu::TestCaseGroup(testCtx, "fragment_shading_rate", "Fragment shading rate tests"));
- de::MovePtr<tcu::TestCaseGroup> renderpass2Group(new tcu::TestCaseGroup(testCtx, "renderpass2", "Draw using render pass object"));
- createPipelineConstructionTypePermutations(testCtx, renderpass2Group.get(),
- SharedGroupParams(
- new GroupParams
- {
- false, // bool useDynamicRendering;
- false, // bool useSecondaryCmdBuffer;
- false, // bool secondaryCmdBufferCompletelyContainsDynamicRenderpass;
- vk::PipelineConstructionType(0) // placeholder // PipelineConstructionType pipelineConstructionType;
- }));
+ de::MovePtr<tcu::TestCaseGroup> monolithic(new tcu::TestCaseGroup(testCtx, "monolithic", "Monolithic pipeline tests"));
+ createTests(monolithic.get(), constructGroupParams(baseGroupParams, vk::PIPELINE_CONSTRUCTION_TYPE_MONOLITHIC));
+ parentGroup->addChild(monolithic.release());
#ifndef CTS_USES_VULKANSC
- de::MovePtr<tcu::TestCaseGroup> dynamicRenderingGroup(new tcu::TestCaseGroup(testCtx, "dynamic_rendering", "Draw using VK_KHR_dynamic_rendering"));
- de::MovePtr<tcu::TestCaseGroup> drPrimaryCmdBuffGroup(new tcu::TestCaseGroup(testCtx, "primary_cmd_buff", "Draw using Draw commands are recorded in primary command buffer"));
- createPipelineConstructionTypePermutations(testCtx, drPrimaryCmdBuffGroup.get(),
- SharedGroupParams(
- new GroupParams
- {
- true, // bool useDynamicRendering;
- false, // bool useSecondaryCmdBuffer;
- false, // bool secondaryCmdBufferCompletelyContainsDynamicRenderpass;
- vk::PipelineConstructionType(0) // placeholder // PipelineConstructionType pipelineConstructionType;
- }));
- de::MovePtr<tcu::TestCaseGroup> drPartialSecondaryCmdBuffGroup(createTestGroup(testCtx, "partial_secondary_cmd_buff", "Secondary command buffer doesn't include begin/endRendering", createTests,
- SharedGroupParams(
- new GroupParams
- {
- true, // bool useDynamicRendering;
- true, // bool useSecondaryCmdBuffer;
- false, // bool secondaryCmdBufferCompletelyContainsDynamicRenderpass;
- vk::PIPELINE_CONSTRUCTION_TYPE_MONOLITHIC, // PipelineConstructionType pipelineConstructionType;
- })));
- de::MovePtr<tcu::TestCaseGroup> drCompleteSecondaryCmdBuffGroup(createTestGroup(testCtx, "complete_secondary_cmd_buff", "Secondary command buffer contains completely dynamic renderpass", createTests,
- SharedGroupParams(
- new GroupParams
+ de::MovePtr<tcu::TestCaseGroup> pipelineLibrary(new tcu::TestCaseGroup(testCtx, "pipeline_library", "Graphics pipeline library tests"));
+ de::MovePtr<tcu::TestCaseGroup> fastLinkedLibrary(new tcu::TestCaseGroup(testCtx, "fast_linked_library", "Fast linked graphics pipeline library tests"));
+
+ // repeat tests but using different pipeline construction types
+ createTests(pipelineLibrary.get(), constructGroupParams(baseGroupParams, vk::PIPELINE_CONSTRUCTION_TYPE_LINK_TIME_OPTIMIZED_LIBRARY));
+ createTests(fastLinkedLibrary.get(), constructGroupParams(baseGroupParams, vk::PIPELINE_CONSTRUCTION_TYPE_FAST_LINKED_LIBRARY));
+
+ parentGroup->addChild(pipelineLibrary.release());
+ parentGroup->addChild(fastLinkedLibrary.release());
+#endif // CTS_USES_VULKANSC
+}
+
+#ifndef CTS_USES_VULKANSC
+void createDynamicRenderingPermutations(tcu::TestCaseGroup* parentGroup)
+{
+ tcu::TestContext& testCtx = parentGroup->getTestContext();
+
+ auto constructGroupParams = [](bool useSecondaryCmdBuffer, bool secondaryCmdBufferCompletelyContainsDynamicRenderpass)
+ {
+ return SharedGroupParams(new GroupParams
{
- true, // bool useDynamicRendering;
- true, // bool useSecondaryCmdBuffer;
- true, // bool secondaryCmdBufferCompletelyContainsDynamicRenderpass;
- vk::PIPELINE_CONSTRUCTION_TYPE_MONOLITHIC, // PipelineConstructionType pipelineConstructionType;
- })));
-
- dynamicRenderingGroup->addChild(drPrimaryCmdBuffGroup.release());
- dynamicRenderingGroup->addChild(drPartialSecondaryCmdBuffGroup.release());
- dynamicRenderingGroup->addChild(drCompleteSecondaryCmdBuffGroup.release());
+ true, // bool useDynamicRendering;
+ useSecondaryCmdBuffer, // bool useSecondaryCmdBuffer;
+ secondaryCmdBufferCompletelyContainsDynamicRenderpass, // bool secondaryCmdBufferCompletelyContainsDynamicRenderpass;
+ vk::PIPELINE_CONSTRUCTION_TYPE_MONOLITHIC, // PipelineConstructionType pipelineConstructionType;
+ });
+ };
+
+ de::MovePtr<tcu::TestCaseGroup> drPrimaryCmdBuffGroup (new tcu::TestCaseGroup(testCtx, "primary_cmd_buff", "Draw using Draw commands are recorded in primary command buffer"));
+ de::MovePtr<tcu::TestCaseGroup> drPartialSecondaryCmdBuffGroup (new tcu::TestCaseGroup(testCtx, "partial_secondary_cmd_buff", "Secondary command buffer doesn't include begin/endRendering"));
+ de::MovePtr<tcu::TestCaseGroup> drCompleteSecondaryCmdBuffGroup (new tcu::TestCaseGroup(testCtx, "complete_secondary_cmd_buff", "Secondary command buffer contains completely dynamic renderpass"));
+
+ // repeat tests but with different location of dynamic rendering commands
+ createPipelineConstructionTypePermutations(drPrimaryCmdBuffGroup.get(), constructGroupParams(false, false));
+ createTests(drPartialSecondaryCmdBuffGroup.get(), constructGroupParams(true, false));
+ createTests(drCompleteSecondaryCmdBuffGroup.get(), constructGroupParams(true, true));
+
+ parentGroup->addChild(drPrimaryCmdBuffGroup.release());
+ parentGroup->addChild(drPartialSecondaryCmdBuffGroup.release());
+ parentGroup->addChild(drCompleteSecondaryCmdBuffGroup.release());
+}
#endif // CTS_USES_VULKANSC
+} // anonymous
+
+tcu::TestCaseGroup* createTests (tcu::TestContext& testCtx)
+{
+ de::MovePtr<tcu::TestCaseGroup> mainGroup (new tcu::TestCaseGroup(testCtx, "fragment_shading_rate", "Fragment shading rate tests"));
+ de::MovePtr<tcu::TestCaseGroup> renderpass2Group (createTestGroup(testCtx, "renderpass2", "Draw using render pass object",
+ createPipelineConstructionTypePermutations,
+ SharedGroupParams(new GroupParams
+ {
+ false, // bool useDynamicRendering;
+ false, // bool useSecondaryCmdBuffer;
+ false, // bool secondaryCmdBufferCompletelyContainsDynamicRenderpass;
+ vk::PipelineConstructionType(0) // placeholder // PipelineConstructionType pipelineConstructionType;
+ })));
mainGroup->addChild(renderpass2Group.release());
+
#ifndef CTS_USES_VULKANSC
+ de::MovePtr<tcu::TestCaseGroup> dynamicRenderingGroup(createTestGroup(testCtx, "dynamic_rendering", "Draw using VK_KHR_dynamic_rendering", createDynamicRenderingPermutations));
mainGroup->addChild(dynamicRenderingGroup.release());
#endif // CTS_USES_VULKANSC
--
2.36.0.windows.1