First pass at VulkanViewer

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1848833005

Review URL: https://codereview.chromium.org/1848833005
diff --git a/src/gpu/vk/GrVkUtil.cpp b/src/gpu/vk/GrVkUtil.cpp
index 5ab7966..a6a9d4c 100644
--- a/src/gpu/vk/GrVkUtil.cpp
+++ b/src/gpu/vk/GrVkUtil.cpp
@@ -23,6 +23,9 @@
         case kSRGBA_8888_GrPixelConfig:
             *format = VK_FORMAT_R8G8B8A8_SRGB;
             break;
+        case kSBGRA_8888_GrPixelConfig:
+            *format = VK_FORMAT_B8G8R8A8_SRGB;
+            break;
         case kRGB_565_GrPixelConfig:
             *format = VK_FORMAT_R5G6B5_UNORM_PACK16;
             break;
@@ -30,7 +33,7 @@
             *format = VK_FORMAT_R4G4B4A4_UNORM_PACK16;
             break;
         case kIndex_8_GrPixelConfig:
-            // No current rad support for this config
+            // No current vulkan support for this config
             return false;
         case kAlpha_8_GrPixelConfig:
             *format = VK_FORMAT_R8_UNORM;
@@ -40,7 +43,7 @@
             *format = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK;
             break;
         case kLATC_GrPixelConfig:
-            // No current rad support for this config
+            // No current vulkan support for this config
             return false;
         case kR11_EAC_GrPixelConfig:
             *format = VK_FORMAT_EAC_R11_UNORM_BLOCK;
@@ -63,6 +66,58 @@
     return true;
 }
 
+bool GrVkFormatToPixelConfig(VkFormat format, GrPixelConfig* config) {
+    GrPixelConfig dontCare;
+    if (!config) {
+        config = &dontCare;
+    }
+
+    switch (format) {
+        case VK_FORMAT_R8G8B8A8_UNORM:
+            *config = kRGBA_8888_GrPixelConfig;
+            break;
+        case VK_FORMAT_B8G8R8A8_UNORM:
+            *config = kBGRA_8888_GrPixelConfig;
+            break;
+        case VK_FORMAT_R8G8B8A8_SRGB:
+            *config = kSRGBA_8888_GrPixelConfig;
+            break;
+        case VK_FORMAT_B8G8R8A8_SRGB:
+            *config = kSBGRA_8888_GrPixelConfig;
+            break;
+        case VK_FORMAT_R5G6B5_UNORM_PACK16:
+            *config = kRGB_565_GrPixelConfig;
+            break;
+        case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
+            *config = kRGBA_4444_GrPixelConfig;
+            break;
+        case VK_FORMAT_R8_UNORM:
+            *config = kAlpha_8_GrPixelConfig;
+            break;
+        case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
+            *config = kETC1_GrPixelConfig;
+            break;
+        case VK_FORMAT_EAC_R11_UNORM_BLOCK:
+            *config = kR11_EAC_GrPixelConfig;
+            break;
+        case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
+            *config = kASTC_12x12_GrPixelConfig;
+            break;
+        case VK_FORMAT_R32G32B32A32_SFLOAT:
+            *config = kRGBA_float_GrPixelConfig;
+            break;
+        case VK_FORMAT_R16G16B16A16_SFLOAT:
+            *config = kRGBA_half_GrPixelConfig;
+            break;
+        case VK_FORMAT_R16_SFLOAT:
+            *config = kAlpha_half_GrPixelConfig;
+            break;
+        default:
+            return false;
+    }
+    return true;
+}
+
 bool GrSampleCountToVkSampleCount(uint32_t samples, VkSampleCountFlagBits* vkSamples) {
     switch (samples) {
         case 0: // fall through