diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 2876d45..aa29ab1 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -475,7 +475,7 @@
     m_type_counts.push_back(tc);
 
     VkDescriptorInfo tmp = texture->m_descriptorInfo;
-    tmp.sampler = sampler->handle();
+    tmp.imageInfo.sampler = sampler->handle();
     m_imageSamplerDescriptors.push_back(tmp);
 
     m_writes.push_back(vk_testing::Device::write_descriptor_set(vk_testing::DescriptorSet(),
@@ -552,8 +552,8 @@
 VkImageObj::VkImageObj(VkDeviceObj *dev)
 {
     m_device = dev;
-    m_descriptorInfo.imageView = VK_NULL_HANDLE;
-    m_descriptorInfo.imageLayout = VK_IMAGE_LAYOUT_GENERAL;
+    m_descriptorInfo.imageInfo.imageView = VK_NULL_HANDLE;
+    m_descriptorInfo.imageInfo.imageLayout = VK_IMAGE_LAYOUT_GENERAL;
 }
 
 void VkImageObj::ImageMemoryBarrier(
@@ -613,7 +613,7 @@
             VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
             VK_MEMORY_INPUT_TRANSFER_BIT;
 
-    if (image_layout == m_descriptorInfo.imageLayout) {
+    if (image_layout == m_descriptorInfo.imageInfo.imageLayout) {
         return;
     }
 
@@ -640,7 +640,7 @@
     }
 
     ImageMemoryBarrier(cmd_buf, aspect, output_mask, input_mask, image_layout);
-    m_descriptorInfo.imageLayout = image_layout;
+    m_descriptorInfo.imageInfo.imageLayout = image_layout;
 }
 
 void VkImageObj::SetLayout(VkImageAspectFlagBits aspect,
@@ -648,7 +648,7 @@
 {
     VkResult U_ASSERT_ONLY err;
 
-    if (image_layout == m_descriptorInfo.imageLayout) {
+    if (image_layout == m_descriptorInfo.imageInfo.imageLayout) {
         return;
     }
 
@@ -835,7 +835,7 @@
     /* create image view */
     view.image = handle();
     m_textureView.init(*m_device, view);
-    m_descriptorInfo.imageView = m_textureView.handle();
+    m_descriptorInfo.imageInfo.imageView = m_textureView.handle();
 
     data = stagingImage.MapMemory();
 
@@ -1011,23 +1011,18 @@
 
 void VkIndexBufferObj::CreateAndInitBuffer(int numIndexes, VkIndexType indexType, const void* data)
 {
-    VkFormat viewFormat;
-
     m_numVertices = numIndexes;
     m_indexType = indexType;
     switch (indexType) {
     case VK_INDEX_TYPE_UINT16:
         m_stride = 2;
-        viewFormat = VK_FORMAT_R16_UINT;
         break;
     case VK_INDEX_TYPE_UINT32:
         m_stride = 4;
-        viewFormat = VK_FORMAT_R32_UINT;
         break;
     default:
         assert(!"unknown index type");
         m_stride = 2;
-        viewFormat = VK_FORMAT_R16_UINT;
         break;
     }
 
@@ -1039,16 +1034,10 @@
     memcpy(pData, data, allocationSize);
     memory().unmap();
 
-    // set up the buffer view for the constant buffer
-    VkBufferViewCreateInfo view_info = {};
-    view_info.sType = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO;
-    view_info.buffer = handle();
-    view_info.format = viewFormat;
-    view_info.offset = 0;
-    view_info.range  = allocationSize;
-    m_bufferView.init(*m_device, view_info);
-
-    this->m_descriptorInfo.bufferView = m_bufferView.handle();
+    // set up the descriptor for the constant buffer
+    this->m_descriptorInfo.bufferInfo.buffer = handle();
+    this->m_descriptorInfo.bufferInfo.offset = 0;
+    this->m_descriptorInfo.bufferInfo.range = allocationSize;
 }
 
 void VkIndexBufferObj::Bind(VkCmdBuffer cmdBuffer, VkDeviceSize offset)
