Refactor Vulkan support to support Fuchsia

- Refactor runtime lookup of Vulkan functions
- Support Magma surfaces
- Add build flags to toggle Vulkan support

BUG=skia:

Change-Id: Ic71965c453507882521443006c4155c7481a9a3f
Reviewed-on: https://skia-review.googlesource.com/9342
Commit-Queue: Greg Daniel <egdaniel@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Michael Jurka <mikejurka@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
diff --git a/BUILD.gn b/BUILD.gn
index 1801c32..8bbd12a 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -37,6 +37,7 @@
   skia_enable_tools = is_skia_dev_build
   skia_enable_vulkan_debug_layers = is_skia_dev_build && is_debug
   skia_vulkan_sdk = getenv("VULKAN_SDK")
+  skia_link_with_vulkan = true
 }
 declare_args() {
   skia_use_dng_sdk = !is_fuchsia && skia_use_libjpeg_turbo && skia_use_zlib
@@ -47,6 +48,11 @@
   } else {
     skia_use_vulkan = skia_vulkan_sdk != ""
   }
+  if (is_win) {
+    skia_vulkan_headers_path = "$skia_vulkan_sdk/Include"
+  } else {
+    skia_vulkan_headers_path = "$skia_vulkan_sdk/include"
+  }
 }
 
 # Our tools require static linking (they use non-exported symbols).
@@ -133,22 +139,26 @@
   libs = []
   lib_dirs = []
   if (skia_use_vulkan) {
+    include_dirs += [ skia_vulkan_headers_path ]
+
     if (skia_vulkan_sdk != "" && !is_android) {
       if (is_win) {
-        include_dirs += [ "$skia_vulkan_sdk/Include/" ]
         lib_dirs += [
           "$skia_vulkan_sdk/Bin",
           "$skia_vulkan_sdk/Lib",
         ]
       } else {
-        include_dirs += [ "$skia_vulkan_sdk/include/" ]
         lib_dirs += [ "$skia_vulkan_sdk/lib/" ]
       }
     }
-    if (is_win) {
-      libs += [ "vulkan-1.lib" ]
-    } else {
-      libs += [ "vulkan" ]
+
+    if (skia_link_with_vulkan) {
+      defines += [ "SK_LINK_WITH_VULKAN" ]
+      if (is_win) {
+        libs += [ "vulkan-1.lib" ]
+      } else {
+        libs += [ "vulkan" ]
+      }
     }
   }
   if (skia_enable_gpu) {