misc: Make wsi lunarg an extension rather than core entrypoints
diff --git a/tests/vktestframework.cpp b/tests/vktestframework.cpp
index 58cae8f..ecb192f 100644
--- a/tests/vktestframework.cpp
+++ b/tests/vktestframework.cpp
@@ -58,7 +58,7 @@
TestFrameworkVkPresent(vk_testing::Device &device);
void Run();
- void InitPresentFramework(std::list<VkTestImageRecord> &imagesIn);
+ void InitPresentFramework(std::list<VkTestImageRecord> &imagesIn, VkInstance inst);
void CreateMyWindow();
void CreateSwapChain();
void TearDown();
@@ -85,6 +85,11 @@
#endif
std::list<VkTestImageRecord> m_images;
+ PFN_vkCreateSwapChainWSI m_fpCreateSwapChainWSI;
+ PFN_vkDestroySwapChainWSI m_fpDestroySwapChainWSI;
+ PFN_vkGetSwapChainInfoWSI m_fpGetSwapChainInfoWSI;
+ PFN_vkQueuePresentWSI m_fpQueuePresentWSI;
+
VkSwapChainWSI m_swap_chain;
std::vector<VkSwapChainImageInfoWSI> m_persistent_images;
int m_current_buffer;
@@ -510,7 +515,8 @@
m_display_image->m_title.size(),
m_display_image->m_title.c_str());
#endif
- err = vkQueuePresentWSI(m_queue.obj(), &present);
+
+ err = m_fpQueuePresentWSI(m_queue.obj(), &present);
assert(!err);
m_queue.wait();
@@ -687,13 +693,14 @@
swap_chain.swapModeFlags = VK_SWAP_MODE_FLIP_BIT_WSI |
VK_SWAP_MODE_BLIT_BIT_WSI;
- err = vkCreateSwapChainWSI(m_device.obj(), &swap_chain, &m_swap_chain);
+ err = m_fpCreateSwapChainWSI(m_device.obj(), &swap_chain, &m_swap_chain);
assert(!err);
- size_t size = sizeof(VkSwapChainImageInfoWSI) * 2;
VkSwapChainImageInfoWSI infos[2];
-
- err = vkGetSwapChainInfoWSI(m_swap_chain,
+ size_t size = sizeof(VkSwapChainImageInfoWSI) * m_images.size();
+ std::vector<VkSwapChainImageInfoWSI> persistent_images;
+ persistent_images.resize(m_images.size());
+ err = m_fpGetSwapChainInfoWSI(m_swap_chain,
VK_SWAP_CHAIN_INFO_TYPE_PERSISTENT_IMAGES_WSI,
&size, &infos);
assert(!err && size == sizeof(VkSwapChainImageInfoWSI) * 2);
@@ -701,8 +708,20 @@
m_persistent_images.push_back(infos[1]);
}
-void TestFrameworkVkPresent::InitPresentFramework(std::list<VkTestImageRecord> &imagesIn)
+void TestFrameworkVkPresent::InitPresentFramework(std::list<VkTestImageRecord> &imagesIn, VkInstance inst)
{
+ m_fpCreateSwapChainWSI = (PFN_vkCreateSwapChainWSI) vkGetInstanceProcAddr(inst, "vkCreateSwapChainWSI");
+ ASSERT_TRUE(m_fpCreateSwapChainWSI != NULL) << "vkGetInstanceProcAddr failed to find vkCreateSwapChainWSI";
+
+ m_fpDestroySwapChainWSI = (PFN_vkDestroySwapChainWSI) vkGetInstanceProcAddr(inst, "vkDestroySwapChainWSI");
+ ASSERT_TRUE(m_fpDestroySwapChainWSI != NULL) << "vkGetInstanceProcAddr failed to find vkDestroySwapChainWSI";
+
+ m_fpGetSwapChainInfoWSI = (PFN_vkGetSwapChainInfoWSI) vkGetInstanceProcAddr(inst, "vkGetSwapChainInfoWSI");
+ ASSERT_TRUE(m_fpGetSwapChainInfoWSI != NULL) << "vkGetInstanceProcAddr failed to find vkGetSwapChainInfoWSI";
+
+ m_fpQueuePresentWSI = (PFN_vkQueuePresentWSI) vkGetInstanceProcAddr(inst, "vkQueuePresentWSI");
+ ASSERT_TRUE(m_fpQueuePresentWSI != NULL) << "vkGetInstanceProcAddr failed to find vkQueuePresentWSI";
+
m_images = imagesIn;
}
@@ -827,7 +846,7 @@
void TestFrameworkVkPresent::TearDown()
{
- vkDestroySwapChainWSI(m_swap_chain);
+ m_fpDestroySwapChainWSI(m_swap_chain);
#ifndef _WIN32
xcb_destroy_window(m_connection, m_window);
xcb_disconnect(m_connection);
@@ -843,7 +862,7 @@
{
TestFrameworkVkPresent vkPresent(env.default_device());
- vkPresent.InitPresentFramework(m_images);
+ vkPresent.InitPresentFramework(m_images, env.get_instance());
vkPresent.CreateMyWindow();
vkPresent.CreateSwapChain();
vkPresent.Run();