VulkanUnitTests: Call vkDestroyDevice()
The system vulkan driver can get sulky if you don't free memory.
Bug: b/123749916
Change-Id: I9bf2de63a788200c401b41fa3efdfb36f3c15245
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27772
Presubmit-Ready: Ben Clayton <headlessclayton@gmail.com>
Tested-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/tests/VulkanUnitTests/Device.cpp b/tests/VulkanUnitTests/Device.cpp
index fd2ad95..098e736 100644
--- a/tests/VulkanUnitTests/Device.cpp
+++ b/tests/VulkanUnitTests/Device.cpp
@@ -29,10 +29,19 @@
physicalDevice(physicalDevice),
queueFamilyIndex(queueFamilyIndex) {}
+Device::~Device()
+{
+ if (device != nullptr)
+ {
+ driver->vkDeviceWaitIdle(device);
+ driver->vkDestroyDevice(device, nullptr);
+ }
+}
+
bool Device::IsValid() const { return device != nullptr; }
VkResult Device::CreateComputeDevice(
- Driver const *driver, VkInstance instance, Device *out)
+ Driver const *driver, VkInstance instance, std::unique_ptr<Device> &out)
{
VkResult result;
@@ -77,13 +86,13 @@
};
VkDevice device;
- result = driver->vkCreateDevice(physicalDevice, &deviceCreateInfo, 0, &device);
+ result = driver->vkCreateDevice(physicalDevice, &deviceCreateInfo, nullptr, &device);
if (result != VK_SUCCESS)
{
return result;
}
- *out = Device(driver, device, physicalDevice, static_cast<uint32_t>(queueFamilyIndex));
+ out.reset(new Device(driver, device, physicalDevice, static_cast<uint32_t>(queueFamilyIndex)));
return VK_SUCCESS;
}