| /* |
| * 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; |
| } |
| } |