tests: derive XglDescriptorSetObj from xgl_testing::DescriptorSet
diff --git a/tests/xglrenderframework.cpp b/tests/xglrenderframework.cpp
index 6ee0d7d..d1c5d10 100644
--- a/tests/xglrenderframework.cpp
+++ b/tests/xglrenderframework.cpp
@@ -328,41 +328,30 @@
 }
 void XglDescriptorSetObj::CreateXGLDescriptorSet()
 {
-    XGL_RESULT err;
+    init(*m_device, xgl_testing::DescriptorSet::create_info(m_nextSlot));
 
-    // Create descriptor set for a uniform resource
-    memset(&m_descriptorInfo,0,sizeof(m_descriptorInfo));
-    m_descriptorInfo.sType = XGL_STRUCTURE_TYPE_DESCRIPTOR_SET_CREATE_INFO;
-    m_descriptorInfo.slots = m_nextSlot;
+    begin();
+    clear();
 
-    // Create a descriptor set with requested number of slots
-    err = xglCreateDescriptorSet( m_device->device(), &m_descriptorInfo, &m_rsrcDescSet );
-    ASSERT_XGL_SUCCESS(err);
-
-    // Bind memory to the descriptor set
-    err = m_device->AllocAndBindGpuMemory(m_rsrcDescSet, "DescriptorSet", &m_descriptor_set_mem);
-    ASSERT_XGL_SUCCESS(err);
-
-    xglBeginDescriptorSetUpdate( m_rsrcDescSet );
-    xglClearDescriptorSetSlots(m_rsrcDescSet, 0, m_nextSlot);
     for (int i=0; i<m_memoryViews.size();i++)
     {
-        xglAttachMemoryViewDescriptors( m_rsrcDescSet, m_memorySlots[i], 1, m_memoryViews[i] );
+        attach(m_memorySlots[i], *m_memoryViews[i]);
     }
     for (int i=0; i<m_samplers.size();i++)
     {
-        xglAttachSamplerDescriptors( m_rsrcDescSet, m_samplerSlots[i], 1, &m_samplers[i]->obj() );
+        attach(m_samplerSlots[i], *m_samplers[i]);
     }
     for (int i=0; i<m_imageViews.size();i++)
     {
-        xglAttachImageViewDescriptors( m_rsrcDescSet, m_imageSlots[i], 1, m_imageViews[i] );
+        attach(m_imageSlots[i], *m_imageViews[i]);
     }
-    xglEndDescriptorSetUpdate( m_rsrcDescSet );
+
+    end();
 }
 
 XGL_DESCRIPTOR_SET XglDescriptorSetObj::GetDescriptorSetHandle()
 {
-    return m_rsrcDescSet;
+    return obj();
 }
 
 int XglDescriptorSetObj::GetTotalSlots()
@@ -372,44 +361,28 @@
 
 void XglDescriptorSetObj::BindCommandBuffer(XGL_CMD_BUFFER commandBuffer)
 {
-    XGL_RESULT err;
+    init(*m_device, xgl_testing::DescriptorSet::create_info(m_nextSlot));
 
-    // Create descriptor set for a uniform resource
-    memset(&m_descriptorInfo,0,sizeof(m_descriptorInfo));
-    m_descriptorInfo.sType = XGL_STRUCTURE_TYPE_DESCRIPTOR_SET_CREATE_INFO;
-    m_descriptorInfo.slots = m_nextSlot;
+    begin();
+    clear();
 
-    // Create a descriptor set with requested number of slots
-    err = xglCreateDescriptorSet( m_device->device(), &m_descriptorInfo, &m_rsrcDescSet );
-    ASSERT_XGL_SUCCESS(err);
-
-    // Bind memory to the descriptor set
-    err = m_device->AllocAndBindGpuMemory(m_rsrcDescSet, "DescriptorSet", &m_descriptor_set_mem);
-    ASSERT_XGL_SUCCESS(err);
-
-    xglBeginDescriptorSetUpdate( m_rsrcDescSet );
-    xglClearDescriptorSetSlots(m_rsrcDescSet, 0, m_nextSlot);
     for (int i=0; i<m_memoryViews.size();i++)
     {
-        xglAttachMemoryViewDescriptors( m_rsrcDescSet, m_memorySlots[i], 1, m_memoryViews[i] );
+        attach(m_memorySlots[i], *m_memoryViews[i]);
     }
     for (int i=0; i<m_samplers.size();i++)
     {
-        xglAttachSamplerDescriptors( m_rsrcDescSet, m_samplerSlots[i], 1, &m_samplers[i]->obj() );
+        attach(m_samplerSlots[i], *m_samplers[i]);
     }
     for (int i=0; i<m_imageViews.size();i++)
     {
-        xglAttachImageViewDescriptors( m_rsrcDescSet, m_imageSlots[i], 1, m_imageViews[i] );
+        attach(m_imageSlots[i], *m_imageViews[i]);
     }
-    xglEndDescriptorSetUpdate( m_rsrcDescSet );
+
+    end();
 
     // bind pipeline, vertex buffer (descriptor set) and WVP (dynamic memory view)
-    xglCmdBindDescriptorSet(commandBuffer, XGL_PIPELINE_BIND_POINT_GRAPHICS, 0, m_rsrcDescSet, 0 );
-}
-
-XglDescriptorSetObj::~XglDescriptorSetObj()
-{
-    if (m_rsrcDescSet != XGL_NULL_HANDLE) xglDestroyObject(m_rsrcDescSet);
+    xglCmdBindDescriptorSet(commandBuffer, XGL_PIPELINE_BIND_POINT_GRAPHICS, 0, obj(), 0 );
 }
 
 XglTextureObj::XglTextureObj(XglDevice *device)