tests: Better deal with shader modules
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 1321141..49a2bc3 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -168,6 +168,11 @@
}
delete m_depthStencil;
+ while (!m_shader_modules.empty())
+ {
+ delete m_shader_modules.back();
+ m_shader_modules.pop_back();
+ }
// reset the driver
delete m_device;
@@ -1047,7 +1052,7 @@
std::vector<unsigned int> spv;
VkShaderCreateInfo createInfo;
VkShaderModuleCreateInfo moduleCreateInfo;
- vk_testing::ShaderModule module;
+ vk_testing::ShaderModule *module = new vk_testing::ShaderModule();
size_t shader_len;
m_stage = stage;
@@ -1081,17 +1086,18 @@
moduleCreateInfo.flags = 0;
}
- err = module.init_try(*m_device, moduleCreateInfo);
+ err = module->init_try(*m_device, moduleCreateInfo);
assert(VK_SUCCESS == err);
createInfo.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO;
createInfo.pNext = NULL;
- createInfo.module = module.handle();
+ createInfo.module = module->handle();
createInfo.pName = "main";
createInfo.flags = 0;
err = init_try(*m_device, createInfo);
assert(VK_SUCCESS == err);
+ framework->m_shader_modules.push_back(module);
}
VkPipelineObj::VkPipelineObj(VkDeviceObj *device)
diff --git a/tests/vkrenderframework.h b/tests/vkrenderframework.h
index 7cabc34..351bf2e2 100644
--- a/tests/vkrenderframework.h
+++ b/tests/vkrenderframework.h
@@ -77,6 +77,7 @@
VkPhysicalDevice gpu() {return objs[0];}
VkRenderPass renderPass() {return m_renderPass;}
VkFramebuffer framebuffer() {return m_framebuffer;}
+ std::vector<vk_testing::ShaderModule*> m_shader_modules;
void InitViewport(float width, float height);
void InitViewport();
void InitRenderTarget();