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, 3 Oct 2019 18:08:04 +0000 (14:08 -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
(cherry picked from commit 41527af467623bae596b2bd319b0694c11f8cbf8)

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 a33da2d..61ced5e 100644 (file)
@@ -823,15 +823,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)
@@ -883,6 +874,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 };
@@ -955,7 +961,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 5c2c3a5..4f93704 100644 (file)
@@ -1397,11 +1397,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 96207d8..1a3a3df 100644 (file)
@@ -575,20 +575,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 a43e816..87c2c7c 100644 (file)
@@ -1964,7 +1964,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();
        }
 };