tests: Add VkCommandPoolObj wrapper class
Add object to wrap VkCommandPool handle in testing framework. Tests can
now create a custom command pool that works with the VkCommandBufferObj
wrapper. Add utility function to VkDeviceObj that finds a queue family which
doesn't support a given capability.
Change-Id: I2f005249cc8650acf632f83ae5171de1b4509c8c
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index 40f3507..db824dd 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -7338,7 +7338,7 @@
VkCommandBufferAllocateInfo cmd = {};
cmd.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
cmd.pNext = NULL;
- cmd.commandPool = m_commandPool;
+ cmd.commandPool = m_commandPool->handle();
cmd.level = VK_COMMAND_BUFFER_LEVEL_SECONDARY;
cmd.commandBufferCount = 1;
@@ -7359,7 +7359,7 @@
vkBeginCommandBuffer(draw_cmd, &cmd_buf_info);
m_errorMonitor->VerifyFound();
- vkFreeCommandBuffers(m_device->device(), m_commandPool, 1, &draw_cmd);
+ vkFreeCommandBuffers(m_device->device(), m_commandPool->handle(), 1, &draw_cmd);
}
TEST_F(VkLayerTest, CommandBufferResetErrors) {
@@ -9216,13 +9216,7 @@
// Create command pool with incompatible queueflags
const std::vector<VkQueueFamilyProperties> queue_props = m_device->queue_props;
- uint32_t queue_family_index = UINT32_MAX;
- for (uint32_t i = 0; i < queue_props.size(); i++) {
- if ((queue_props[i].queueFlags & VK_QUEUE_COMPUTE_BIT) == 0) {
- queue_family_index = i;
- break;
- }
- }
+ uint32_t queue_family_index = m_device->QueueFamilyWithoutCapabilities(VK_QUEUE_COMPUTE_BIT);
if (queue_family_index == UINT32_MAX) {
printf(" No non-compute queue found; skipped.\n");
return; // NOTE: this exits the test function!
@@ -12136,7 +12130,7 @@
VkCommandBufferAllocateInfo command_buffer_allocate_info = {};
command_buffer_allocate_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
- command_buffer_allocate_info.commandPool = m_commandPool;
+ command_buffer_allocate_info.commandPool = m_commandPool->handle();
command_buffer_allocate_info.level = VK_COMMAND_BUFFER_LEVEL_SECONDARY;
command_buffer_allocate_info.commandBufferCount = 1;
@@ -12206,7 +12200,7 @@
alloc_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
alloc_info.pNext = NULL;
alloc_info.commandBufferCount = 2;
- alloc_info.commandPool = m_commandPool;
+ alloc_info.commandPool = m_commandPool->handle();
alloc_info.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
vkAllocateCommandBuffers(m_device->device(), &alloc_info, cmd_bufs);
@@ -13161,7 +13155,7 @@
VkCommandBufferAllocateInfo cbai = {};
cbai.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
- cbai.commandPool = m_commandPool;
+ cbai.commandPool = m_commandPool->handle();
cbai.level = VK_COMMAND_BUFFER_LEVEL_SECONDARY;
cbai.commandBufferCount = 1;
@@ -18303,7 +18297,7 @@
VkCommandBufferAllocateInfo command_buffer_allocate_info = {};
command_buffer_allocate_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
- command_buffer_allocate_info.commandPool = m_commandPool;
+ command_buffer_allocate_info.commandPool = m_commandPool->handle();
command_buffer_allocate_info.level = VK_COMMAND_BUFFER_LEVEL_SECONDARY;
command_buffer_allocate_info.commandBufferCount = 1;
@@ -18347,7 +18341,7 @@
// Allocate a secondary and primary cmd buffer
VkCommandBufferAllocateInfo command_buffer_allocate_info = {};
command_buffer_allocate_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
- command_buffer_allocate_info.commandPool = m_commandPool;
+ command_buffer_allocate_info.commandPool = m_commandPool->handle();
command_buffer_allocate_info.level = VK_COMMAND_BUFFER_LEVEL_SECONDARY;
command_buffer_allocate_info.commandBufferCount = 1;
@@ -18419,8 +18413,8 @@
m_errorMonitor->VerifyNotFound();
err = vkDeviceWaitIdle(m_device->device());
ASSERT_VK_SUCCESS(err);
- vkFreeCommandBuffers(m_device->device(), m_commandPool, 1, &secondary_command_buffer);
- vkFreeCommandBuffers(m_device->device(), m_commandPool, 1, &primary_command_buffer);
+ vkFreeCommandBuffers(m_device->device(), m_commandPool->handle(), 1, &secondary_command_buffer);
+ vkFreeCommandBuffers(m_device->device(), m_commandPool->handle(), 1, &primary_command_buffer);
}
// This is a positive test. No failures are expected.
@@ -19250,7 +19244,7 @@
alloc_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
alloc_info.pNext = NULL;
alloc_info.commandBufferCount = 4;
- alloc_info.commandPool = m_commandPool;
+ alloc_info.commandPool = m_commandPool->handle();
alloc_info.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
vkAllocateCommandBuffers(m_device->device(), &alloc_info, cmd_bufs);
VkImageObj image(m_device);
@@ -22777,7 +22771,7 @@
alloc_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
alloc_info.pNext = NULL;
alloc_info.commandBufferCount = 1;
- alloc_info.commandPool = m_commandPool;
+ alloc_info.commandPool = m_commandPool->handle();
alloc_info.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
vkAllocateCommandBuffers(m_device->device(), &alloc_info, &cmd_buf);