tests: Make VkDepthStencilObj a VkImageObj and set layout correctly

Change-Id: I34dfec21021b7e3f7cdbce60552385e3a659b5f1
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 4e3d8a3..2f70b88 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -165,8 +165,7 @@
         }
     }
     m_device->get_device_queue();
-
-    m_depthStencil = new VkDepthStencilObj();
+    m_depthStencil = new VkDepthStencilObj(m_device);
 }
 
 void VkRenderFramework::ShutdownFramework() {
@@ -647,6 +646,11 @@
         dst_mask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
         break;
 
+    case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:
+        dst_mask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
+        src_mask = all_cache_outputs;
+        break;
+
     default:
         src_mask = all_cache_outputs;
         dst_mask = all_cache_inputs;
@@ -766,7 +770,8 @@
     src_image.SetLayout(&cmd_buf, VK_IMAGE_ASPECT_COLOR_BIT,
                         VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
 
-    dest_image_layout = this->layout();
+    dest_image_layout = (this->layout() == VK_IMAGE_LAYOUT_UNDEFINED)?
+                    VK_IMAGE_LAYOUT_GENERAL:this->layout();
     this->SetLayout(&cmd_buf, VK_IMAGE_ASPECT_COLOR_BIT,
                     VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
 
@@ -1659,38 +1664,26 @@
                            &offset);
 }
 
-VkDepthStencilObj::VkDepthStencilObj() { m_initialized = false; }
 bool VkDepthStencilObj::Initialized() { return m_initialized; }
+VkDepthStencilObj::VkDepthStencilObj(VkDeviceObj *device) : VkImageObj(device)  {m_initialized = false;}
 
 VkImageView *VkDepthStencilObj::BindInfo() { return &m_attachmentBindInfo; }
 
 void VkDepthStencilObj::Init(VkDeviceObj *device, int32_t width, int32_t height,
                              VkFormat format) {
-    VkImageCreateInfo image_info = {};
+
     VkImageViewCreateInfo view_info = {};
 
     m_device = device;
     m_initialized = true;
     m_depth_stencil_fmt = format;
 
-    image_info.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
-    image_info.pNext = NULL;
-    image_info.imageType = VK_IMAGE_TYPE_2D;
-    image_info.format = m_depth_stencil_fmt;
-    image_info.extent.width = width;
-    image_info.extent.height = height;
-    image_info.extent.depth = 1;
-    image_info.mipLevels = 1;
-    image_info.arrayLayers = 1;
-    image_info.samples = VK_SAMPLE_COUNT_1_BIT;
-    image_info.tiling = VK_IMAGE_TILING_OPTIMAL;
-    image_info.usage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
-    image_info.flags = 0;
-    image_info.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
-    image_info.initialLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
-    image_info.queueFamilyIndexCount = 0;
-    image_info.pQueueFamilyIndices = NULL;
-    init(*m_device, image_info);
+    /* create image */
+    init(width, height, m_depth_stencil_fmt,
+         VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
+         VK_IMAGE_TILING_OPTIMAL);
+
+    SetLayout(VK_IMAGE_ASPECT_DEPTH_BIT, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
 
     view_info.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
     view_info.pNext = NULL;