tests: Integrate command pools into tests
diff --git a/layers/CMakeLists.txt b/layers/CMakeLists.txt
index 98b3fc6..ea08e4d 100644
--- a/layers/CMakeLists.txt
+++ b/layers/CMakeLists.txt
@@ -138,7 +138,7 @@
 add_vk_layer(ShaderChecker shader_checker.cpp vk_layer_table.cpp)
 add_vk_layer(Image image.cpp vk_layer_table.cpp)
 # TODO: Re-enable after ParamChecker updated
-#add_vk_layer(ParamChecker param_checker.cpp vk_layer_debug_marker_table.cpp vk_layer_table.cpp)
+add_vk_layer(ParamChecker param_checker.cpp vk_layer_debug_marker_table.cpp vk_layer_table.cpp)
 #add_vk_layer(ScreenShot screenshot.cpp vk_layer_table.cpp)
 # generated
 add_vk_layer(Generic generic_layer.cpp vk_layer_table.cpp)
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index 17ccad4..8a7c672 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -4665,20 +4665,8 @@
         "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pDsState->sType, is unrecognized enumerator");
         return false;
     }
-<<<<<<< HEAD
-    if(pCreateInfo->pDsState->depthCompareOp < VK_COMPARE_OP_BEGIN_RANGE ||
-        pCreateInfo->pDsState->depthCompareOp > VK_COMPARE_OP_END_RANGE)
-=======
-    if(pCreateInfo->pDepthStencilState->format < VK_FORMAT_BEGIN_RANGE ||
-        pCreateInfo->pDepthStencilState->format > VK_FORMAT_END_RANGE)
-    {
-        log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
-        "vkCreateGraphicsPipeline parameter, VkFormat pCreateInfo->pDsState->format, is unrecognized enumerator");
-        return false;
-    }
     if(pCreateInfo->pDepthStencilState->depthCompareOp < VK_COMPARE_OP_BEGIN_RANGE ||
         pCreateInfo->pDepthStencilState->depthCompareOp > VK_COMPARE_OP_END_RANGE)
->>>>>>> fd61c93... Bug 14224: Remove abbreviations on some API symbols
     {
         log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
         "vkCreateGraphicsPipeline parameter, VkCompareOp pCreateInfo->pDsState->depthCompareOp, is unrecognized enumerator");
@@ -4817,24 +4805,13 @@
     }
     if(!ValidateEnumerator((VkChannelFlagBits)pCreateInfo->pColorBlendState->pAttachments->channelWriteMask))
     {
-<<<<<<< HEAD
-        std::string reason = "vkCreateGraphicsPipeline parameter, VkChannelFlags pCreateInfo->pCbState->pAttachments->channelWriteMask, is " + EnumeratorString((VkChannelFlagBits)pCreateInfo->pCbState->pAttachments->channelWriteMask);
-        log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str());
-=======
         std::string reason = "vkCreateGraphicsPipeline parameter, VkChannelFlags pCreateInfo->pCbState->pAttachments->channelWriteMask, is " + EnumeratorString((VkChannelFlagBits)pCreateInfo->pColorBlendState->pAttachments->channelWriteMask);
         log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str());
->>>>>>> fd61c93... Bug 14224: Remove abbreviations on some API symbols
         return false;
     }
     if(!ValidateEnumerator((VkPipelineCreateFlagBits)pCreateInfo->flags))
     {
         std::string reason = "vkCreateGraphicsPipeline parameter, VkPipelineCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkPipelineCreateFlagBits)pCreateInfo->flags);
-<<<<<<< HEAD
-        log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str());
-        return false;
-    }
-    if(pCreateInfo->layout.handle == 0)
-=======
         log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str());
         return false;
     }
@@ -4865,27 +4842,11 @@
     return true;
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkCreateGraphicsPipeline(
-    VkDevice device,
-    const VkGraphicsPipelineCreateInfo* pCreateInfo,
-    VkPipeline* pPipeline)
-{
-    PreCreateGraphicsPipeline(device, pCreateInfo);
-
-    VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateGraphicsPipeline(device, pCreateInfo, pPipeline);
-
-    PostCreateGraphicsPipeline(device, pPipeline, result);
-
-    return result;
-}
-
 bool PostDestroyPipeline(
     VkDevice device,
     VkPipeline pipeline,
     VkResult result)
 {
-
-
     if(result != VK_SUCCESS)
     {
         std::string reason = "vkDestroyPipeline parameter, VkResult result, is " + EnumeratorString(result);
@@ -4896,17 +4857,6 @@
     return true;
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkDestroyPipeline(
-    VkDevice device,
-    VkPipeline pipeline)
-{
-    VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyPipeline(device, pipeline);
-
-    PostDestroyPipeline(device, pipeline, result);
-
-    return result;
-}
-
 bool PreCreateGraphicsPipelineDerivative(
     VkDevice device,
     const VkGraphicsPipelineCreateInfo* pCreateInfo)
@@ -5135,13 +5085,6 @@
         "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pDsState->sType, is unrecognized enumerator");
         return false;
     }
-    if(pCreateInfo->pDepthStencilState->format < VK_FORMAT_BEGIN_RANGE ||
-        pCreateInfo->pDepthStencilState->format > VK_FORMAT_END_RANGE)
-    {
-        log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
-        "vkCreateGraphicsPipelineDerivative parameter, VkFormat pCreateInfo->pDsState->format, is unrecognized enumerator");
-        return false;
-    }
     if(pCreateInfo->pDepthStencilState->depthCompareOp < VK_COMPARE_OP_BEGIN_RANGE ||
         pCreateInfo->pDepthStencilState->depthCompareOp > VK_COMPARE_OP_END_RANGE)
     {
@@ -5321,21 +5264,6 @@
     return true;
 }
 
-VK_LAYER_EXPORT VkResult VKAPI vkCreateGraphicsPipelineDerivative(
-    VkDevice device,
-    const VkGraphicsPipelineCreateInfo* pCreateInfo,
-    VkPipeline basePipeline,
-    VkPipeline* pPipeline)
-{
-    PreCreateGraphicsPipelineDerivative(device, pCreateInfo);
-
-    VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateGraphicsPipelineDerivative(device, pCreateInfo, basePipeline, pPipeline);
-
-    PostCreateGraphicsPipelineDerivative(device, basePipeline, pPipeline, result);
-
-    return result;
-}
-
 bool PreCreateComputePipeline(
     VkDevice device,
     const VkComputePipelineCreateInfo* pCreateInfo)
@@ -5409,7 +5337,6 @@
     }
 
     if(result != VK_SUCCESS)
->>>>>>> fd61c93... Bug 14224: Remove abbreviations on some API symbols
     {
         log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
         "vkCreateGraphicsPipeline parameter, VkPipelineLayout pCreateInfo->layout, is null pointer");
@@ -5419,21 +5346,6 @@
     return true;
 }
 
-bool PostDestroyPipeline(
-    VkDevice device,
-    VkPipeline pipeline,
-    VkResult result)
-{
-    if(result != VK_SUCCESS)
-    {
-        std::string reason = "vkDestroyPipeline parameter, VkResult result, is " + EnumeratorString(result);
-        log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str());
-        return false;
-    }
-
-    return true;
-}
-
 VK_LAYER_EXPORT VkResult VKAPI vkDestroyPipeline(
     VkDevice device,
     VkPipeline pipeline)
@@ -5445,29 +5357,6 @@
     return result;
 }
 
-bool PostCreateGraphicsPipeline(
-    VkDevice device,
-    VkPipeline* pPipeline,
-    VkResult result)
-{
-
-    if(pPipeline == nullptr)
-    {
-        log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
-        "vkCreateGraphicsPipeline parameter, VkPipeline* pPipeline, is null pointer");
-        return false;
-    }
-
-    if(result != VK_SUCCESS)
-    {
-        std::string reason = "vkCreateGraphicsPipeline parameter, VkResult result, is " + EnumeratorString(result);
-        log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", reason.c_str());
-        return false;
-    }
-
-    return true;
-}
-
 //TODO handle count > 1
 void PostCreateGraphicsPipeline(
     VkDevice device,
@@ -6854,9 +6743,10 @@
 }
 
 VK_LAYER_EXPORT VkResult VKAPI vkResetCommandBuffer(
-    VkCmdBuffer cmdBuffer)
+    VkCmdBuffer cmdBuffer,
+    VkCmdBufferResetFlags flags)
 {
-    VkResult result = get_dispatch_table(pc_device_table_map, cmdBuffer)->ResetCommandBuffer(cmdBuffer);
+    VkResult result = get_dispatch_table(pc_device_table_map, cmdBuffer)->ResetCommandBuffer(cmdBuffer, flags);
 
     PostResetCommandBuffer(cmdBuffer, result);
 
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;