Add support for Linux GPU info with Vulkan backend

1. Add support for Linux GPU info with vulkan backend: for
dev board without PCI support, try vulkan backend to get
GPU info.
2. Fix getVulkanInstance() issue when loading non-exist lib:
return NULL instance if open lib failed.

Bug: angleproject:5717
Change-Id: I03c11da25a8787496d098f6c9d6b4c53701383e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2734375
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/gpu_info_util/SystemInfo_linux.cpp b/src/gpu_info_util/SystemInfo_linux.cpp
index 8bb7f3f..d9b42bc 100644
--- a/src/gpu_info_util/SystemInfo_linux.cpp
+++ b/src/gpu_info_util/SystemInfo_linux.cpp
@@ -73,7 +73,8 @@
 {
     if (!GetPCIDevicesWithLibPCI(&(info->gpus)))
     {
-        return false;
+        // Try vulkan backend to get GPU info
+        return GetSystemInfoVulkan(info);
     }
 
     if (info->gpus.size() == 0)
diff --git a/src/gpu_info_util/SystemInfo_vulkan.cpp b/src/gpu_info_util/SystemInfo_vulkan.cpp
index aad211b..4a4a448 100644
--- a/src/gpu_info_util/SystemInfo_vulkan.cpp
+++ b/src/gpu_info_util/SystemInfo_vulkan.cpp
@@ -49,7 +49,16 @@
         {
             mLibVulkan = OpenSharedLibraryWithExtension(libraryName);
             if (mLibVulkan)
-                break;
+            {
+                if (mLibVulkan->getNative())
+                {
+                    break;
+                }
+                else
+                {
+                    SafeDelete(mLibVulkan);
+                }
+            }
         }
 
         if (!mLibVulkan)