From 68de1b5041fd8ab4fca21651f78b81e4b060c787 Mon Sep 17 00:00:00 2001 From: Jack Andersen Date: Thu, 11 Jan 2018 16:29:30 -1000 Subject: [PATCH] Add gfxApi argument for X11; Win32 gfxApi logic fix --- lib/win/ApplicationWin32.cpp | 18 +++++++++++++++++- lib/x11/ApplicationUnix.cpp | 4 ++-- lib/x11/ApplicationWayland.hpp | 1 + lib/x11/ApplicationXlib.hpp | 3 +++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/win/ApplicationWin32.cpp b/lib/win/ApplicationWin32.cpp index 4a68759..bc5fd81 100644 --- a/lib/win/ApplicationWin32.cpp +++ b/lib/win/ApplicationWin32.cpp @@ -131,7 +131,7 @@ public: bool yes12 = false; bool noD3d = false; #if BOO_HAS_VULKAN - bool useVulkan = true; + bool useVulkan = false; #endif if (!gfxApi.empty()) { @@ -144,6 +144,7 @@ public: if (!gfxApi.compare("Vulkan")) { noD3d = true; + useVulkan = true; } if (!gfxApi.compare("OpenGL")) { @@ -164,6 +165,13 @@ public: { useVulkan = false; yes12 = true; + noD3d = false; + } + if (!arg.compare(L"--d3d11")) + { + useVulkan = false; + yes12 = false; + noD3d = false; } if (!arg.compare(L"--vulkan")) { @@ -176,7 +184,15 @@ public: } #else if (!arg.compare(L"--d3d12")) + { yes12 = true; + noD3d = false; + } + if (!arg.compare(L"--d3d11")) + { + yes12 = false; + noD3d = false; + } if (!arg.compare(L"--gl")) noD3d = true; #endif diff --git a/lib/x11/ApplicationUnix.cpp b/lib/x11/ApplicationUnix.cpp index 278ff1d..8d7008a 100644 --- a/lib/x11/ApplicationUnix.cpp +++ b/lib/x11/ApplicationUnix.cpp @@ -68,10 +68,10 @@ int ApplicationRun(IApplication::EPlatformType platform, if (APP) return 1; if (platform == IApplication::EPlatformType::Wayland) - APP = new ApplicationWayland(cb, uniqueName, friendlyName, pname, args, samples, anisotropy, singleInstance); + APP = new ApplicationWayland(cb, uniqueName, friendlyName, pname, args, gfxApi, samples, anisotropy, singleInstance); else if (platform == IApplication::EPlatformType::Xlib || platform == IApplication::EPlatformType::Auto) - APP = new ApplicationXlib(cb, uniqueName, friendlyName, pname, args, samples, anisotropy, singleInstance); + APP = new ApplicationXlib(cb, uniqueName, friendlyName, pname, args, gfxApi, samples, anisotropy, singleInstance); else return 1; return APP->run(); diff --git a/lib/x11/ApplicationWayland.hpp b/lib/x11/ApplicationWayland.hpp index 281d607..9470801 100644 --- a/lib/x11/ApplicationWayland.hpp +++ b/lib/x11/ApplicationWayland.hpp @@ -32,6 +32,7 @@ public: std::string_view friendlyName, std::string_view pname, const std::vector& args, + std::string_view gfxApi, uint32_t samples, uint32_t anisotropy, bool singleInstance) diff --git a/lib/x11/ApplicationXlib.hpp b/lib/x11/ApplicationXlib.hpp index b5d95e2..9f1ec23 100644 --- a/lib/x11/ApplicationXlib.hpp +++ b/lib/x11/ApplicationXlib.hpp @@ -225,6 +225,7 @@ public: std::string_view friendlyName, std::string_view pname, const std::vector& args, + std::string_view gfxApi, uint32_t samples, uint32_t anisotropy, bool singleInstance) @@ -240,6 +241,8 @@ public: #if BOO_HAS_VULKAN /* Check for Vulkan presence and preference */ bool tryVulkan = true; + if (!gfxApi.compare("OpenGL")) + tryVulkan = false; for (const std::string& arg : args) { if (!arg.compare("--gl"))