Support Windows builds and ANGLE integration.
This CL enables the Windows build integration with ANGLE. Several
instances of "build_with_chromium" in the GN are changed to use
build_overrides instead. Also in several places in the GN support
is added for Windows builds.
Also Add guards for WIN32_LEAN_AND_MEAN, and removes an unused
variable that shows up when building with GN on Windows configs.
Bug: angleproject:3876
Bug: b/140251624
Change-Id: I7a470c7605c2b62420dca44e4797c29983ed7c13
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/35631
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Jamie Madill <jmadill@chromium.org>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Vulkan/BUILD.gn b/src/Vulkan/BUILD.gn
index a52828b..53729f3 100644
--- a/src/Vulkan/BUILD.gn
+++ b/src/Vulkan/BUILD.gn
@@ -27,6 +27,11 @@
"VK_USE_PLATFORM_FUCHSIA=1",
"VK_EXPORT=__attribute__((visibility(\"default\")))",
]
+ } else if (is_win) {
+ defines = [
+ "VK_USE_PLATFORM_WIN32_KHR=1",
+ "VK_EXPORT=",
+ ]
} else {
defines = [ "VK_EXPORT=" ]
}
@@ -134,19 +139,13 @@
"../System",
"../WSI",
"../Yarn",
+ "$swiftshader_spirv_tools_dir:SPIRV-Tools",
]
include_dirs = [
"..",
"../../include",
- "../../third_party/SPIRV-Headers/include",
+ "$swiftshader_spirv_tools_dir/include",
+ "$spirv_tools_spirv_headers_dir/include",
]
-
- if (build_with_chromium) {
- deps += [ "//third_party/SPIRV-Tools/src:SPIRV-Tools" ]
- include_dirs += [ "//third_party/SPIRV-Tools/src/include" ]
- } else {
- deps += [ "../../third_party/SPIRV-Tools" ]
- include_dirs += [ "../../third_party/SPIRV-Tools/include" ]
- }
}
diff --git a/src/Vulkan/libvk_swiftshader.def b/src/Vulkan/libvk_swiftshader.def
index f0de6a5..32109ab 100644
--- a/src/Vulkan/libvk_swiftshader.def
+++ b/src/Vulkan/libvk_swiftshader.def
@@ -215,4 +215,4 @@
vkGetPhysicalDeviceSurfaceFormatsKHR
vkGetPhysicalDeviceSurfacePresentModesKHR
; VK_KHR_win32_surface
- vkCreateWin32SurfaceKHR
\ No newline at end of file
+ vkCreateWin32SurfaceKHR
diff --git a/src/Vulkan/vk_swiftshader_icd.json b/src/Vulkan/vk_swiftshader_icd.json
index 0a76e0b..47c23ac 100644
--- a/src/Vulkan/vk_swiftshader_icd.json
+++ b/src/Vulkan/vk_swiftshader_icd.json
@@ -1,7 +1,7 @@
{
"file_format_version": "1.0.0",
"ICD": {
- "library_path": "..\\..\\bin\\vulkan\\x64\\Debug\\vk_swiftshader.dll",
+ "library_path": "..\\..\\bin\\vulkan\\x64\\Debug\\libvk_swiftshader.dll",
"api_version": "1.0.5"
}
}
\ No newline at end of file
diff --git a/src/WSI/BUILD.gn b/src/WSI/BUILD.gn
index 2314d4b..c111be1 100644
--- a/src/WSI/BUILD.gn
+++ b/src/WSI/BUILD.gn
@@ -31,6 +31,13 @@
]
}
+ if (is_win) {
+ sources += [
+ "Win32SurfaceKHR.cpp",
+ "Win32SurfaceKHR.hpp",
+ ]
+ }
+
include_dirs = [
"..",
"../../include",
diff --git a/src/WSI/Win32SurfaceKHR.cpp b/src/WSI/Win32SurfaceKHR.cpp
index 81073e9..f9a8c24 100644
--- a/src/WSI/Win32SurfaceKHR.cpp
+++ b/src/WSI/Win32SurfaceKHR.cpp
@@ -17,14 +17,11 @@
#include "Vulkan/VkDeviceMemory.hpp"
#include "Vulkan/VkDebug.hpp"
-#define WIN32_LEAN_AND_MEAN
-#include <Windows.h>
#include <string.h>
namespace vk {
Win32SurfaceKHR::Win32SurfaceKHR(const VkWin32SurfaceCreateInfoKHR *pCreateInfo, void *mem) :
- hinstance(pCreateInfo->hinstance),
hwnd(pCreateInfo->hwnd)
{
ASSERT(IsWindow(hwnd) == TRUE);
diff --git a/src/WSI/Win32SurfaceKHR.hpp b/src/WSI/Win32SurfaceKHR.hpp
index 8a28a71..fe7be2c 100644
--- a/src/WSI/Win32SurfaceKHR.hpp
+++ b/src/WSI/Win32SurfaceKHR.hpp
@@ -19,7 +19,9 @@
#include "Vulkan/VkImage.hpp"
#include "VkSurfaceKHR.hpp"
+#if !defined(WIN32_LEAN_AND_MEAN)
#define WIN32_LEAN_AND_MEAN
+#endif // !defined(WIN32_LEAN_AND_MEAN)
#include <Windows.h>
#include "vulkan/vulkan_win32.h"
@@ -42,7 +44,6 @@
void present(PresentImage* image) override;
private:
- const HINSTANCE hinstance;
const HWND hwnd;
HDC windowContext = {};
diff --git a/src/swiftshader.gni b/src/swiftshader.gni
index f4b67fa..7add13c 100644
--- a/src/swiftshader.gni
+++ b/src/swiftshader.gni
@@ -6,8 +6,10 @@
# SwiftShader libraries
import("//build_overrides/build.gni")
+import("//build_overrides/spirv_tools.gni")
+import("//build_overrides/swiftshader.gni")
-if (build_with_chromium) {
+if (!swiftshader_standalone) {
import("//build/config/sanitizers/sanitizers.gni")
} else {
declare_args() {
@@ -31,7 +33,7 @@
configs_to_delete += [ "//build/config/compiler:chromium_code" ]
configs_to_add += [
"//build/config/compiler:no_chromium_code",
- "//third_party/swiftshader:swiftshader_config",
+ "$swiftshader_dir:swiftshader_config",
]
template("swiftshader_source_set") {