diff --git a/tests/render_tests.cpp b/tests/render_tests.cpp
index 49aeefc..b1ed9e7 100644
--- a/tests/render_tests.cpp
+++ b/tests/render_tests.cpp
@@ -315,7 +315,7 @@
      * on a single command buffer.
      */
     if (VK_SUCCESS == result && renderPass()) {
-        cmdBuffer.BeginRenderPass(renderPass(), framebuffer());
+        cmdBuffer.BeginRenderPass(renderPassBeginInfo());
     }
 
     return result;
@@ -349,7 +349,7 @@
     cmdBuffer->BindStateObject(VK_STATE_BIND_POINT_COLOR_BLEND, m_colorBlend);
     cmdBuffer->BindStateObject(VK_STATE_BIND_POINT_DEPTH_STENCIL, m_stateDepthStencil);
     descriptorSet.CreateVKDescriptorSet(cmdBuffer);
-    pipelineobj.CreateVKPipeline(descriptorSet);
+    pipelineobj.CreateVKPipeline(descriptorSet, renderPass());
     cmdBuffer->BindPipeline(pipelineobj);
     cmdBuffer->BindDescriptorSet(descriptorSet);
 }
@@ -457,6 +457,7 @@
     VkShaderObj ps(m_device,fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -716,6 +717,7 @@
     VkShaderObj ps(m_device,fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -801,6 +803,7 @@
     VkShaderObj ps(m_device,fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -828,7 +831,6 @@
 
     VkPipelineCbAttachmentState att = {};
     att.blendEnable = VK_FALSE;
-    att.format = m_render_target_fmt;
     att.channelWriteMask = 0xf;
     pipelineobj.AddColorAttachment(1, &att);
 
@@ -914,6 +916,7 @@
     VkShaderObj ps(m_device,fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -1011,6 +1014,7 @@
     VkShaderObj ps(m_device,fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -1102,6 +1106,7 @@
     VkShaderObj ps(m_device,fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -1204,6 +1209,7 @@
     VkShaderObj ps(m_device,fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -1296,6 +1302,7 @@
     VkShaderObj ps(m_device,fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -1386,6 +1393,7 @@
     VkShaderObj ps(m_device,fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -1465,6 +1473,7 @@
     VkShaderObj ps(m_device,fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -1535,6 +1544,7 @@
     VkShaderObj ps(m_device,fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -1641,6 +1651,7 @@
     VkShaderObj ps(m_device,fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -1737,6 +1748,7 @@
     VkShaderObj ps(m_device,fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -1831,7 +1843,7 @@
     ASSERT_NO_FATAL_FAILURE(InitState());
     ASSERT_NO_FATAL_FAILURE(InitViewport());
     m_depth_stencil_fmt = VK_FORMAT_D16_UNORM;
-    m_depthStencil->Init(m_device, (int32_t)m_width, (int32_t)m_height);
+    m_depthStencil->Init(m_device, (int32_t)m_width, (int32_t)m_height, m_depth_stencil_fmt);
 
     VkConstantBufferObj meshBuffer(m_device,sizeof(g_vb_solid_face_colors_Data)/sizeof(g_vb_solid_face_colors_Data[0]),
             sizeof(g_vb_solid_face_colors_Data[0]), g_vb_solid_face_colors_Data);
@@ -1843,6 +1855,7 @@
     VkShaderObj ps(m_device,fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -1856,7 +1869,6 @@
     ds_state.back.stencilFailOp = VK_STENCIL_OP_KEEP;
     ds_state.back.stencilPassOp = VK_STENCIL_OP_KEEP;
     ds_state.back.stencilCompareOp = VK_COMPARE_OP_ALWAYS;
-    ds_state.format = VK_FORMAT_D32_SFLOAT;
     ds_state.front = ds_state.back;
     pipelineobj.SetDepthStencil(&ds_state);
 
@@ -1952,6 +1964,7 @@
     VkTextureObj texture(m_device);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -2025,6 +2038,7 @@
     VkTextureObj texture(m_device);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -2105,6 +2119,7 @@
     VkTextureObj texture(m_device);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -2175,6 +2190,7 @@
     VkTextureObj texture(m_device);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -2260,6 +2276,7 @@
     VkTextureObj texture3(m_device, tex_colors); // Blue
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -2346,6 +2363,7 @@
     VkConstantBufferObj colorBuffer(m_device, valCount, sizeof(bufferVals[0]), (const void*) bufferVals);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -2444,6 +2462,7 @@
     VkConstantBufferObj whiteBuffer(m_device, whiteCount, sizeof(whiteVals[0]), (const void*) whiteVals);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -2540,6 +2559,7 @@
     VkConstantBufferObj whiteBuffer(m_device, whiteCount, sizeof(whiteVals[0]), (const void*) whiteVals);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -2660,6 +2680,7 @@
     VkConstantBufferObj whiteBuffer(m_device, whiteCount, sizeof(whiteVals[0]), (const void*) whiteVals);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -2737,7 +2758,7 @@
     ASSERT_NO_FATAL_FAILURE(InitState());
     ASSERT_NO_FATAL_FAILURE(InitViewport());
     m_depth_stencil_fmt = VK_FORMAT_D16_UNORM;
-    m_depthStencil->Init(m_device, (int32_t)m_width, (int32_t)m_height);
+    m_depthStencil->Init(m_device, (int32_t)m_width, (int32_t)m_height, m_depth_stencil_fmt);
 
     VkConstantBufferObj meshBuffer(m_device, num_verts,
             sizeof(g_vb_texture_Data[0]), g_vb_texture_Data);
@@ -2752,6 +2773,7 @@
     VkTextureObj texture(m_device);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -2790,7 +2812,6 @@
     ds_state.back.stencilFailOp = VK_STENCIL_OP_KEEP;
     ds_state.back.stencilPassOp = VK_STENCIL_OP_KEEP;
     ds_state.back.stencilCompareOp = VK_COMPARE_OP_ALWAYS;
-    ds_state.format = VK_FORMAT_D32_SFLOAT;
     ds_state.front = ds_state.back;
     pipelineobj.SetDepthStencil(&ds_state);
 
@@ -2896,6 +2917,7 @@
     VkTextureObj texture7(m_device, tex_colors); // Red and Blue
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -3005,6 +3027,7 @@
     VkTextureObj texture7(m_device, tex_colors); // Red and Blue
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -3263,6 +3286,7 @@
     VkConstantBufferObj mixedBuffer(m_device, constCount, sizeof(mixedVals[0]), (const void*) mixedVals);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -3370,6 +3394,7 @@
     VkTextureObj texture3(m_device, tex_colors); // Red and Blue
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&ps);
 
@@ -3479,6 +3504,7 @@
     VkShaderObj ps(m_device, fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&gs);
     pipelineobj.AddShader(&ps);
@@ -3831,6 +3857,7 @@
     VkConstantBufferObj mixedBuffer(m_device, constCount, sizeof(mixedVals[0]), (const void*) mixedVals);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&gs);
     pipelineobj.AddShader(&ps);
@@ -3959,6 +3986,7 @@
     VkShaderObj ps(m_device, fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&gs);
     pipelineobj.AddShader(&ps);
@@ -4091,6 +4119,7 @@
     VkShaderObj ps(m_device, fragShaderText, VK_SHADER_STAGE_FRAGMENT, this);
 
     VkPipelineObj pipelineobj(m_device);
+    pipelineobj.AddColorAttachment();
     pipelineobj.AddShader(&vs);
     pipelineobj.AddShader(&gs);
     pipelineobj.AddShader(&ps);
