Revert "Dynamically load the vulkan library in our test tools"

This reverts commit 77d6feaa69d95c42f4e77195e92de33917995544.

Reason for revert: breaking google 3

Original change's description:
> Dynamically load the vulkan library in our test tools
> 
> Bug: skia:
> Change-Id: I7c1f6cbb2b50ca284f40cf4b9ef49a76083b38c6
> Reviewed-on: https://skia-review.googlesource.com/68643
> Reviewed-by: Chris Dalton <csmartdalton@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>

TBR=egdaniel@google.com,csmartdalton@google.com

Change-Id: I6b2588e71f1876868fcf8f2b3c91a96e7c689045
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/69780
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index 742f095..e0c45fe 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -170,6 +170,18 @@
   }
   libs = []
   lib_dirs = []
+  if (skia_use_vulkan) {
+    if (skia_vulkan_sdk != "" && !is_android && !is_fuchsia) {
+      if (is_win) {
+        lib_dirs += [
+          "$skia_vulkan_sdk/Bin",
+          "$skia_vulkan_sdk/Lib",
+        ]
+      } else {
+        lib_dirs += [ "$skia_vulkan_sdk/lib/" ]
+      }
+    }
+  }
   if (skia_enable_gpu) {
     include_dirs += [ "src/gpu" ]
   }
@@ -1034,7 +1046,11 @@
       }
       if (skia_use_vulkan) {
         sources += [ "tools/gpu/vk/VkTestContext.cpp" ]
-        sources += [ "tools/gpu/vk/VkTestUtils.cpp" ]
+        if (is_win) {
+          libs += [ "vulkan-1.lib" ]
+        } else {
+          libs += [ "vulkan" ]
+        }
       }
       if (skia_use_metal) {
         sources += [ "tools/gpu/mtl/MtlTestContext.mm" ]
diff --git a/tools/gpu/vk/VkTestContext.cpp b/tools/gpu/vk/VkTestContext.cpp
index daaa55b..e329583 100644
--- a/tools/gpu/vk/VkTestContext.cpp
+++ b/tools/gpu/vk/VkTestContext.cpp
@@ -10,9 +10,9 @@
 #ifdef SK_VULKAN
 
 #include "GrContext.h"
-#include "VkTestUtils.h"
 #include "vk/GrVkInterface.h"
 #include "vk/GrVkUtil.h"
+#include <vulkan/vulkan.h>
 
 namespace {
 /**
@@ -114,12 +114,8 @@
         if (sharedContext) {
             backendContext = sharedContext->getVkBackendContext();
         } else {
-            PFN_vkGetInstanceProcAddr instProc;
-            PFN_vkGetDeviceProcAddr devProc;
-            if (!sk_gpu_test::LoadVkLibraryAndGetProcAddrFuncs(&instProc, &devProc)) {
-                return nullptr;
-            }
-            backendContext.reset(GrVkBackendContext::Create(instProc, devProc));
+            backendContext.reset(GrVkBackendContext::Create(vkGetInstanceProcAddr,
+                                                            vkGetDeviceProcAddr));
         }
         if (!backendContext) {
             return nullptr;
diff --git a/tools/gpu/vk/VkTestUtils.cpp b/tools/gpu/vk/VkTestUtils.cpp
deleted file mode 100644
index 62fd312..0000000
--- a/tools/gpu/vk/VkTestUtils.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2017 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "VkTestUtils.h"
-
-#include "../ports/SkOSLibrary.h"
-
-namespace sk_gpu_test {
-
-bool LoadVkLibraryAndGetProcAddrFuncs(PFN_vkGetInstanceProcAddr* instProc,
-                                                   PFN_vkGetDeviceProcAddr* devProc) {
-    static void* vkLib = nullptr;
-    static PFN_vkGetInstanceProcAddr localInstProc = nullptr;
-    static PFN_vkGetDeviceProcAddr localDevProc = nullptr;
-    if (!vkLib) {
-#if defined _WIN32
-        vkLib = DynamicLoadLibrary("vulkan-1.dll");
-#else
-        vkLib = DynamicLoadLibrary("libvulkan.so");
-#endif
-        if (!vkLib) {
-            return false;
-        }
-        localInstProc = (PFN_vkGetInstanceProcAddr) GetProcedureAddress(vkLib,
-                                                                        "vkGetInstanceProcAddr");
-        localDevProc = (PFN_vkGetDeviceProcAddr) GetProcedureAddress(vkLib,
-                                                                     "vkGetDeviceProcAddr");
-    }
-    if (!localInstProc || !localDevProc) {
-        return false;
-    }
-    *instProc = localInstProc;
-    *devProc = localDevProc;
-    return true;
-}
-}
diff --git a/tools/gpu/vk/VkTestUtils.h b/tools/gpu/vk/VkTestUtils.h
deleted file mode 100644
index 43e9dfd..0000000
--- a/tools/gpu/vk/VkTestUtils.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2017 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef VkTestUtils_DEFINED
-#define VkTestUtils_DEFINED
-
-#ifdef SK_VULKAN
-
-#include "vk/GrVkDefines.h"
-
-namespace sk_gpu_test {
-    bool LoadVkLibraryAndGetProcAddrFuncs(PFN_vkGetInstanceProcAddr*, PFN_vkGetDeviceProcAddr*);
-}
-
-#endif
-#endif
-
diff --git a/tools/viewer/sk_app/VulkanWindowContext.cpp b/tools/viewer/sk_app/VulkanWindowContext.cpp
index 5e0f124..a9124d5 100644
--- a/tools/viewer/sk_app/VulkanWindowContext.cpp
+++ b/tools/viewer/sk_app/VulkanWindowContext.cpp
@@ -22,16 +22,14 @@
 #undef CreateSemaphore
 #endif
 
-#define GET_PROC(F) f ## F = (PFN_vk ## F) fGetInstanceProcAddr(instance, "vk" #F)
-#define GET_DEV_PROC(F) f ## F = (PFN_vk ## F) fGetDeviceProcAddr(device, "vk" #F)
+#define GET_PROC(F) f ## F = (PFN_vk ## F) vkGetInstanceProcAddr(instance, "vk" #F)
+#define GET_DEV_PROC(F) f ## F = (PFN_vk ## F) vkGetDeviceProcAddr(device, "vk" #F)
 
 namespace sk_app {
 
 VulkanWindowContext::VulkanWindowContext(const DisplayParams& params,
                                          CreateVkSurfaceFn createVkSurface,
-                                         CanPresentFn canPresent,
-                                         PFN_vkGetInstanceProcAddr instProc,
-                                         PFN_vkGetDeviceProcAddr devProc)
+                                         CanPresentFn canPresent)
     : WindowContext(params)
     , fCreateVkSurfaceFn(createVkSurface)
     , fCanPresentFn(canPresent)
@@ -42,14 +40,12 @@
     , fSurfaces(nullptr)
     , fCommandPool(VK_NULL_HANDLE)
     , fBackbuffers(nullptr) {
-    fGetInstanceProcAddr = instProc;
-    fGetDeviceProcAddr = devProc;
     this->initializeContext();
 }
 
 void VulkanWindowContext::initializeContext() {
     // any config code here (particularly for msaa)?
-    fBackendContext.reset(GrVkBackendContext::Create(fGetInstanceProcAddr, fGetDeviceProcAddr,
+    fBackendContext.reset(GrVkBackendContext::Create(vkGetInstanceProcAddr, vkGetDeviceProcAddr,
                                                      &fPresentQueueIndex, fCanPresentFn));
 
     if (!(fBackendContext->fExtensions & kKHR_surface_GrVkExtensionFlag) ||
@@ -70,7 +66,6 @@
     GET_DEV_PROC(GetSwapchainImagesKHR);
     GET_DEV_PROC(AcquireNextImageKHR);
     GET_DEV_PROC(QueuePresentKHR);
-    GET_DEV_PROC(GetDeviceQueue);
 
     fContext = GrContext::MakeVulkan(fBackendContext.get(), fDisplayParams.fGrContextOptions);
 
@@ -95,7 +90,7 @@
     }
 
     // create presentQueue
-    fGetDeviceQueue(fBackendContext->fDevice, fPresentQueueIndex, 0, &fPresentQueue);
+    vkGetDeviceQueue(fBackendContext->fDevice, fPresentQueueIndex, 0, &fPresentQueue);
 }
 
 bool VulkanWindowContext::createSwapchain(int width, int height,
diff --git a/tools/viewer/sk_app/VulkanWindowContext.h b/tools/viewer/sk_app/VulkanWindowContext.h
index d02b114..81e5f3d 100644
--- a/tools/viewer/sk_app/VulkanWindowContext.h
+++ b/tools/viewer/sk_app/VulkanWindowContext.h
@@ -47,8 +47,7 @@
     /** Platform specific function that determines whether presentation will succeed. */
     using CanPresentFn = GrVkBackendContext::CanPresentFn;
 
-    VulkanWindowContext(const DisplayParams&, CreateVkSurfaceFn, CanPresentFn,
-                        PFN_vkGetInstanceProcAddr, PFN_vkGetDeviceProcAddr);
+    VulkanWindowContext(const DisplayParams&, CreateVkSurfaceFn, CanPresentFn);
 
 private:
     void initializeContext();
@@ -83,10 +82,6 @@
     CreateVkSurfaceFn fCreateVkSurfaceFn;
     CanPresentFn      fCanPresentFn;
 
-    // Vulkan GetProcAddr functions
-    VkPtr<PFN_vkGetInstanceProcAddr> fGetInstanceProcAddr;
-    VkPtr<PFN_vkGetDeviceProcAddr> fGetDeviceProcAddr;
-
     // WSI interface functions
     VkPtr<PFN_vkDestroySurfaceKHR> fDestroySurfaceKHR;
     VkPtr<PFN_vkGetPhysicalDeviceSurfaceSupportKHR> fGetPhysicalDeviceSurfaceSupportKHR;
@@ -99,7 +94,7 @@
     VkPtr<PFN_vkGetSwapchainImagesKHR> fGetSwapchainImagesKHR;
     VkPtr<PFN_vkAcquireNextImageKHR> fAcquireNextImageKHR;
     VkPtr<PFN_vkQueuePresentKHR> fQueuePresentKHR;
-    VkPtr<PFN_vkGetDeviceQueue> fGetDeviceQueue;
+    VkPtr<PFN_vkCreateSharedSwapchainsKHR> fCreateSharedSwapchainsKHR;
 
     VkSurfaceKHR      fSurface;
     VkSwapchainKHR    fSwapchain;
diff --git a/tools/viewer/sk_app/android/VulkanWindowContext_android.cpp b/tools/viewer/sk_app/android/VulkanWindowContext_android.cpp
index a7d8aa7..b50e152 100644
--- a/tools/viewer/sk_app/android/VulkanWindowContext_android.cpp
+++ b/tools/viewer/sk_app/android/VulkanWindowContext_android.cpp
@@ -9,22 +9,15 @@
 #include "WindowContextFactory_android.h"
 #include "../VulkanWindowContext.h"
 
-#include "vk/VkTestUtils.h"
-
 namespace sk_app {
 
 namespace window_context_factory {
 
 WindowContext* NewVulkanForAndroid(ANativeWindow* window, const DisplayParams& params) {
-    PFN_vkGetInstanceProcAddr instProc;
-    PFN_vkGetDeviceProcAddr devProc;
-    if (!sk_gpu_test::LoadVkLibraryAndGetProcAddrFuncs(&instProc, &devProc)) {
-        return nullptr;
-    }
-
-    auto createVkSurface = [window, instProc] (VkInstance instance) -> VkSurfaceKHR {
+    auto createVkSurface = [window] (VkInstance instance) -> VkSurfaceKHR {
         PFN_vkCreateAndroidSurfaceKHR createAndroidSurfaceKHR =
-                (PFN_vkCreateAndroidSurfaceKHR) instProc(instance, "vkCreateAndroidSurfaceKHR");
+                (PFN_vkCreateAndroidSurfaceKHR)vkGetInstanceProcAddr(instance,
+                                                                     "vkCreateAndroidSurfaceKHR");
 
         if (!window) {
             return VK_NULL_HANDLE;
@@ -45,8 +38,7 @@
 
     auto canPresent = [](VkInstance, VkPhysicalDevice, uint32_t) { return true; };
 
-    WindowContext* ctx = new VulkanWindowContext(params, createVkSurface, canPresent,
-                                                 instProc, devProc);
+    WindowContext* ctx = new VulkanWindowContext(params, createVkSurface, canPresent);
     if (!ctx->isValid()) {
         delete ctx;
         return nullptr;
diff --git a/tools/viewer/sk_app/unix/VulkanWindowContext_unix.cpp b/tools/viewer/sk_app/unix/VulkanWindowContext_unix.cpp
index b2f1ffc..b94e8ed 100644
--- a/tools/viewer/sk_app/unix/VulkanWindowContext_unix.cpp
+++ b/tools/viewer/sk_app/unix/VulkanWindowContext_unix.cpp
@@ -10,8 +10,6 @@
 #include "vk/GrVkInterface.h"
 #include "vk/GrVkUtil.h"
 
-#include "vk/VkTestUtils.h"
-
 #include <X11/Xlib-xcb.h>
 
 #include "WindowContextFactory_unix.h"
@@ -22,17 +20,12 @@
 namespace window_context_factory {
 
 WindowContext* NewVulkanForXlib(const XlibWindowInfo& info, const DisplayParams& displayParams) {
-    PFN_vkGetInstanceProcAddr instProc;
-    PFN_vkGetDeviceProcAddr devProc;
-    if (!sk_gpu_test::LoadVkLibraryAndGetProcAddrFuncs(&instProc, &devProc)) {
-        return nullptr;
-    }
-
-    auto createVkSurface = [&info, instProc](VkInstance instance) -> VkSurfaceKHR {
+    auto createVkSurface = [&info](VkInstance instance) -> VkSurfaceKHR {
         static PFN_vkCreateXcbSurfaceKHR createXcbSurfaceKHR = nullptr;
         if (!createXcbSurfaceKHR) {
             createXcbSurfaceKHR =
-                    (PFN_vkCreateXcbSurfaceKHR) instProc(instance, "vkCreateXcbSurfaceKHR");
+                    (PFN_vkCreateXcbSurfaceKHR) vkGetInstanceProcAddr(instance,
+                                                                      "vkCreateXcbSurfaceKHR");
         }
 
         VkSurfaceKHR surface;
@@ -53,14 +46,15 @@
         return surface;
     };
 
-    auto canPresent = [&info, instProc](VkInstance instance, VkPhysicalDevice physDev,
+    auto canPresent = [&info](VkInstance instance, VkPhysicalDevice physDev,
                               uint32_t queueFamilyIndex) {
         static PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR
                                                 getPhysicalDeviceXcbPresentationSupportKHR = nullptr;
         if (!getPhysicalDeviceXcbPresentationSupportKHR) {
             getPhysicalDeviceXcbPresentationSupportKHR =
                 (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)
-                    instProc(instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR");
+                        vkGetInstanceProcAddr(instance,
+                                              "vkGetPhysicalDeviceXcbPresentationSupportKHR");
         }
 
 
@@ -72,8 +66,7 @@
                                                                     visualID);
         return (VK_FALSE != check);
     };
-    WindowContext* context = new VulkanWindowContext(displayParams, createVkSurface, canPresent,
-                                                     instProc, devProc);
+    WindowContext* context = new VulkanWindowContext(displayParams, createVkSurface, canPresent);
     if (!context->isValid()) {
         delete context;
         return nullptr;
diff --git a/tools/viewer/sk_app/win/VulkanWindowContext_win.cpp b/tools/viewer/sk_app/win/VulkanWindowContext_win.cpp
index 16c527c..dbb59c1 100644
--- a/tools/viewer/sk_app/win/VulkanWindowContext_win.cpp
+++ b/tools/viewer/sk_app/win/VulkanWindowContext_win.cpp
@@ -15,23 +15,15 @@
 #include "vk/GrVkInterface.h"
 #include "vk/GrVkUtil.h"
 
-#include "vk/VkTestUtils.h"
-
 namespace sk_app {
 namespace window_context_factory {
 
 WindowContext* NewVulkanForWin(HWND hwnd, const DisplayParams& params) {
-    PFN_vkGetInstanceProcAddr instProc;
-    PFN_vkGetDeviceProcAddr devProc;
-    if (!sk_gpu_test::LoadVkLibraryAndGetProcAddrFuncs(&instProc, &devProc)) {
-        return nullptr;
-    }
-
-    auto createVkSurface = [hwnd, instProc] (VkInstance instance) -> VkSurfaceKHR {
+    auto createVkSurface = [hwnd] (VkInstance instance) -> VkSurfaceKHR {
         static PFN_vkCreateWin32SurfaceKHR createWin32SurfaceKHR = nullptr;
         if (!createWin32SurfaceKHR) {
             createWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR)
-                instProc(instance, "vkCreateWin32SurfaceKHR");
+                vkGetInstanceProcAddr(instance, "vkCreateWin32SurfaceKHR");
         }
         HINSTANCE hinstance = GetModuleHandle(0);
         VkSurfaceKHR surface;
@@ -52,22 +44,22 @@
         return surface;
     };
 
-    auto canPresent = [instProc] (VkInstance instance, VkPhysicalDevice physDev,
-                                  uint32_t queueFamilyIndex) {
+    auto canPresent = [] (VkInstance instance, VkPhysicalDevice physDev,
+                          uint32_t queueFamilyIndex) {
         static PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR
                                             getPhysicalDeviceWin32PresentationSupportKHR = nullptr;
         if (!getPhysicalDeviceWin32PresentationSupportKHR) {
             getPhysicalDeviceWin32PresentationSupportKHR =
                 (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)
-                    instProc(instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR");
+                    vkGetInstanceProcAddr(instance,
+                                          "vkGetPhysicalDeviceWin32PresentationSupportKHR");
         }
 
         VkBool32 check = getPhysicalDeviceWin32PresentationSupportKHR(physDev, queueFamilyIndex);
         return (VK_FALSE != check);
     };
 
-    WindowContext* ctx = new VulkanWindowContext(params, createVkSurface, canPresent,
-                                                 instProc, devProc);
+    WindowContext* ctx = new VulkanWindowContext(params, createVkSurface, canPresent);
     if (!ctx->isValid()) {
         delete ctx;
         return nullptr;