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);
}