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)
// 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)
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 };
// 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));
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;
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;
}
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;
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;
block.setArraySize(numInstances);
block.setInstanceName("block");
}
-
- init();
}
};
block.setInstanceName("block");
block.setArraySize(numInstances);
}
-
- init();
}
};
block.setInstanceName("block");
block.setArraySize(numInstances);
}
-
- init();
}
};
block.setInstanceName("block");
block.setArraySize(numInstances);
}
-
- init();
}
};
block.setInstanceName("block");
block.setArraySize(numInstances);
}
-
- init();
}
};
blockA.setArraySize(numInstances);
blockB.setArraySize(numInstances);
}
-
- init();
}
};
blockA.setArraySize(numInstances);
blockB.setArraySize(numInstances);
}
-
- init();
}
};
blockA.setArraySize(numInstances);
blockB.setArraySize(numInstances);
}
-
- init();
}
};
block.setInstanceName("block");
block.setArraySize(numInstances);
}
-
- init();
}
};