blob: 3033076a4c6bbf708b89aba97bec7a7f454bf492 [file] [log] [blame]
Greg Daniel35970ec2017-11-10 10:03:05 -05001/*
2 * Copyright 2017 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "VkTestUtils.h"
9
10#ifdef SK_VULKAN
11
12#include "../ports/SkOSLibrary.h"
13
14namespace sk_gpu_test {
15
16bool LoadVkLibraryAndGetProcAddrFuncs(PFN_vkGetInstanceProcAddr* instProc,
17 PFN_vkGetDeviceProcAddr* devProc) {
18 static void* vkLib = nullptr;
19 static PFN_vkGetInstanceProcAddr localInstProc = nullptr;
20 static PFN_vkGetDeviceProcAddr localDevProc = nullptr;
21 if (!vkLib) {
22#if defined _WIN32
23 vkLib = DynamicLoadLibrary("vulkan-1.dll");
24#else
25 vkLib = DynamicLoadLibrary("libvulkan.so");
26#endif
27 if (!vkLib) {
28 return false;
29 }
30 localInstProc = (PFN_vkGetInstanceProcAddr) GetProcedureAddress(vkLib,
31 "vkGetInstanceProcAddr");
32 localDevProc = (PFN_vkGetDeviceProcAddr) GetProcedureAddress(vkLib,
33 "vkGetDeviceProcAddr");
34 }
35 if (!localInstProc || !localDevProc) {
36 return false;
37 }
38 *instProc = localInstProc;
39 *devProc = localDevProc;
40 return true;
41}
42}
43
44#endif