tests: Integrate command pools into tests
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index d7d0762..e169574 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -517,7 +517,8 @@
VkCmdBlitTest() :
dev_(environment->default_device()),
queue_(*dev_.graphics_queues()[0]),
- cmd_(dev_, vk_testing::CmdBuffer::create_info(dev_.graphics_queue_node_index_))
+ pool_(dev_, vk_testing::CmdPool::create_info(dev_.graphics_queue_node_index_)),
+ cmd_(dev_, vk_testing::CmdBuffer::create_info(pool_.handle()))
{
// make sure every test uses a different pattern
vk_testing::ImageChecker::hash_salt_generate();
@@ -533,6 +534,7 @@
vk_testing::Device &dev_;
vk_testing::Queue &queue_;
+ vk_testing::CmdPool pool_;
vk_testing::CmdBuffer cmd_;
std::vector<VkDeviceMemory> mem_refs_;
diff --git a/tests/vktestbinding.cpp b/tests/vktestbinding.cpp
index 7d62c77..39662da 100644
--- a/tests/vktestbinding.cpp
+++ b/tests/vktestbinding.cpp
@@ -823,6 +823,14 @@
NON_DISPATCHABLE_HANDLE_INIT(vkCreateDynamicDepthStencilState, dev, &info);
}
+NON_DISPATCHABLE_HANDLE_DTOR(CmdPool, vkDestroyCommandPool)
+
+void CmdPool::init(const Device &dev, const VkCmdPoolCreateInfo &info)
+{
+ NON_DISPATCHABLE_HANDLE_INIT(vkCreateCommandPool, dev, &info);
+}
+
+
CmdBuffer::~CmdBuffer()
{
if (initialized())
diff --git a/tests/vktestbinding.h b/tests/vktestbinding.h
index 82340d6..67c592a 100644
--- a/tests/vktestbinding.h
+++ b/tests/vktestbinding.h
@@ -60,6 +60,7 @@
class DynamicColorBlendState;
class DynamicDepthStencilState;
class CmdBuffer;
+class CmdPool;
std::vector<VkLayerProperties> GetGlobalLayers();
std::vector<VkExtensionProperties> GetGlobalExtensions();
@@ -577,6 +578,27 @@
void init(const Device &dev, const VkDynamicDepthStencilStateCreateInfo &info);
};
+class CmdPool : public internal::NonDispHandle<VkCmdPool> {
+public:
+ ~CmdPool();
+
+ explicit CmdPool() : NonDispHandle() {}
+ explicit CmdPool(const Device &dev, const VkCmdPoolCreateInfo &info) { init(dev, info); }
+
+ // vkCreateDynamicDepthStencilState()
+ void init(const Device &dev, const VkCmdPoolCreateInfo &info);
+
+ static VkCmdPoolCreateInfo create_info(uint32_t queue_family_index);
+};
+
+inline VkCmdPoolCreateInfo CmdPool::create_info(uint32_t queue_family_index)
+{
+ VkCmdPoolCreateInfo info = {};
+ info.sType = VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO;
+ info.queueFamilyIndex = queue_family_index;
+ return info;
+}
+
class CmdBuffer : public internal::Handle<VkCmdBuffer> {
public:
~CmdBuffer();
@@ -597,7 +619,7 @@
void reset(VkCmdBufferResetFlags flags);
void reset() { reset(VK_CMD_BUFFER_RESET_RELEASE_RESOURCES); }
- static VkCmdBufferCreateInfo create_info(VkCmdPool pool);
+ static VkCmdBufferCreateInfo create_info(VkCmdPool const &pool);
private:
VkDevice dev_handle_;
@@ -804,7 +826,7 @@
return copy;
}
-inline VkCmdBufferCreateInfo CmdBuffer::create_info(VkCmdPool pool)
+inline VkCmdBufferCreateInfo CmdBuffer::create_info(VkCmdPool const &pool)
{
VkCmdBufferCreateInfo info = {};
info.sType = VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO;