diff options
| author | assiduous <assiduous@diligentgraphics.com> | 2019-12-17 17:50:06 +0000 |
|---|---|---|
| committer | assiduous <assiduous@diligentgraphics.com> | 2019-12-17 17:50:06 +0000 |
| commit | 82d456ffb4dde152d9ed6a5c2ffb63202e8441a7 (patch) | |
| tree | b33ba9e12addc503dee3aafc7c2d436b99bdee63 /UnitTests | |
| parent | Enabled draw command reference in Vulkan (diff) | |
| download | DiligentCore-82d456ffb4dde152d9ed6a5c2ffb63202e8441a7.tar.gz DiligentCore-82d456ffb4dde152d9ed6a5c2ffb63202e8441a7.zip | |
Fixed Core API test crash on the server by dynamically loading vulkan entry points
Diffstat (limited to 'UnitTests')
7 files changed, 21 insertions, 5 deletions
diff --git a/UnitTests/DiligentCoreAPITest/CMakeLists.txt b/UnitTests/DiligentCoreAPITest/CMakeLists.txt index 28d19542..9232aefd 100644 --- a/UnitTests/DiligentCoreAPITest/CMakeLists.txt +++ b/UnitTests/DiligentCoreAPITest/CMakeLists.txt @@ -95,13 +95,13 @@ if(GL_SUPPORTED) endif() if(VULKAN_SUPPORTED) - target_link_libraries(DiligentCoreAPITest PRIVATE Diligent-GLSLTools ${Vulkan_LIBRARY}) + target_link_libraries(DiligentCoreAPITest PRIVATE Diligent-GLSLTools) + target_include_directories(DiligentCoreAPITest PRIVATE ../../ThirdParty) endif() target_include_directories(DiligentCoreAPITest PRIVATE include - ../../ThirdParty/vulkan ) diff --git a/UnitTests/DiligentCoreAPITest/include/Vulkan/TestingEnvironmentVk.h b/UnitTests/DiligentCoreAPITest/include/Vulkan/TestingEnvironmentVk.h index c3c34d22..41c8dba7 100644 --- a/UnitTests/DiligentCoreAPITest/include/Vulkan/TestingEnvironmentVk.h +++ b/UnitTests/DiligentCoreAPITest/include/Vulkan/TestingEnvironmentVk.h @@ -27,7 +27,8 @@ #include "TestingEnvironment.h" -#include "vulkan.h" +#define VK_NO_PROTOTYPES +#include "vulkan/vulkan.h" namespace Diligent { diff --git a/UnitTests/DiligentCoreAPITest/include/Vulkan/TestingSwapChainVk.h b/UnitTests/DiligentCoreAPITest/include/Vulkan/TestingSwapChainVk.h index 866af82f..cb7bad57 100644 --- a/UnitTests/DiligentCoreAPITest/include/Vulkan/TestingSwapChainVk.h +++ b/UnitTests/DiligentCoreAPITest/include/Vulkan/TestingSwapChainVk.h @@ -23,7 +23,8 @@ #include "TestingSwapChainBase.h" -#include "vulkan.h" +#define VK_NO_PROTOTYPES +#include "vulkan/vulkan.h" namespace Diligent { diff --git a/UnitTests/DiligentCoreAPITest/src/Vulkan/CreateObjFromNativeResVK.cpp b/UnitTests/DiligentCoreAPITest/src/Vulkan/CreateObjFromNativeResVK.cpp index a003b8c9..b1d65e3a 100644 --- a/UnitTests/DiligentCoreAPITest/src/Vulkan/CreateObjFromNativeResVK.cpp +++ b/UnitTests/DiligentCoreAPITest/src/Vulkan/CreateObjFromNativeResVK.cpp @@ -22,7 +22,8 @@ */ #if VULKAN_SUPPORTED -# include "vulkan.h" +# define VK_NO_PROTOTYPES +# include "vulkan/vulkan.h" #endif #include "RenderDeviceVk.h" diff --git a/UnitTests/DiligentCoreAPITest/src/Vulkan/DrawCommandRefenceVk.cpp b/UnitTests/DiligentCoreAPITest/src/Vulkan/DrawCommandRefenceVk.cpp index e3f7605c..abb7839f 100644 --- a/UnitTests/DiligentCoreAPITest/src/Vulkan/DrawCommandRefenceVk.cpp +++ b/UnitTests/DiligentCoreAPITest/src/Vulkan/DrawCommandRefenceVk.cpp @@ -26,6 +26,8 @@ #include "DeviceContextVk.h" +#include "volk/volk.h" + namespace Diligent { diff --git a/UnitTests/DiligentCoreAPITest/src/Vulkan/TestingEnvironmentVk.cpp b/UnitTests/DiligentCoreAPITest/src/Vulkan/TestingEnvironmentVk.cpp index 6e0d11f7..fa242455 100644 --- a/UnitTests/DiligentCoreAPITest/src/Vulkan/TestingEnvironmentVk.cpp +++ b/UnitTests/DiligentCoreAPITest/src/Vulkan/TestingEnvironmentVk.cpp @@ -28,6 +28,9 @@ #include "SPIRVUtils.h" +#define VOLK_IMPLEMENTATION +#include "volk/volk.h" + namespace Diligent { @@ -43,9 +46,15 @@ TestingEnvironmentVk::TestingEnvironmentVk(DeviceType deviceType, ADAPTER_TYPE A { InitializeGlslang(); + // We have to use dynamic Vulkan loader because if an application is statically linked with vulkan-1.lib + // and the Vulkan library is not present on the system, the app will instantly crash. + volkInitialize(); + RefCntAutoPtr<IRenderDeviceVk> pRenderDeviceVk{m_pDevice, IID_RenderDeviceVk}; m_vkDevice = pRenderDeviceVk->GetVkDevice(); + volkLoadInstance(pRenderDeviceVk->GetVkInstance()); + RefCntAutoPtr<IDeviceContextVk> pContextVk{m_pDeviceContext, IID_DeviceContextVk}; auto* pQeueVk = pContextVk->LockCommandQueue(); diff --git a/UnitTests/DiligentCoreAPITest/src/Vulkan/TestingSwapChainVk.cpp b/UnitTests/DiligentCoreAPITest/src/Vulkan/TestingSwapChainVk.cpp index 36b1d26e..1b3ee884 100644 --- a/UnitTests/DiligentCoreAPITest/src/Vulkan/TestingSwapChainVk.cpp +++ b/UnitTests/DiligentCoreAPITest/src/Vulkan/TestingSwapChainVk.cpp @@ -27,6 +27,8 @@ #include "RenderDeviceVk.h" #include "DeviceContextVk.h" +#include "volk/volk.h" + namespace Diligent { |
