render_tests: add functions to create query pools
diff --git a/tests/render_tests.cpp b/tests/render_tests.cpp
index 4d1c0a8..eebc4d3 100644
--- a/tests/render_tests.cpp
+++ b/tests/render_tests.cpp
@@ -130,6 +130,10 @@
                      XGL_GPU_MEMORY *pMem);
     void DestroyImage();
 
+    void CreateQueryPool(XGL_QUERY_TYPE type, XGL_UINT slots,
+                         XGL_QUERY_POOL *pPool, XGL_GPU_MEMORY *pMem);
+    void DestroyQueryPool(XGL_QUERY_POOL pool, XGL_GPU_MEMORY mem);
+
     void CreateImageView(XGL_IMAGE_VIEW_CREATE_INFO* pCreateInfo,
                          XGL_IMAGE_VIEW* pView);
     void DestroyImageView(XGL_IMAGE_VIEW imageView);
@@ -315,6 +319,56 @@
     ASSERT_XGL_SUCCESS(xglDestroyObject(m_image));
 }
 
+void XglRenderTest::CreateQueryPool(XGL_QUERY_TYPE type, XGL_UINT slots,
+                                    XGL_QUERY_POOL *pPool, XGL_GPU_MEMORY *pMem)
+{
+    XGL_RESULT err;
+
+    XGL_QUERY_POOL_CREATE_INFO poolCreateInfo = {};
+    poolCreateInfo.sType = XGL_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO;
+    poolCreateInfo.pNext = NULL;
+    poolCreateInfo.queryType = type;
+    poolCreateInfo.slots = slots;
+
+    err = xglCreateQueryPool(device(), &poolCreateInfo, pPool);
+    ASSERT_XGL_SUCCESS(err);
+
+    XGL_MEMORY_REQUIREMENTS mem_req;
+    XGL_UINT data_size;
+    err = xglGetObjectInfo(*pPool, XGL_INFO_TYPE_MEMORY_REQUIREMENTS,
+                           &data_size, &mem_req);
+    ASSERT_XGL_SUCCESS(err);
+    ASSERT_EQ(data_size, sizeof(mem_req));
+
+    if (!mem_req.size) {
+        *pMem = XGL_NULL_HANDLE;
+        return;
+    }
+
+    XGL_MEMORY_ALLOC_INFO mem_info;
+
+    memset(&mem_info, 0, sizeof(mem_info));
+    mem_info.sType = XGL_STRUCTURE_TYPE_MEMORY_ALLOC_INFO;
+    mem_info.allocationSize = mem_req.size;
+    mem_info.alignment = mem_req.alignment;
+    mem_info.heapCount = mem_req.heapCount;
+    memcpy(mem_info.heaps, mem_req.heaps, sizeof(XGL_UINT)*XGL_MAX_MEMORY_HEAPS);
+    mem_info.memPriority = XGL_MEMORY_PRIORITY_NORMAL;
+    mem_info.flags = XGL_MEMORY_ALLOC_SHAREABLE_BIT;
+    err = xglAllocMemory(device(), &mem_info, pMem);
+    ASSERT_XGL_SUCCESS(err);
+
+    err = xglBindObjectMemory(*pPool, *pMem, 0);
+    ASSERT_XGL_SUCCESS(err);
+}
+
+void XglRenderTest::DestroyQueryPool(XGL_QUERY_POOL pool, XGL_GPU_MEMORY mem)
+{
+    ASSERT_XGL_SUCCESS(xglBindObjectMemory(pool, XGL_NULL_HANDLE, 0));
+    ASSERT_XGL_SUCCESS(xglFreeMemory(mem));
+    ASSERT_XGL_SUCCESS(xglDestroyObject(pool));
+}
+
 void XglRenderTest::CreateImageView(XGL_IMAGE_VIEW_CREATE_INFO *pCreateInfo,
                                    XGL_IMAGE_VIEW *pView)
 {