Speed up hierarchy traversal, part 2
authorJari Komppa <jari.komppa@siru.fi>
Wed, 31 Jul 2019 10:29:15 +0000 (13:29 +0300)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Thu, 22 Aug 2019 11:36:29 +0000 (07:36 -0400)
Some of the tests do premature heavy work during test hierarchy
traversal, meaning that they waste time regardless of whether the tests
are run or not. These changes move some of that work to later stage of
test run, or otherwise speed things up a bit.

Affects:

dEQP-VK.pipeline.stencil.*
dEQP-VK.synchronization.cross_instance.*
dEQP-VK.synchronization.op.multi_queue.*
dEQP-VK.transform_feedback.fuzz.*

Components: Vulkan

VK-GL-CTS issue: 1830

Change-Id: I1c124cbf17068e56375ef2e467036e959cde8aa4

external/vulkancts/modules/vulkan/pipeline/vktPipelineStencilTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationMultiQueueTests.cpp
external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutCase.cpp
external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutCase.hpp
external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutTests.cpp

index 0aae428..9b36392 100644 (file)
@@ -826,15 +826,6 @@ tcu::TestStatus StencilTestInstance::verifyImage (void)
 
 // Utilities for test names
 
-std::string getShortName (VkCompareOp compareOp)
-{
-       const std::string  fullName = getCompareOpName(compareOp);
-
-       DE_ASSERT(de::beginsWith(fullName, "VK_COMPARE_OP_"));
-
-       return de::toLower(fullName.substr(14));
-}
-
 const char* getShortName (VkStencilOp stencilOp)
 {
        switch (stencilOp)
@@ -886,6 +877,21 @@ tcu::TestCaseGroup* createStencilTests (tcu::TestContext& testCtx)
                VK_FORMAT_D32_SFLOAT_S8_UINT
        };
 
+       DE_STATIC_ASSERT(DE_LENGTH_OF_ARRAY(compareOps) == 8);
+       DE_STATIC_ASSERT(vk::VK_COMPARE_OP_LAST == 8);
+
+       static const char* compareOpNames[8] =
+       {
+               "comp_never",
+               "comp_less",
+               "comp_equal",
+               "comp_less_or_equal",
+               "comp_greater",
+               "comp_not_equal",
+               "comp_greater_or_equal",
+               "comp_always"
+       };
+
        de::MovePtr<tcu::TestCaseGroup>         stencilTests                            (new tcu::TestCaseGroup(testCtx, "stencil", "Stencil tests"));
        de::MovePtr<tcu::TestCaseGroup>         noColorAttachmentTests          (new tcu::TestCaseGroup(testCtx, "nocolor", "Stencil tests with no color attachment"));
        const bool                                                      colorAttachmentEnabled[]        = { true, false };
@@ -958,7 +964,7 @@ tcu::TestCaseGroup* createStencilTests (tcu::TestContext& testCtx)
 
                                                        // Iterate back set of stencil state in random order
                                                        const VkStencilOpState  stencilStateBack        = stencilOpItr.next();
-                                                       const std::string               caseName                        = std::string("comp_") + getShortName(compareOps[compareOpNdx]);
+                                                       const std::string               caseName                        = compareOpNames[compareOpNdx];
                                                        const std::string               caseDesc                        = getStencilStateSetDescription(stencilStateFront, stencilStateBack);
 
                                                        dFailOpTest->addChild(new StencilTest(testCtx, caseName, caseDesc, stencilFormat, stencilStateFront, stencilStateBack, colorEnabled));
index bd2d5f4..68cbca3 100644 (file)
@@ -1381,11 +1381,10 @@ static void createTests (tcu::TestCaseGroup* group)
 
                                for (size_t caseNdx = 0; caseNdx < DE_LENGTH_OF_ARRAY(cases); caseNdx++)
                                {
-                                       std::string     name= getResourceName(resource) + cases[caseNdx].nameSuffix;
-
                                        if (isResourceSupported(writeOp, resource) && isResourceSupported(readOp, resource))
                                        {
-                                               const TestConfig config (resource, writeOp, readOp, cases[caseNdx].memoryType, cases[caseNdx].semaphoreType, dedicated);
+                                               const TestConfig        config  (resource, writeOp, readOp, cases[caseNdx].memoryType, cases[caseNdx].semaphoreType, dedicated);
+                                               std::string                     name    = getResourceName(resource) + cases[caseNdx].nameSuffix;
 
                                                opGroup->addChild(new InstanceFactory1<SharingTestInstance, TestConfig, Progs>(testCtx, tcu::NODETYPE_SELF_VALIDATE,  name, "", Progs(), config));
                                                empty = false;
index 8d83086..bfa2f13 100644 (file)
@@ -553,20 +553,20 @@ void createTests (tcu::TestCaseGroup* group, PipelineCacheData* pipelineCacheDat
                        for (int resourceNdx = 0; resourceNdx < DE_LENGTH_OF_ARRAY(s_resources); ++resourceNdx)
                        {
                                const ResourceDescription&      resource        = s_resources[resourceNdx];
-                               std::string                                     name            = getResourceName(resource);
-                               VkSharingMode                           sharingMode = VK_SHARING_MODE_EXCLUSIVE;
-
-                               // queue family sharing mode used for resource
-                               if (optionNdx)
-                               {
-                                       name += "_concurrent";
-                                       sharingMode = VK_SHARING_MODE_CONCURRENT;
-                               }
-                               else
-                                       name += "_exclusive";
-
                                if (isResourceSupported(writeOp, resource) && isResourceSupported(readOp, resource))
                                {
+                                       std::string                                     name            = getResourceName(resource);
+                                       VkSharingMode                           sharingMode = VK_SHARING_MODE_EXCLUSIVE;
+
+                                       // queue family sharing mode used for resource
+                                       if (optionNdx)
+                                       {
+                                               name += "_concurrent";
+                                               sharingMode = VK_SHARING_MODE_CONCURRENT;
+                                       }
+                                       else
+                                               name += "_exclusive";
+
                                        opGroup->addChild(new BaseTestCase(testCtx, name, "", groups[groupNdx].syncPrimitive, resource, writeOp, readOp, sharingMode, *pipelineCacheData));
                                        empty = false;
                                }
index ad70d71..5b9e0a0 100644 (file)
@@ -1946,7 +1946,7 @@ TestInstance* InterfaceBlockCase::createInstance (Context& context) const
        return new InterfaceBlockCaseInstance(context, m_interfaceLayout, m_blockPointers, m_data, m_tfBufBindingOffsets, m_tfBufBindingSizes, m_locationsRequired, m_testStageFlags);
 }
 
-void InterfaceBlockCase::init (void)
+void InterfaceBlockCase::delayedInit (void)
 {
        BufferGeneralMapping    xfbBufferSize;
        std::string                             notSupportedComment;
index 5043226..04e33bf 100644 (file)
@@ -324,12 +324,11 @@ public:
                                                                                                                 bool                                   shuffleInterfaceMembers = false);
                                                        ~InterfaceBlockCase                     (void);
 
+       virtual void                    delayedInit                                     (void);
        virtual void                    initPrograms                            (vk::SourceCollections& programCollection) const;
        virtual TestInstance*   createInstance                          (Context&                               context) const;
 
 protected:
-       void                                    init                                            (void);
-
        ShaderInterface                 m_interface;
        MatrixLoadFlags                 m_matrixLoadFlag;
        TestStageFlags                  m_testStageFlags;
index 3625629..bcc4d36 100644 (file)
@@ -67,8 +67,6 @@ public:
                        block.setArraySize(numInstances);
                        block.setInstanceName("block");
                }
-
-               init();
        }
 };
 
@@ -108,8 +106,6 @@ public:
                        block.setInstanceName("block");
                        block.setArraySize(numInstances);
                }
-
-               init();
        }
 };
 
@@ -141,8 +137,6 @@ public:
                        block.setInstanceName("block");
                        block.setArraySize(numInstances);
                }
-
-               init();
        }
 };
 
@@ -179,8 +173,6 @@ public:
                        block.setInstanceName("block");
                        block.setArraySize(numInstances);
                }
-
-               init();
        }
 };
 
@@ -215,8 +207,6 @@ public:
                        block.setInstanceName("block");
                        block.setArraySize(numInstances);
                }
-
-               init();
        }
 };
 
@@ -253,8 +243,6 @@ public:
                        blockA.setArraySize(numInstances);
                        blockB.setArraySize(numInstances);
                }
-
-               init();
        }
 };
 
@@ -299,8 +287,6 @@ public:
                        blockA.setArraySize(numInstances);
                        blockB.setArraySize(numInstances);
                }
-
-               init();
        }
 };
 
@@ -357,8 +343,6 @@ public:
                        blockA.setArraySize(numInstances);
                        blockB.setArraySize(numInstances);
                }
-
-               init();
        }
 };
 
@@ -389,8 +373,6 @@ public:
                        block.setInstanceName("block");
                        block.setArraySize(numInstances);
                }
-
-               init();
        }
 };