tests: Add ability to override tessellation state, use it.

This fixes the remaining issue with the tess positive test.

Signed-off-by: Chris Forbes <chrisforbes@google.com>
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 29b834b..d933a0b 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -1252,21 +1252,25 @@
 
 void VkPipelineObj::SetMSAA(
     const VkPipelineMultisampleStateCreateInfo *ms_state) {
-    memcpy(&m_ms_state, ms_state, sizeof(VkPipelineMultisampleStateCreateInfo));
+    m_ms_state = *ms_state;
 }
 
 void VkPipelineObj::SetInputAssembly(
     const VkPipelineInputAssemblyStateCreateInfo *ia_state) {
-    memcpy(&m_ia_state, ia_state,
-           sizeof(VkPipelineInputAssemblyStateCreateInfo));
+    m_ia_state = *ia_state;
 }
 
 void VkPipelineObj::SetRasterization(
     const VkPipelineRasterizationStateCreateInfo *rs_state) {
-    memcpy(&m_rs_state, rs_state,
-           sizeof(VkPipelineRasterizationStateCreateInfo));
+    m_rs_state = *rs_state;
 }
 
+void VkPipelineObj::SetTessellation(
+    const VkPipelineTessellationStateCreateInfo *te_state) {
+    m_te_state = *te_state;
+}
+
+
 VkResult VkPipelineObj::CreateVKPipeline(VkPipelineLayout layout,
                                          VkRenderPass render_pass) {
     VkGraphicsPipelineCreateInfo info = {};
@@ -1314,7 +1318,6 @@
 
     info.renderPass = render_pass;
     info.subpass = 0;
-    info.pTessellationState = NULL;
     info.pInputAssemblyState = &m_ia_state;
     info.pViewportState = &m_vp_state;
     info.pRasterizationState = &m_rs_state;
@@ -1322,6 +1325,14 @@
     info.pDepthStencilState = &m_ds_state;
     info.pColorBlendState = &m_cb_state;
 
+    if (m_ia_state.topology == VK_PRIMITIVE_TOPOLOGY_PATCH_LIST) {
+        m_te_state.sType = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO;
+        info.pTessellationState = &m_te_state;
+    }
+    else {
+        info.pTessellationState = nullptr;
+    }
+
     return init_try(*m_device, info);
 }