diff --git a/BUILD.gn b/BUILD.gn
index 56c78ce..915825e 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -186,5 +186,6 @@
 
   data_deps = [
     "tests/GLESUnitTests:swiftshader_unittests",
+    "tests/VulkanUnitTests:swiftshader_vulkan_unittests",
   ]
 }
diff --git a/src/Reactor/ReactorUnitTests.cpp b/src/Reactor/ReactorUnitTests.cpp
index 29f3793..490433e 100644
--- a/src/Reactor/ReactorUnitTests.cpp
+++ b/src/Reactor/ReactorUnitTests.cpp
@@ -1248,7 +1248,7 @@
 		std::pair<float,        Float>
 	>;
 
-TYPED_TEST_CASE(CToReactorCastTest, CToReactorCastTestTypes);
+TYPED_TEST_SUITE(CToReactorCastTest, CToReactorCastTestTypes);
 
 TYPED_TEST(CToReactorCastTest, Casts)
 {
@@ -1320,7 +1320,7 @@
 		std::pair<float[4],    Float4>
 	>;
 
-TYPED_TEST_CASE(GEPTest, GEPTestTypes);
+TYPED_TEST_SUITE(GEPTest, GEPTestTypes);
 
 TYPED_TEST(GEPTest, PtrOffsets)
 {
diff --git a/tests/VulkanUnitTests/BUILD.gn b/tests/VulkanUnitTests/BUILD.gn
new file mode 100644
index 0000000..f33f59e
--- /dev/null
+++ b/tests/VulkanUnitTests/BUILD.gn
@@ -0,0 +1,51 @@
+# Copyright 2019 The SwiftShader Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//testing/test.gni")
+
+test("swiftshader_vulkan_unittests") {
+  deps = [
+    "//base",
+    "//base/test:test_support",
+    "//testing/gmock",
+    "//testing/gtest",
+    "//third_party/SPIRV-Tools/src:SPIRV-Tools",
+    "//third_party/swiftshader/src/Vulkan:swiftshader_libvulkan",
+  ]
+
+  sources = [
+    "//gpu/swiftshader_tests_main.cc",
+    "Device.cpp",
+    "Driver.cpp",
+    "unittests.cpp",
+  ]
+
+  include_dirs = [
+    "//third_party/SPIRV-Tools/src/include",
+    "../../include", # Khronos headers
+  ]
+
+  if (is_win) {
+    ldflags = [
+      "/DELAYLOAD:libvulkan.dll",
+    ]
+  } else if (is_mac) {
+    ldflags = [
+      "-rpath",
+      "@executable_path/",
+    ]
+  } else {
+    ldflags = [ "-Wl,-rpath=\$ORIGIN/swiftshader" ]
+  }
+}
diff --git a/tests/VulkanUnitTests/Driver.cpp b/tests/VulkanUnitTests/Driver.cpp
index 440ea8e..a2a0a25 100644
--- a/tests/VulkanUnitTests/Driver.cpp
+++ b/tests/VulkanUnitTests/Driver.cpp
@@ -49,15 +49,29 @@
 bool Driver::loadSwiftShader()
 {
 #if OS_WINDOWS
-#    if defined(NDEBUG)
-    return load("./build/Release/libvk_swiftshader.dll");
-#    else
-    return load("./build/Debug/libvk_swiftshader.dll");
-#    endif
+    #if !defined(STANDALONE)
+        // The DLL is delay loaded (see BUILD.gn), so we can load
+        // the correct ones from Chrome's swiftshader subdirectory.
+        HMODULE libvulkan = LoadLibraryA("swiftshader\\libvulkan.dll");
+        EXPECT_NE((HMODULE)NULL, libvulkan);
+        return true;
+    #elif defined(NDEBUG)
+        return load("./build/Release/libvk_swiftshader.dll");
+    #else
+        return load("./build/Debug/libvk_swiftshader.dll");
+    #endif
 #elif OS_MAC
-    return load("./build/Darwin/libvk_swiftshader.dylib");
+    #if defined(STANDALONE)
+        return load("./build/Darwin/libvk_swiftshader.dylib");
+    #else
+        return load("libvulkan.dylib");
+    #endif
 #elif OS_LINUX
-    return load("./build/Linux/libvk_swiftshader.so");
+    #if defined(STANDALONE)
+        return load("./build/Linux/libvk_swiftshader.so");
+    #else
+        return load("libvulkan.so");
+    #endif
 #elif OS_ANDROID
     return load("libvk_swiftshader.so");
 #else
diff --git a/tests/VulkanUnitTests/unittests.cpp b/tests/VulkanUnitTests/unittests.cpp
index 50ab3b4..f7868e4 100644
--- a/tests/VulkanUnitTests/unittests.cpp
+++ b/tests/VulkanUnitTests/unittests.cpp
@@ -374,7 +374,7 @@
     driver.vkDestroyInstance(instance, nullptr);
 }
 
-INSTANTIATE_TEST_CASE_P(ComputeParams, SwiftShaderVulkanBufferToBufferComputeTest, testing::Values(
+INSTANTIATE_TEST_SUITE_P(ComputeParams, SwiftShaderVulkanBufferToBufferComputeTest, testing::Values(
     ComputeParams{512, 1, 1, 1},
     ComputeParams{512, 2, 1, 1},
     ComputeParams{512, 4, 1, 1},
diff --git a/third_party/googletest b/third_party/googletest
index 02a8ca8..8ffb7e5 160000
--- a/third_party/googletest
+++ b/third_party/googletest
@@ -1 +1 @@
-Subproject commit 02a8ca87735601466d8c564344f9be493da84708
+Subproject commit 8ffb7e5c88b20a297a2e786c480556467496463b
