icd: Support for command pools
diff --git a/tests/init.cpp b/tests/init.cpp
index d298fc1..57bf875 100644
--- a/tests/init.cpp
+++ b/tests/init.cpp
@@ -490,6 +490,7 @@
{
VkResult err;
VkCmdBufferCreateInfo info = {};
+ VkCmdPool cmdPool;
VkCmdBuffer cmdBuffer;
// typedef struct VkCmdBufferCreateInfo_
@@ -500,12 +501,21 @@
// VkFlags flags;
// } VkCmdBufferCreateInfo;
+ VkCmdPoolCreateInfo cmd_pool_info;
+ cmd_pool_info.sType = VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO,
+ cmd_pool_info.pNext = NULL,
+ cmd_pool_info.queueFamilyIndex = graphics_queue_node_index;
+ cmd_pool_info.flags = 0,
+ err = vkCreateCommandPool(device(), &cmd_pool_info, &cmdPool);
+ ASSERT_VK_SUCCESS(err) << "vkCreateCommandPool failed";
+
info.sType = VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO;
- info.queueNodeIndex = graphics_queue_node_index;
+ info.cmdPool = cmdPool;
err = vkCreateCommandBuffer(device(), &info, &cmdBuffer);
ASSERT_VK_SUCCESS(err) << "vkCreateCommandBuffer failed";
ASSERT_VK_SUCCESS(vkDestroyCommandBuffer(device(), cmdBuffer));
+ ASSERT_VK_SUCCESS(vkDestroyCommandPool(device(), cmdPool));
}
TEST_F(VkTest, TestCommandBuffer) {
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index 6a593f0..ab00a9b 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -370,7 +370,7 @@
m_errorMonitor->ClearState();
// Introduce failure by calling begin again before checking fence
- vkResetCommandBuffer(cmdBuffer.handle());
+ vkResetCommandBuffer(cmdBuffer.handle(), 0);
msgFlags = m_errorMonitor->GetState(&msgString);
ASSERT_TRUE(msgFlags & VK_DBG_REPORT_ERROR_BIT) << "Did not receive an err after calling ResetCommandBuffer on an active Command Buffer";
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 3af63b4..a35befe 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -150,6 +150,7 @@
if (m_stateDepthStencil) vkDestroyDynamicDepthStencilState(device(), m_stateDepthStencil);
if (m_stateRaster) vkDestroyDynamicRasterState(device(), m_stateRaster);
if (m_cmdBuffer) vkDestroyCommandBuffer(device(), m_cmdBuffer);
+ if (m_cmdPool) vkDestroyCommandPool(device(), m_cmdPool);
if (m_framebuffer) vkDestroyFramebuffer(device(), m_framebuffer);
if (m_renderPass) vkDestroyRenderPass(device(), m_renderPass);
@@ -207,10 +208,15 @@
err = vkCreateDynamicDepthStencilState( device(), &depthStencil, &m_stateDepthStencil );
ASSERT_VK_SUCCESS( err );
- VkCmdBufferCreateInfo cmdInfo = {};
+ VkCmdPoolCreateInfo cmd_pool_info;
+ cmd_pool_info.sType = VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO,
+ cmd_pool_info.pNext = NULL,
+ cmd_pool_info.queueFamilyIndex = m_device->graphics_queue_node_index_;
+ cmd_pool_info.flags = 0,
+ err = vkCreateCommandPool(device(), &cmd_pool_info, &m_cmdPool);
+ assert(!err);
- cmdInfo.sType = VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO;
- cmdInfo.queueNodeIndex = m_device->graphics_queue_node_index_;
+ VkCmdBufferCreateInfo cmdInfo = vk_testing::CmdBuffer::create_info(m_cmdPool);
err = vkCreateCommandBuffer(device(), &cmdInfo, &m_cmdBuffer);
ASSERT_VK_SUCCESS(err) << "vkCreateCommandBuffer failed";
diff --git a/tests/vkrenderframework.h b/tests/vkrenderframework.h
index 34ef824..d00185a 100644
--- a/tests/vkrenderframework.h
+++ b/tests/vkrenderframework.h
@@ -103,6 +103,7 @@
VkPhysicalDevice objs[16];
uint32_t gpu_count;
VkDeviceObj *m_device;
+ VkCmdPool m_cmdPool;
VkCmdBuffer m_cmdBuffer;
VkRenderPass m_renderPass;
VkFramebuffer m_framebuffer;
diff --git a/tests/vktestbinding.cpp b/tests/vktestbinding.cpp
index 2f21733..7d62c77 100644
--- a/tests/vktestbinding.cpp
+++ b/tests/vktestbinding.cpp
@@ -859,9 +859,9 @@
EXPECT(vkEndCommandBuffer(handle()) == VK_SUCCESS);
}
-void CmdBuffer::reset()
+void CmdBuffer::reset(VkCmdBufferResetFlags flags)
{
- EXPECT(vkResetCommandBuffer(handle()) == VK_SUCCESS);
+ EXPECT(vkResetCommandBuffer(handle(), flags) == VK_SUCCESS);
}
}; // namespace vk_testing
diff --git a/tests/vktestbinding.h b/tests/vktestbinding.h
index 2a30ea9..82340d6 100644
--- a/tests/vktestbinding.h
+++ b/tests/vktestbinding.h
@@ -594,9 +594,10 @@
// vkEndCommandBuffer()
// vkResetCommandBuffer()
void end();
- void reset();
+ void reset(VkCmdBufferResetFlags flags);
+ void reset() { reset(VK_CMD_BUFFER_RESET_RELEASE_RESOURCES); }
- static VkCmdBufferCreateInfo create_info(uint32_t queueNodeIndex);
+ static VkCmdBufferCreateInfo create_info(VkCmdPool pool);
private:
VkDevice dev_handle_;
@@ -803,11 +804,11 @@
return copy;
}
-inline VkCmdBufferCreateInfo CmdBuffer::create_info(uint32_t queueNodeIndex)
+inline VkCmdBufferCreateInfo CmdBuffer::create_info(VkCmdPool pool)
{
VkCmdBufferCreateInfo info = {};
info.sType = VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO;
- info.queueNodeIndex = queueNodeIndex;
+ info.cmdPool = pool;
return info;
}