Initialize Vulkan 1.1 only when it's available.

VulkanInstance was always initializing Vulkan 1.1, but it's not
supported on all target platforms. Update it to detect supported Vulkan
version dynamically and initialize 1.1 only if it's available, falling
back to 1.0 otherwise.

Also updated VulkanImplementation interface to provide access to
VulkanInstance class instead of just VkInstance - this makes it possible
for consumers to discover which API version was initialized.

[email protected] (for ui/ozone/platform/drm)

Bug: 925586
Change-Id: I30a54eb303c7eb0106a139a2171f8f4c5e4f2cfe
Reviewed-on: https://chromium-review.googlesource.com/c/1437953
Commit-Queue: Sergey Ulanov <[email protected]>
Reviewed-by: Robert Kroeger <[email protected]>
Reviewed-by: Antoine Labour <[email protected]>
Cr-Commit-Position: refs/heads/master@{#626700}
diff --git a/gpu/vulkan/vulkan_implementation.cc b/gpu/vulkan/vulkan_implementation.cc
index c0a54c9..b4655d1 100644
--- a/gpu/vulkan/vulkan_implementation.cc
+++ b/gpu/vulkan/vulkan_implementation.cc
@@ -6,6 +6,7 @@
 
 #include "base/bind.h"
 #include "gpu/vulkan/vulkan_device_queue.h"
+#include "gpu/vulkan/vulkan_instance.h"
 
 namespace gpu {
 
@@ -17,7 +18,7 @@
     VulkanImplementation* vulkan_implementation,
     uint32_t option) {
   auto device_queue = std::make_unique<VulkanDeviceQueue>(
-      vulkan_implementation->GetVulkanInstance());
+      vulkan_implementation->GetVulkanInstance()->vk_instance());
   auto callback = base::BindRepeating(
       &VulkanImplementation::GetPhysicalDevicePresentationSupport,
       base::Unretained(vulkan_implementation));