Commit f4916384 by Antonio Maiorano

Make vk-unittests load/unload swiftshader only once per suite

Rather than load/unload the driver for each test run, only do so once per suite. This is mainly a workaround for the memory leak bug reported at b/173733181; however, it also speeds up running the tests. Bug: b/173733181 Change-Id: I7d47f8eee2fe8010bbf06845877649abf6761256 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/50608 Kokoro-Result: kokoro <noreply+kokoro@google.com> Tested-by: 's avatarAntonio Maiorano <amaiorano@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent f2ab65b0
...@@ -33,15 +33,60 @@ size_t alignUp(size_t val, size_t alignment) ...@@ -33,15 +33,60 @@ size_t alignUp(size_t val, size_t alignment)
} }
} // anonymous namespace } // anonymous namespace
class SwiftShaderVulkanTest : public testing::Test enum class LoadDriver
{ {
PerSuite,
PerTest
}; };
TEST_F(SwiftShaderVulkanTest, ICD_Check) template<typename TestBase, LoadDriver loadDriver>
class SwiftShaderTest : public TestBase
{ {
Driver driver; protected:
ASSERT_TRUE(driver.loadSwiftShader()); static Driver driver;
static void SetUpTestSuite()
{
if(loadDriver == LoadDriver::PerSuite)
{
ASSERT_TRUE(driver.loadSwiftShader());
}
}
static void TearDownTestSuite()
{
if(loadDriver == LoadDriver::PerSuite)
{
driver.unload();
}
}
virtual void SetUp()
{
if(loadDriver == LoadDriver::PerTest)
{
ASSERT_TRUE(driver.loadSwiftShader());
}
}
virtual void TearDown()
{
if(loadDriver == LoadDriver::PerTest)
{
driver.unload();
}
}
};
template<typename TestBase, LoadDriver loadDriver>
Driver SwiftShaderTest<TestBase, loadDriver>::driver;
class SwiftShaderVulkanTest : public SwiftShaderTest<testing::Test, LoadDriver::PerTest>
{
};
TEST_F(SwiftShaderVulkanTest, ICD_Check)
{
auto createInstance = driver.vk_icdGetInstanceProcAddr(VK_NULL_HANDLE, "vkCreateInstance"); auto createInstance = driver.vk_icdGetInstanceProcAddr(VK_NULL_HANDLE, "vkCreateInstance");
EXPECT_NE(createInstance, nullptr); EXPECT_NE(createInstance, nullptr);
...@@ -62,9 +107,6 @@ TEST_F(SwiftShaderVulkanTest, ICD_Check) ...@@ -62,9 +107,6 @@ TEST_F(SwiftShaderVulkanTest, ICD_Check)
TEST_F(SwiftShaderVulkanTest, Version) TEST_F(SwiftShaderVulkanTest, Version)
{ {
Driver driver;
ASSERT_TRUE(driver.loadSwiftShader());
uint32_t apiVersion = 0; uint32_t apiVersion = 0;
VkResult result = driver.vkEnumerateInstanceVersion(&apiVersion); VkResult result = driver.vkEnumerateInstanceVersion(&apiVersion);
EXPECT_EQ(apiVersion, (uint32_t)VK_API_VERSION_1_1); EXPECT_EQ(apiVersion, (uint32_t)VK_API_VERSION_1_1);
...@@ -118,9 +160,6 @@ TEST_F(SwiftShaderVulkanTest, Version) ...@@ -118,9 +160,6 @@ TEST_F(SwiftShaderVulkanTest, Version)
/* /*
TEST_F(SwiftShaderVulkanTest, UnsupportedDeviceExtension_DISABLED) TEST_F(SwiftShaderVulkanTest, UnsupportedDeviceExtension_DISABLED)
{ {
Driver driver;
ASSERT_TRUE(driver.loadSwiftShader());
uint32_t apiVersion = 0; uint32_t apiVersion = 0;
VkResult result = driver.vkEnumerateInstanceVersion(&apiVersion); VkResult result = driver.vkEnumerateInstanceVersion(&apiVersion);
EXPECT_EQ(apiVersion, (uint32_t)VK_API_VERSION_1_1); EXPECT_EQ(apiVersion, (uint32_t)VK_API_VERSION_1_1);
...@@ -257,7 +296,7 @@ struct ComputeParams ...@@ -257,7 +296,7 @@ struct ComputeParams
// Base class for compute tests that read from an input buffer and write to an // Base class for compute tests that read from an input buffer and write to an
// output buffer of same length. // output buffer of same length.
class SwiftShaderVulkanBufferToBufferComputeTest : public testing::TestWithParam<ComputeParams> class SwiftShaderVulkanBufferToBufferComputeTest : public SwiftShaderTest<testing::TestWithParam<ComputeParams>, LoadDriver::PerSuite>
{ {
public: public:
void test(const std::string &shader, void test(const std::string &shader,
...@@ -272,9 +311,6 @@ void SwiftShaderVulkanBufferToBufferComputeTest::test( ...@@ -272,9 +311,6 @@ void SwiftShaderVulkanBufferToBufferComputeTest::test(
{ {
auto code = compileSpirv(shader.c_str()); auto code = compileSpirv(shader.c_str());
Driver driver;
ASSERT_TRUE(driver.loadSwiftShader());
const VkInstanceCreateInfo createInfo = { const VkInstanceCreateInfo createInfo = {
VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, // sType VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, // sType
nullptr, // pNext nullptr, // pNext
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment