diff options
| author | Egor <egor.yusov@gmail.com> | 2019-10-28 00:46:48 +0000 |
|---|---|---|
| committer | Egor <egor.yusov@gmail.com> | 2019-10-28 00:46:48 +0000 |
| commit | cf0268d40bbe5cf9be97d64bc4f90661705ac91f (patch) | |
| tree | 12bb74169e992a0e4ddaabcdcc0899648392bcc2 | |
| parent | Fixed tabs in UWP app source (diff) | |
| download | DiligentEngine-cf0268d40bbe5cf9be97d64bc4f90661705ac91f.tar.gz DiligentEngine-cf0268d40bbe5cf9be97d64bc4f90661705ac91f.zip | |
LinuxApp: attempting to initialize in OpenGL mode if Vulkan fails
| -rw-r--r-- | Common/NativeApp/include/Linux/LinuxAppBase.h | 2 | ||||
| -rw-r--r-- | Common/NativeApp/src/Linux/LinuxMain.cpp | 13 | ||||
| m--------- | DiligentSamples | 0 | ||||
| -rw-r--r-- | Tests/TestApp/src/Linux/TestAppLinux.cpp | 3 | ||||
| -rw-r--r-- | unityplugin/UnityEmulator/src/Linux/UnityAppLinux.cpp | 3 |
5 files changed, 16 insertions, 5 deletions
diff --git a/Common/NativeApp/include/Linux/LinuxAppBase.h b/Common/NativeApp/include/Linux/LinuxAppBase.h index 83065d1..e4c6a3e 100644 --- a/Common/NativeApp/include/Linux/LinuxAppBase.h +++ b/Common/NativeApp/include/Linux/LinuxAppBase.h @@ -54,7 +54,7 @@ public: virtual int HandleXEvent(XEvent* xev){} #if VULKAN_SUPPORTED - virtual void InitVulkan(xcb_connection_t* connection, uint32_t window) = 0; + virtual bool InitVulkan(xcb_connection_t* connection, uint32_t window) = 0; virtual void HandleXCBEvent(xcb_generic_event_t* event){} #endif }; diff --git a/Common/NativeApp/src/Linux/LinuxMain.cpp b/Common/NativeApp/src/Linux/LinuxMain.cpp index 93a3235..fc26c8a 100644 --- a/Common/NativeApp/src/Linux/LinuxMain.cpp +++ b/Common/NativeApp/src/Linux/LinuxMain.cpp @@ -214,7 +214,8 @@ int xcb_main() std::string Title = TheApp->GetAppTitle();
auto xcbInfo = InitXCBConnectionAndWindow(Title);
- TheApp->InitVulkan(xcbInfo.connection, xcbInfo.window);
+ if(!TheApp->InitVulkan(xcbInfo.connection, xcbInfo.window))
+ return -1;
xcb_flush(xcbInfo.connection);
@@ -509,7 +510,15 @@ int main (int argc, char ** argv) if (UseVulkan)
{
- return xcb_main();
+ auto ret = xcb_main();
+ if (ret >= 0)
+ {
+ return ret;
+ }
+ else
+ {
+ LOG_ERROR_MESSAGE("Failed to initialize the engine in Vulkan mode. Attempting to use OpenGL");
+ }
}
#endif
diff --git a/DiligentSamples b/DiligentSamples -Subproject b2e2918145f853ea8be092688dcabbeb4f2377d +Subproject ba5d6e2c4846c88fb5090ac6b4fceabb720cfab diff --git a/Tests/TestApp/src/Linux/TestAppLinux.cpp b/Tests/TestApp/src/Linux/TestAppLinux.cpp index 9ce02b9..54abfa8 100644 --- a/Tests/TestApp/src/Linux/TestAppLinux.cpp +++ b/Tests/TestApp/src/Linux/TestAppLinux.cpp @@ -41,7 +41,7 @@ public: } #if VULKAN_SUPPORTED - virtual void InitVulkan(xcb_connection_t* connection, uint32_t window)override final + virtual bool InitVulkan(xcb_connection_t* connection, uint32_t window)override final { m_DeviceType = DeviceType::Vulkan; struct XCBInfo @@ -51,6 +51,7 @@ public: }xcbInfo = {connection, window}; InitializeDiligentEngine(nullptr, &xcbInfo); InitializeRenderers(); + return true; } #endif }; diff --git a/unityplugin/UnityEmulator/src/Linux/UnityAppLinux.cpp b/unityplugin/UnityEmulator/src/Linux/UnityAppLinux.cpp index 8176440..83ce859 100644 --- a/unityplugin/UnityEmulator/src/Linux/UnityAppLinux.cpp +++ b/unityplugin/UnityEmulator/src/Linux/UnityAppLinux.cpp @@ -40,9 +40,10 @@ public: InitScene(); } #if VULKAN_SUPPORTED - virtual void InitVulkan(xcb_connection_t* connection, uint32_t window)override final + virtual bool InitVulkan(xcb_connection_t* connection, uint32_t window)override final { UNSUPPORTED("Vulkan is not supported for this application"); + return false; } #endif }; |
