tests:Cleanup DSUsageBitsErrors on early return
authorTobin Ehlis <tobine@google.com>
Fri, 3 Nov 2017 20:53:37 +0000 (14:53 -0600)
committerTobin Ehlis <tobine@google.com>
Mon, 6 Nov 2017 23:29:51 +0000 (16:29 -0700)
If we can't find a good format, make sure to cleanup all of the objects
allocated thus far in the DSUsageBitsErrors test.

tests/layer_validation_tests.cpp

index 83a202e..cbc155e 100644 (file)
@@ -11621,6 +11621,9 @@ TEST_F(VkLayerTest, DSUsageBitsErrors) {
     vkGetBufferMemoryRequirements(m_device->device(), storage_texel_buffer, &mem_reqs);
     pass = m_device->phy().set_memory_type(mem_reqs.memoryTypeBits, &mem_alloc_info, 0);
     if (!pass) {
+        for (uint32_t i = 0; i < VK_DESCRIPTOR_TYPE_RANGE_SIZE; ++i) {
+            vkDestroyDescriptorSetLayout(m_device->device(), ds_layouts[i], NULL);
+        }
         vkDestroyBuffer(m_device->device(), buffer, NULL);
         vkDestroyBufferView(m_device->device(), buff_view, NULL);
         vkFreeMemory(m_device->device(), mem, NULL);
@@ -11656,6 +11659,17 @@ TEST_F(VkLayerTest, DSUsageBitsErrors) {
         }
     }
     if (image_ci.format == VK_FORMAT_UNDEFINED) {
+        // Cleanup before early return
+        for (uint32_t i = 0; i < VK_DESCRIPTOR_TYPE_RANGE_SIZE; ++i) {
+            vkDestroyDescriptorSetLayout(m_device->device(), ds_layouts[i], NULL);
+        }
+        vkDestroyBuffer(m_device->device(), buffer, NULL);
+        vkDestroyBuffer(m_device->device(), storage_texel_buffer, NULL);
+        vkDestroyBufferView(m_device->device(), buff_view, NULL);
+        vkDestroyBufferView(m_device->device(), storage_texel_buffer_view, NULL);
+        vkFreeMemory(m_device->device(), mem, NULL);
+        vkFreeMemory(m_device->device(), storage_texel_buffer_mem, NULL);
+        vkDestroyDescriptorPool(m_device->device(), ds_pool, NULL);
         return;
     }